Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7338 in orxonox.OLD for trunk


Ignore:
Timestamp:
Apr 19, 2006, 1:25:07 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: some Playable-stuff

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/story_entities/game_world.cc

    r7330 r7338  
    280280
    281281
     282void GameWorld::setPlaymode(Playable::Playmode playmode)
     283{
     284  if (this->dataTank->localPlayer &&
     285      this->dataTank->localPlayer->getPlayable() &&
     286      this->dataTank->localPlayer->getPlayable()->setPlayMode(playmode))
     287  {
     288    PRINTF(3)("Set Playmode to %d\n", playmode);
     289  }
     290}
     291
     292
    282293/**
    283294 *  synchronize local data with remote data
  • trunk/src/story_entities/game_world.h

    r7304 r7338  
    1010#include "story_entity.h"
    1111#include "game_world_data.h"
     12#include "playable.h"
    1213
    1314class Shell;
     
    4546    virtual void run();
    4647
     48    void setPlaymode(Playable::Playmode playmode);
    4749    /**  this returns the current game time @returns elapsed game time     */
    4850    inline double getGameTime() { return this->gameTime; }
  • trunk/src/world_entities/playable.cc

    r7337 r7338  
    3939
    4040Playable::Playable()
    41   : weaponMan(this)
     41    : weaponMan(this),
     42    supportedPlaymodes(Playable::Full3D),
     43    playmode(Playable::Full3D)
    4244{
    4345  this->setClassID(CL_PLAYABLE, "Playable");
     
    9092  this->weaponMan.removeWeapon(weapon);
    9193
    92     this->weaponConfigChanged();
     94  this->weaponConfigChanged();
    9395}
    9496
     
    9799{
    98100  this->weaponMan.nextWeaponConfig();
    99     this->weaponConfigChanged();
     101  this->weaponConfigChanged();
    100102}
    101103
     
    104106{
    105107  this->weaponMan.previousWeaponConfig();
    106     this->weaponConfigChanged();
     108  this->weaponConfigChanged();
    107109}
    108110
     
    119121 */
    120122void Playable::setCameraMode(unsigned int cameraMode)
    121 {
    122 
     123{}
     124
     125/**
     126 * @brief sets the Playmode
     127 * @param playmode the Playmode
     128 * @returns true on success, false otherwise
     129 */
     130bool Playable::setPlayMode(Playable::Playmode playmode)
     131{
     132  if (!this->playmodeSupported(playmode))
     133    return false;
     134  else
     135    this->playmode = playmode;
    123136}
    124137
     
    155168  if( this->getOwner() % 2 == 0)
    156169  {
    157 //     this->toList(OM_GROUP_00);
     170    //     this->toList(OM_GROUP_00);
    158171    this->setAbsCoor(213.37, 57.71, -47.98);
    159172    this->setAbsDir(0, 0, 1, 0);
     
    161174  else
    162175  { // red team
    163 //     this->toList(OM_GROUP_01);
     176    //     this->toList(OM_GROUP_01);
    164177    this->setAbsCoor(-314.450, 40.701, 83.554);
    165178    this->setAbsDir(1.0, -0.015, -0.012, 0.011);
     
    179192  {
    180193    PRINTF(0)("Playable dies\n");
    181   // only if this is the spaceship of the player
     194    // only if this is the spaceship of the player
    182195    if (State::isOnline())
    183196    {
     
    185198        State::getGameRules()->onPlayerDeath();
    186199
    187 //     this->toList(OM_GROUP_05);
    188   //HACK: moves the entity to an unknown place far far away: in the future, GameRules will look for that
     200      //     this->toList(OM_GROUP_05);
     201      //HACK: moves the entity to an unknown place far far away: in the future, GameRules will look for that
    189202      this->setAbsCoor(-2000.0, -2000.0, -2000.0);
    190203
    191   //explosion hack
     204      //explosion hack
    192205
    193206    }
     
    216229    // unsubscibe all events.
    217230    EventHandler* evh = EventHandler::getInstance();
    218     std::list<int>::iterator ev;
     231    std::vector<int>::iterator ev;
    219232    for (ev = this->events.begin(); ev != events.end(); ev++)
    220233      evh->unsubscribe( ES_GAME, (*ev));
     
    242255    /*EventHandler*/
    243256    EventHandler* evh = EventHandler::getInstance();
    244     std::list<int>::iterator ev;
     257    std::vector<int>::iterator ev;
    245258    for (ev = this->events.begin(); ev != events.end(); ev++)
    246259      evh->subscribe(player, ES_GAME, (*ev));
     
    256269bool Playable::pickup(PowerUp* powerUp)
    257270{
    258   if(powerUp->isA(CL_WEAPON_POWER_UP)) {
     271  if(powerUp->isA(CL_WEAPON_POWER_UP))
     272  {
    259273    return dynamic_cast<WeaponPowerUp*>(powerUp)->process(&this->getWeaponManager());
    260274  }
    261   else if(powerUp->isA(CL_PARAM_POWER_UP)) {
     275  else if(powerUp->isA(CL_PARAM_POWER_UP))
     276  {
    262277    ParamPowerUp* ppu = dynamic_cast<ParamPowerUp*>(powerUp);
    263     switch(ppu->getType()) {
     278    switch(ppu->getType())
     279    {
    264280      case POWERUP_PARAM_HEALTH:
    265281        this->increaseHealth(ppu->getValue());
     
    291307void Playable::unregisterEvent(int eventType)
    292308{
    293   this->events.remove(eventType);
     309  std::vector<int>::iterator rmEvent = std::find(this->events.begin(), this->events.end(), eventType);
     310  this->events.erase(rmEvent);
    294311
    295312  if (this->currentPlayer != NULL)
     
    338355
    339356void  Playable::detachCamera()
    340 {
    341 }
     357{}
    342358
    343359#define DATA_FLAGS    1
  • trunk/src/world_entities/playable.h

    r7337 r7338  
    1010#include "extendable.h"
    1111#include "event.h"
    12 #include <list>
     12#include <vector>
    1313
    1414#include "world_entities/weapons/weapon_manager.h"
     
    2626class Playable : public WorldEntity, public Extendable
    2727{
    28   public:
    29     virtual ~Playable();
    30 
    31     virtual void loadParams(const TiXmlElement* root);
    32 
    33     virtual void die();
    34     virtual void respawn();
    35 
    36     virtual bool pickup(PowerUp* powerUp);
    37 
    38     void addWeapon(Weapon* weapon, int configID = -1, int slotID = -1);
    39     void removeWeapon(Weapon* weapon);
    40     void nextWeaponConfig();
    41     void previousWeaponConfig();
    42 
    43     inline WeaponManager& getWeaponManager() { return this->weaponMan; };
    44     void weaponConfigChanged();
     28public:
     29  typedef enum {
     30    Vertical         = 1,
     31    Horizontal       = 2,
     32    FromBehind       = 4,
     33    Full3D           = 8,
     34  } Playmode;
    4535
    4636
    47     bool setPlayer(Player* player);
    48     Player* getCurrentPlayer() const { return this->currentPlayer; };
     37public:
     38  virtual ~Playable();
    4939
    50     void attachCamera();
    51     void detachCamera();
    52     virtual void setCameraMode(unsigned int cameraMode = 0);
     40  virtual void loadParams(const TiXmlElement* root);
    5341
    54     virtual void collidesWith(WorldEntity* entity, const Vector& location);
    55     virtual void process(const Event &event);
     42  virtual void die();
     43  virtual void respawn();
    5644
    57     virtual void tick(float dt);
     45  virtual bool pickup(PowerUp* powerUp);
    5846
    59     /** @return a List of Events in PEV_* sytle */
    60     inline const std::list<int>& getEventList() { return this->events; };
     47  void addWeapon(Weapon* weapon, int configID = -1, int slotID = -1);
     48  void removeWeapon(Weapon* weapon);
     49  void nextWeaponConfig();
     50  void previousWeaponConfig();
    6151
    62     int       writeSync(const byte* data, int length, int sender);
    63     int       readSync(byte* data, int maxLength );
    64     bool      needsReadSync();
     52  inline WeaponManager& getWeaponManager() { return this->weaponMan; };
     53  void weaponConfigChanged();
    6554
    6655
    67     //
    68     virtual void setStartDirection(const Quaternion& rot) = 0;
    69     void setStartDirection(float angle, float dirX, float dirY, float dirZ) { this->setStartDirection(Quaternion(angle, Vector(dirX, dirY, dirZ))); }
     56  bool setPlayer(Player* player);
     57  Player* getCurrentPlayer() const { return this->currentPlayer; };
    7058
    71     inline void setScore( int score ) { this->score = score; }
    72     inline int  getScore() { return this->score; }
     59  void attachCamera();
     60  void detachCamera();
     61  virtual void setCameraMode(unsigned int cameraMode = 0);
     62  bool playmodeSupported(Playable::Playmode playmode) const { return this->supportedPlaymodes & playmode; };
     63  bool setPlayMode(Playable::Playmode playmode);
    7364
    74   protected:
    75     Playable();
     65  virtual void collidesWith(WorldEntity* entity, const Vector& location);
     66  virtual void process(const Event &event);
    7667
    77     virtual void enter() = 0;
    78     virtual void leave() = 0;
     68  virtual void tick(float dt);
    7969
    80     void registerEvent(int eventType);
    81     void unregisterEvent(int eventType);
     70  /** @return a List of Events in PEV_* sytle */
     71  inline const std::vector<int>& getEventList() { return this->events; };
    8272
    83   private:
    84     WeaponManager         weaponMan;          //!< the weapon manager: managing a list of weapon to wepaon-slot mapping
    85     std::list<int>        events;             //!< A list of Events, that are captured for this playable
    86 
    87     Player*               currentPlayer;      //!< The Player currently connected to this Playable (the one that has controll) otherwise NULL
    88 
    89     bool                  bFire;              //!< If the Ship is firing.
    90     int                   oldFlags;           //!< Used for synchronisation
    91 
    92     int                   score;
    93     int                   oldScore;
    94 
    95     bool                  bDead;
    96 
    97     //TODO HACK: explosion emitter
     73  int       writeSync(const byte* data, int length, int sender);
     74  int       readSync(byte* data, int maxLength );
     75  bool      needsReadSync();
    9876
    9977
    100     WorldEntity* collider;
     78  //
     79  virtual void setStartDirection(const Quaternion& rot) = 0;
     80  void setStartDirection(float angle, float dirX, float dirY, float dirZ) { this->setStartDirection(Quaternion(angle, Vector(dirX, dirY, dirZ))); }
     81
     82  inline void setScore( int score ) { this->score = score; }
     83  inline int  getScore() { return this->score; }
     84
     85protected:
     86  Playable();
     87
     88  virtual void enter() = 0;
     89  virtual void leave() = 0;
     90
     91  void setSupportedPlaymodes(short playmodes) { this->supportedPlaymodes = playmodes; };
     92
     93  void registerEvent(int eventType);
     94  void unregisterEvent(int eventType);
     95
     96private:
     97  WeaponManager         weaponMan;          //!< the weapon manager: managing a list of weapon to wepaon-slot mapping
     98  std::vector<int>      events;             //!< A list of Events, that are captured for this playable
     99
     100  Player*               currentPlayer;      //!< The Player currently connected to this Playable (the one that has controll) otherwise NULL
     101
     102  bool                  bFire;              //!< If the Ship is firing.
     103  int                   oldFlags;           //!< Used for synchronisation
     104
     105  int                   score;
     106  int                   oldScore;
     107
     108  bool                  bDead;
     109  short                 supportedPlaymodes; //!< What Playmodes are Supported in this Playable.
     110  Playable::Playmode    playmode;           //!< The current playmode.
     111
     112  WorldEntity* collider;
    101113};
    102114
Note: See TracChangeset for help on using the changeset viewer.