Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 5, 2011, 4:14:07 PM (14 years ago)
Author:
kmaurus
Message:

some adaptations and improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.h

    r8301 r8404  
    2727 */
    2828 
    29  /* TODO:   - Sobald Bots im Spiel sind, stürzt das Programm relativ bald ab!!!
    30  */
    31  
    32  
    33  /* REALISIERUNGSIDEEN:
    34    
    35     Mehrere Instanzen:
    36         Im Konstruktor schauen, wer innerhalb der eigenen Grenzen ist und diese in eine Liste geben, die in jeder tick-Funktion
    37         durchgearbeitet wird.
    38         Moeglichkeit bereitstellen, ein Pawn durch ein Portal einer anderen Instanz von SpaceBoundaries zuzuweisen.
    39         Schauen, wie es zu handhaben ist, wenn ein neuer Spieler oder Bot nachtraeglich ins Spiel kommt.
    40  
     29 /* TODO:   - Textmessages und Billboards sollen teils nur bei einem humanPlayer angezeigt werden, nicht bei allen (vgl. Netzwerk-Spiel mit mehreren humanPlayers)
     30                beachte hierzu folgende statische Funktion: 'static unsigned int  Host::getPlayerID()'
     31                (file:///home/kmaurus/orxonox/spaceBoundaries/build/doc/api/html/classorxonox_1_1_host.html#9c1e3b39e3b42e467dfbf42902911ce2)
     32               
     33            - Kommentieren (Betrachte als Beispiel/Vorbild 'libraries/core/WeakPtr.h')
     34           
     35            - Wiki-SpaceBoundaries-Eintrag aktualisieren
    4136 */
    4237
     
    4439#define _SpaceBoundaries_H__
    4540
    46 /* Einige, spezifische include-Statements */
     41
    4742#include "core/CoreIncludes.h"
     43#include "core/WeakPtr.h"
    4844#include "tools/interfaces/Tickable.h"
    4945#include "interfaces/RadarViewable.h"
     
    5652#include <vector>
    5753
     54namespace orxonox
     55{
     56
    5857/**
    59 @brief SpaceBoundaries gives level creators the possibility to bar Pawns from leaving a defined area.
     58@brief SpaceBoundaries gives level creators the possibility to bar Pawns from leaving a defined area (until now this area is a ball).
    6059
    6160       Five attributes can/should be defined in the XML-File:
    62        - 'position' : absolute position of the SpaceBoundaries class. 'warnDistance' and 'maxDistance' refer to this 'position'.
    6361       - 'warnDistance' : If the distance between the pawn of the human player and 'position' is bigger than 'warnDistance', a message is displayed to
    6462                          inform the player that he'll soon be leaving the allowed area.
    6563       - 'maxDistance' : defines the area, where a pawn is allowed to be (radius of a ball).
    6664       - 'showDistance' : If the distance between the pawn and the boundary of the allowed area is smaller than 'showDistance', the boundary is shown.
    67        - 'healthDecrease' : a measure to define how fast the health of a pawn should decrease after leaving the allowed area.
    68                             Empfohlene Werte: 0.1 (langsame Health-Verminderung) bis 5 (sehr schnelle Health-Verminderung)
     65       - 'healthDecrease' : a measure to define how fast the health of a pawn should decrease after leaving the allowed area (unnecessary if 'reactionMode' == 0).
     66                            Recommended values: 0.1 (slow health decrease) to 5 (very fast health decrease)
     67       - 'reactionMode' : Integer-Value. Defines what effect appears if a space ship has crossed the boundaries.
     68                            0: Reflect the space ship (default).
     69                            1: Decrease Health of the space ship after having left the allowed area.
    6970*/
    7071
    71 namespace orxonox
    72 {
    7372    class _OrxonoxExport SpaceBoundaries : public StaticEntity, public Tickable
    7473    {
     
    7978            void checkWhoIsIn(); //!< Update the list 'pawnsIn_'.
    8079           
    81             void positionBillboard(const Vector3 position);
     80            void positionBillboard(const Vector3 position); //!< Display a Billboard at the position 'position'.
    8281            void setBillboardOptions(Billboard *billy);
    83             void removeAllBillboards();
     82            void removeAllBillboards(); //!< Hide all all elements of '*billboard_' and set their attribute 'usedYet' to 0.
    8483           
    8584            void setMaxDistance(float r);
     
    9493            void setHealthDecrease(float amount);
    9594            float getHealthDecrease();
     95           
     96            void setReaction(int mode);
     97            int getReaction();
    9698
    9799            void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     
    102104            struct billboardAdministration{ bool usedYet; Billboard* billy; };
    103105           
    104             std::list<Pawn*> pawnsIn_; //!< List of the pawns that this instance of SpaceBoundaries has to handle.
     106            std::list<WeakPtr<Pawn> > pawnsIn_; //!< List of the pawns that this instance of SpaceBoundaries has to handle.
    105107           
    106108            std::vector<billboardAdministration> billboards_;
    107109       
     110            int reaction_; //!< Werte: 0, 1. 0: Reflektion an Boundaries (Standard). 1: Health-Abzug-Modus.
    108111            float maxDistance_; //!< maximal zulaessige Entfernung von 'this->getPosition()'.
    109112            float warnDistance_; //!< Entfernung von 'this->getPosition()', ab der eine Warnung angezeigt wird, dass man bald das zulaessige Areal verlaesst.
     
    113116                                   //!< Empfohlene Werte: 0.1 (langsame Health-Verminderung) bis 5 (sehr schnelle Health-Verminderung)
    114117           
    115             Billboard *boundary_;
    116            
    117118            RadarViewable* centerRadar_; //!< Repraesentation von SpaceBoundaries auf dem Radar.
    118119       
     
    120121            void displayWarning(const std::string warnText);
    121122            void displayBoundaries(Pawn *item);
    122             void bounceBack(Pawn *item);
     123            void conditionalBounceBack(Pawn *item, float currentDistance, float dt);
    123124            bool isHumanPlayer(Pawn *item);
    124125           
Note: See TracChangeset for help on using the changeset viewer.