Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 17, 2015, 3:32:50 PM (9 years ago)
Author:
fvultier
Message:

Different wave types with different enemies. New field type: obstacle. It is impossible to build a tower on a field with an obstacle.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefenseField.cc

    r10586 r10591  
    5353        center_ = NULL;
    5454        upgrade_ = 0;
    55         setPosition(0,0,0);       
    56         model_ = new Model(getContext());
    57         model_->setScale(25);
    58         model_->pitch(Degree(90));
    59         attach(model_);
    60         setAngle(0);
     55        setPosition(0,0,0);                           
     56        modelGround_ = new Model(getContext());
     57        modelGround_->setScale(25);
     58        modelGround_->pitch(Degree(90));
     59        attach(modelGround_);
     60        modelObject_ = new Model(getContext());
     61        modelObject_->setScale(25);
     62        modelObject_->pitch(Degree(90));
     63        attach(modelObject_);
     64        setAngle(0);
    6165    }
    6266
     
    125129    void TowerDefenseField::setAngle(int newAngle)
    126130    {
    127         if (model_ == NULL)
    128         {
    129             return;
    130         }
    131 
    132         switch (newAngle)
    133         {
     131        if (modelGround_ != NULL)
     132        {
     133            switch (newAngle)
     134            {
    134135            case 0:
    135                 model_->yaw(Degree(0));
     136                modelGround_->yaw(Degree(0));
    136137                angle_ = 0;
    137138                break;
    138139            case 1:
    139                 model_->yaw(Degree(90));
     140                modelGround_->yaw(Degree(90));
    140141                angle_ = 1;
    141142                break;   
    142143            case 2:
    143                 model_->yaw(Degree(180));
     144                modelGround_->yaw(Degree(180));
    144145                angle_ = 2;
    145146                break;   
    146147            case 3:
    147                 model_->yaw(Degree(270));
     148                modelGround_->yaw(Degree(270));
    148149                angle_ = 3;
    149150                break;                                           
    150         }
     151            }
     152        }
     153
     154        if (modelObject_ != NULL)
     155        {
     156            switch (newAngle)
     157            {
     158            case 0:
     159                modelObject_->yaw(Degree(0));
     160                angle_ = 0;
     161                break;
     162            case 1:
     163                modelObject_->yaw(Degree(90));
     164                angle_ = 1;
     165                break;   
     166            case 2:
     167                modelObject_->yaw(Degree(180));
     168                angle_ = 2;
     169                break;   
     170            case 3:
     171                modelObject_->yaw(Degree(270));
     172                angle_ = 3;
     173                break;                                           
     174            }
     175        }
     176       
    151177    }
    152178
     
    158184    void TowerDefenseField::createFree(int orientation)
    159185    {           
    160         model_->setMeshSource("TD_F1.mesh");
     186        modelGround_->setMeshSource("TD_F1.mesh");
    161187        tower_ = NULL;
    162188        type_ = FREE;
     
    167193    void TowerDefenseField::createStart(int orientation)
    168194    {     
    169         model_->setMeshSource("TD_S5.mesh");
     195        modelGround_->setMeshSource("TD_S5.mesh");
    170196        tower_ = NULL;
    171197        type_ = START;
     
    177203    void TowerDefenseField::createEnd(int orientation)
    178204    {     
    179         model_->setMeshSource("TD_S4.mesh");
     205        modelGround_->setMeshSource("TD_S4.mesh");
    180206        tower_ = NULL;
    181207        type_ = END;
     
    186212    void TowerDefenseField::createStraight(int orientation)
    187213    {     
    188         model_->setMeshSource("TD_S1.mesh");
     214        modelGround_->setMeshSource("TD_S1.mesh");
    189215        tower_ = NULL;
    190216        type_ = STREET;
     
    195221    void TowerDefenseField::createRCurve(int orientation)
    196222    {     
    197         model_->setMeshSource("TD_S2.mesh");
     223        modelGround_->setMeshSource("TD_S2.mesh");
    198224        tower_ = NULL;
    199225        type_ = STREET;
     
    204230    void TowerDefenseField::createLCurve(int orientation)
    205231    {   
    206         model_->setMeshSource("TD_S3.mesh");
     232        modelGround_->setMeshSource("TD_S3.mesh");
    207233        tower_ = NULL;
    208234        type_ = STREET;
     
    210236        setAngle(orientation);
    211237    }
     238
     239    void TowerDefenseField::createObstacle(int orientation)
     240    {   
     241        modelGround_->setMeshSource("TD_F1.mesh");
     242        modelObject_->setMeshSource("TD_O1.mesh");
     243        tower_ = NULL;
     244        type_ = OBSTACLE;
     245        setUpgrade(0);
     246        setAngle(orientation);
     247    }
    212248
    213249    void TowerDefenseField::createTower(int upgrade)
     
    215251        if (tower_ == NULL)
    216252        {
     253            modelGround_->setMeshSource("TD_F1.mesh");
    217254            tower_ = new TowerDefenseTower(center_->getContext());
    218255            attach(tower_);
    219256            type_ = TOWER;
    220257            setUpgrade(upgrade);
    221             if (upgrade_ > 0 && model_ != NULL)
     258            if (upgrade_ > 0 && modelObject_ != NULL)
    222259            {
    223260                switch (upgrade_)
    224261                {
    225262                    case 1:
    226                         model_->setMeshSource("TD_T1.mesh");                   
     263                        modelObject_->setMeshSource("TD_T1.mesh");                   
    227264                        tower_->addTemplate(center_->getTower1Template());
    228265                        break;
    229266                    case 2:
    230                         model_->setMeshSource("TD_T2.mesh");
     267                        modelObject_->setMeshSource("TD_T2.mesh");
    231268                        tower_->addTemplate(center_->getTower2Template());
    232269                        break;
    233270                    case 3:
    234                         model_->setMeshSource("TD_T3.mesh");
     271                        modelObject_->setMeshSource("TD_T3.mesh");
    235272                        tower_->addTemplate(center_->getTower3Template());
    236273                        break;
    237274                    case 4:
    238                         model_->setMeshSource("TD_T4.mesh");
     275                        modelObject_->setMeshSource("TD_T4.mesh");
    239276                        tower_->addTemplate(center_->getTower4Template());
    240277                        break;
    241278                    case 5:
    242                         model_->setMeshSource("TD_T5.mesh");
     279                        modelObject_->setMeshSource("TD_T5.mesh");
    243280                        tower_->addTemplate(center_->getTower5Template());
    244281                        break;
     
    279316            case 'O':               
    280317                createEnd(paramInt);
    281                 break;   
     318                break;
     319            case 'Y':               
     320                createObstacle(paramInt);
     321                break;                 
    282322            case 'T':                               
    283323                createTower(paramInt);               
Note: See TracChangeset for help on using the changeset viewer.