Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 12029


Ignore:
Timestamp:
Oct 10, 2018, 3:36:53 PM (5 years ago)
Author:
merholzl
Message:

added space race improvements

Location:
code/branches/mergeFS18
Files:
14 edited
1 copied

Legend:

Unmodified
Added
Removed
  • code/branches/mergeFS18

  • code/branches/mergeFS18/data/levels/newnewnewspacerace.oxw

    r11808 r12029  
    2121
    2222  include("templates/spaceshipAssff.oxt")
    23   include("templates/pickupRepresentationTemplates.oxt")
     23  include("templates/SpaceRaceTemplates.oxt")
    2424
    2525?>
     
    218218  </StaticEntity>
    219219
    220 <StaticEntity position="10000,-70,200" direction="-1,0,0" yaw=90 pitch=0 roll=-30 collisionType="static">
     220<StaticEntity position="11000,-60,200" direction="-1,0,0" yaw=90 pitch=0 roll=-30 collisionType="static">
    221221    <attached>
    222222      <Model scale="20" mesh="Board2.mesh" />
     
    233233   
    234234    <!-- distance = how far from the middle point of a check point do i have to fly ? distance variable answers this question   -->
     235   
     236
     237     
    235238
    236239
     
    246249    </collisionShapes>
    247250    </RaceCheckPoint>
    248 
    249 
     251            <Model mesh="cube.mesh" scale=2 position="3000,200,100"/>
     252            <Model mesh="cube.mesh" scale=2 position="5000,100,500"/>
    250253
    251254<RaceCheckPoint name="checkpoint2" yaw=90 pitch=90 position="3000,200,100" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="1" islast="false" nextcheckpoints="2,-1,-1">
     
    262265
    263266
    264 <RaceCheckPoint name="checkpoint3" yaw=90 pitch=90 position="5000,100,500" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">
     267<RaceCheckPoint name="checkpoint3" yaw=90 pitch=90 position="5000,80,500" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">
    265268        <attached>
    266269      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     
    288291
    289292
    290 <RaceCheckPoint name="checkpoint5"  yaw=90 pitch=90 position="10000,-200,200" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1">
    291         <attached>
    292       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
    293     </attached>
    294     <collisionShapes>
    295         <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
    296         <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
    297         <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
    298         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    299     </collisionShapes>
    300     </RaceCheckPoint>
    301 
    302 
    303 
    304 <RaceCheckPoint name="checkpoint6" yaw=90 pitch=90 position="13000,200,400" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1">
    305         <attached>
    306       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
    307     </attached>
    308     <collisionShapes>
    309         <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
    310         <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
    311         <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
    312         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    313     </collisionShapes>
    314     </RaceCheckPoint>
    315 
    316 
    317 
    318 <RaceCheckPoint name="checkpoint7" yaw=90 pitch=90 position="15000,0,0" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1">
     293<RaceCheckPoint name="checkpoint5"  yaw=90 pitch=90 position="11000,-200,200" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1">
     294        <attached>
     295      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     296    </attached>
     297    <collisionShapes>
     298        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
     299        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
     300        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
     301        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     302    </collisionShapes>
     303    </RaceCheckPoint>
     304
     305
     306
     307<RaceCheckPoint name="checkpoint6" yaw=90 pitch=90 position="13000,-70,350" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1">
     308        <attached>
     309      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     310    </attached>
     311    <collisionShapes>
     312        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
     313        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
     314        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
     315        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     316    </collisionShapes>
     317    </RaceCheckPoint>
     318
     319
     320
     321<RaceCheckPoint name="checkpoint7" yaw=90 pitch=90 position="15500,0,0" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1">
    319322        <attached>
    320323      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     
    353356    </collisionShapes>
    354357    </RaceCheckPoint>
    355 
    356358<RaceCheckPoint name="checkpoint10" yaw=90 pitch=90 position="24000,-150,-80" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="9" islast="false" nextcheckpoints="10,-1,-1">
    357359        <attached>
     
    380382
    381383
    382 <RaceCheckPoint name="checkpoint12" yaw=90 pitch=90 position="30000,-300,900" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="11" islast="false" nextcheckpoints="12,-1,-1">
    383         <attached>
    384       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
    385     </attached>
    386     <collisionShapes>
    387         <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
    388         <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
    389         <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
    390         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    391     </collisionShapes>
    392     </RaceCheckPoint>
    393 
    394 
    395 <RaceCheckPoint name="checkpoint13" yaw=90 pitch=90 position="33000,600,60" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="12" islast="false" nextcheckpoints="13,-1,-1">
    396         <attached>
    397       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
    398     </attached>
    399     <collisionShapes>
    400         <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
    401         <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
    402         <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
    403         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    404     </collisionShapes>
    405     </RaceCheckPoint>
    406 
    407 
    408 
    409 <RaceCheckPoint name="checkpoint14" yaw=90 pitch=90 position="35000,120,20" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="13" islast="false" nextcheckpoints="14,-1,-1">
    410         <attached>
    411       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
    412     </attached>
    413     <collisionShapes>
    414         <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
    415         <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
    416         <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
    417         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    418     </collisionShapes>
    419     </RaceCheckPoint>
    420 
    421 <RaceCheckPoint name="checkpoint15" yaw=90 pitch=90 position="38000,-200,0" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="14" islast="false" nextcheckpoints="15,-1,-1">
     384<RaceCheckPoint name="checkpoint12" yaw=90 pitch=90 position="30000,-250,670" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="11" islast="false" nextcheckpoints="12,-1,-1">
     385        <attached>
     386      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     387    </attached>
     388    <collisionShapes>
     389        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
     390        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
     391        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
     392        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     393    </collisionShapes>
     394    </RaceCheckPoint>
     395
     396
     397<RaceCheckPoint name="checkpoint13" yaw=90 pitch=90 position="33000,150,600" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="12" islast="false" nextcheckpoints="13,-1,-1">
     398        <attached>
     399      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     400    </attached>
     401    <collisionShapes>
     402        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
     403        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
     404        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
     405        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     406    </collisionShapes>
     407    </RaceCheckPoint>
     408
     409
     410
     411<RaceCheckPoint name="checkpoint14" yaw=90 pitch=90 position="35000,500,300" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="13" islast="false" nextcheckpoints="14,-1,-1">
     412        <attached>
     413      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     414    </attached>
     415    <collisionShapes>
     416        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
     417        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
     418        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
     419        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     420    </collisionShapes>
     421    </RaceCheckPoint>
     422
     423<RaceCheckPoint name="checkpoint15" yaw=90 pitch=90 position="38000,150,150" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="14" islast="false" nextcheckpoints="15,-1,-1">
    422424        <attached>
    423425      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
     
    477479        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
    478480    </collisionShapes>
    479     </RaceCheckPoint>
     481    </RaceCheckPoint> 
    480482
    481483<!-- the last checkpoint is bigger and red -->
     
    490492        <BoxCollisionShape position="-90,0,0"     halfExtents="13, 13, 90" />
    491493    </collisionShapes>
    492     </RaceCheckPoint>
     494    </RaceCheckPoint> 
    493495
    494496
    495497</checkpoints>
    496498</SpaceRaceManager>
    497 
     499   <Arrow>
     500      <attached>
     501       <Model scale="5" mesh="botpointer4.mesh"/>
     502      </attached>
     503      <controller>
     504        <ArrowController accuracy = 10000>
     505          <gpspoints>
     506            <Model mesh="cube.mesh" scale=0 position="1000,30,0"/>
     507            <Model mesh="cube.mesh" scale=0 position="3000,200,100"/>
     508            <Model mesh="cube.mesh" scale=0 position="5000,80,500"/>
     509            <Model mesh="cube.mesh" scale=0 position="8000,-150,150"/>
     510            <Model mesh="cube.mesh" scale=0 position="11000,-200,200"/>
     511            <Model mesh="cube.mesh" scale=0 position="13000,-70,350"/>
     512            <Model mesh="cube.mesh" scale=0 position="15500,0,0"/>
     513            <Model mesh="cube.mesh" scale=0 position="18000,150,-150"/>
     514            <Model mesh="cube.mesh" scale=0 position="21000,200,-120"/>
     515            <Model mesh="cube.mesh" scale=0 position="24000,-150,-80"/>
     516            <Model mesh="cube.mesh" scale=0 position="27000,-200,0"/>
     517            <Model mesh="cube.mesh" scale=0 position="30000,-250,670"/>
     518            <Model mesh="cube.mesh" scale=0 position="33000,150,600"/>
     519            <Model mesh="cube.mesh" scale=0 position="35000,500,300"/>
     520            <Model mesh="cube.mesh" scale=0 position="38000,150,150"/>
     521            <Model mesh="cube.mesh" scale=0 position="41000,30,-50"/>
     522            <Model mesh="cube.mesh" scale=0 position="44000,90,0"/>
     523            <Model mesh="cube.mesh" scale=0 position="47000,120,30"/>
     524            <Model mesh="cube.mesh" scale=0 position="50000,0,100"/>
     525            <Model mesh="cube.mesh" scale=0 position="53000,0,0"/>
     526
     527           
     528
     529
     530           
     531
     532                </gpspoints>
     533        </ArrowController>
     534      </controller>
     535    </Arrow>
    498536
    499537
    500538<!-- ---------------------PickUps---------------------- -->
    501539
    502     <PickupSpawner pickup=smallshrinkpickup position="10000,-200,200" triggerDistance="60" respawnTime="10" maxSpawnedItems="10" scale="8"/>
    503     <PickupSpawner pickup=mediumboostpickup position="24000,-150,-80" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
    504     <PickupSpawner pickup=smallboostpickup position="38000,-200,0" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
    505 
    506     <PickupSpawner pickup=smallspeedpickup position="7000,-200,100" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
    507     <PickupSpawner pickup=mediumshinkpickup position="16000,150,50" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
    508     <PickupSpawner pickup=triplehealthspeedinvisibilitypickup position="41000,-300,100" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     540   
     541    <PickupSpawner pickup=mediumboostpickup position="24000,-165,-80" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     542   
     543    <PickupSpawner pickup=smallboostpickup position="42000,70,-30" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     544    <PickupSpawner pickup=smallspeedpickup position="32000,0,650" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     545
     546    <PickupSpawner pickup=smallspeedpickup position="9000,-185,66" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     547 
    509548  </Scene>
    510549</Level>
  • code/branches/mergeFS18/data/levels/presentationHS12.oxw

    r11802 r12029  
    6161
    6262    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
    63     <SpawnPoint team=0 position="-900,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
     63    <SpawnPoint team=0 position="-900,0,0" lookat="0,0,0" primaryThrust=1000 spawnclass=SpaceShip pawndesign=spaceshipescort />
    6464    <!--SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=bigship /-->
    6565    <!--SpawnPoint team=0 position="-900,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage /-->
     
    328328        roll                = "180"
    329329        name                = "collateralDamage"
    330         radarname           = "Collateral Damage" >
    331         <!--
     330        radarname           = "Collateral Damage"
    332331        pitch               = "90"
    333         yaw                 = "0"-->
     332        yaw                 = "100"
     333        primaryThrust       = "2000">
    334334      <attached>
    335335        <DockingTarget name="spaceShip" />
  • code/branches/mergeFS18/data/levels/templates/fastship.oxt

    r11783 r12029  
    2121   rotationThrust    = 50
    2222
    23    lift = 0;
    24    stallSpeed = 220;
     23   lift = 0
     24   stallSpeed = 220
    2525
    2626
    27    boostPower            = 8
     27   boostPower            = 7.5 
    2828   boostPowerRate        = 3
    29    boostRate             = 8
     29   boostRate             = 7.5
    3030   boostCooldownDuration = 6
    3131
  • code/branches/mergeFS18/data/levels/templates/spaceshipCollateralDamage.oxt

    r11052 r12029  
    1919   shieldrechargewaittime = 1
    2020
    21    primaryThrust     = 100
     21   primaryThrust     = 1000
    2222   auxilaryThrust    = 30
    2323   rotationThrust    = 50
     
    2929   boostPowerRate        = 1
    3030   boostRate             = 5
    31    boostCooldownDuration = 10
     31   boostCooldownDuration = 1
    3232
    3333   shakeFrequency = 15
     
    3636   collisionType     = "dynamic"
    3737   mass              = 100
    38    linearDamping     = 0.7
     38   linearDamping     = 0.5
    3939   angularDamping    = 0.9999999
    4040  >
  • code/branches/mergeFS18/src/libraries/tools/Timer.h

    r12028 r12029  
    115115            void run();
    116116
     117
    117118            /// Re-starts the timer: The executor will be called after @a interval seconds.
    118119            inline void startTimer()
  • code/branches/mergeFS18/src/modules/gametypes/SpaceRace.cc

    r11721 r12029  
    6969#include "SpaceRaceBot.h"
    7070#include "items/Engine.h"
    71 #include <vector>
     71#include <vector>
     72#include <iostream>
     73#include <string>
    7274
    7375
     
    8385        this->cantMove_ = false;
    8486        this->bTimeIsUp_ = false;
    85 
    8687        this->numberOfBots_ = 5; // quick fix: don't allow default-bots to enter the race
     88        this->bLost =false;
    8789        //we fixed the number of bots in order to have the same starting position all the time !
    8890    }
     
    101103        startpos[4] =-40;
    102104        startpos[5] =100;
    103        
     105         
    104106        startpos[6] =100;
    105107        startpos[7] =-40;
     
    117119
    118120        this->spawnPlayersIfRequested();
     121        this->countdown_mode=true;
    119122        this->cantMove_ = true;
    120123        //players are unable to move while countdown is running
     
    122125        {
    123126            engine->setActive(false);
     127            engine->addSpeedMultiply(1.7);
    124128        }
    125129
     
    138142        }
    139143
    140         std::string message("Use headphones to hear the countdown!");
    141         this->getGametypeInfo()->sendAnnounceMessage(message);
    142         ChatManager::message(message);
    143 
    144         //after 11 seconds , countdownFinished function is called to activate bots` engines
    145         Timer* countdownTimer = new Timer();
    146         countdownTimer->setTimer(11, false, createExecutor(createFunctor(&SpaceRace::countdownFinished, this)));
    147     }
    148 
    149 
    150 
     144        std::string message("Use headphones to hear the countdown! Press W for forward acceleration, press W+space for boost!");
     145
     146        this->getGametypeInfo()->sendAnnounceMessage(message);
     147        ChatManager::message(message);
     148       
     149
     150
     151       
     152    }
     153
     154    // Counter in the beginning of the game
     155    void SpaceRace::tick(float dt) {
     156        SUPER(SpaceRace, tick, dt);
     157       
     158        //countdown_mode is set true,when spawnIfRequested is called
     159        if (countdown_mode) {
     160            //10 seconds will be counted
     161            this->time_passed -= dt;
     162
     163            //orxout() << "time: " <<(int) time_passed << "s" << endl;
     164
     165            std::string message=std::to_string((int)time_passed);
     166            this->getGametypeInfo()->sendAnnounceMessage(message);
     167            if (time_passed <= 1) {
     168
     169                this->countdownFinished();
     170                this->countdown_mode = false;
     171            }
     172        }
     173
     174    }
     175       
     176    void SpaceRace::startmessage(int second){
     177
     178        std::string message=std::to_string(second);
     179        this->getGametypeInfo()->sendAnnounceMessage(message);
     180        ChatManager::message(message);
     181       
     182       
     183
     184    }
    151185
    152186    void SpaceRace::end()
    153187    {
     188       
    154189        this->clock_.capture();
    155190        int s = this->clock_.getSeconds();
    156191        int ms = static_cast<int>(this->clock_.getMilliseconds() - 1000*s);
    157192        std::string message;
    158 
    159193        if (this->bTimeIsUp_)
    160194        {
    161             message = multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds !!\n"
    162                         + "You lose!";
    163         }
     195            message =  "TIME IS UP! YOU LOOSE!";
     196        }
     197       else if(this->bLost){
     198            message = "YOU LOOSE!";
     199
     200       }       
     201       
    164202        else
    165203        {
     
    167205                        + "." + multi_cast<std::string>(ms) + " seconds.";
    168206        }
     207       
    169208        if (!this->hasEnded())
    170209        {
     210
    171211            this->getGametypeInfo()->sendAnnounceMessage(message);
    172212            ChatManager::message(message);
     
    183223        int ms = this->clock_.getMilliseconds() % 1000;
    184224
    185        
    186    
    187         const std::string& message = player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1)
     225
     226        std::string message(player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1)
     227        + " after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds.");
     228
     229        this->getGametypeInfo()->sendAnnounceMessage(message);
     230        ChatManager::message(message);
     231      /*  const std::string& message = player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1)
    188232        + "after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds.";
    189233        this->getGametypeInfo()->sendAnnounceMessage(message);
    190         ChatManager::message(message);
     234        ChatManager::message(message);*/
     235       
    191236
    192237    }
     
    195240    {
    196241
    197         std::string message("RACE STARTED ");
    198         this->getGametypeInfo()->sendAnnounceMessage(message);
    199         ChatManager::message(message);
     242        std::string message("RACE STARTED");
     243        this->getGametypeInfo()->sendAnnounceMessage(message);
     244        ChatManager::message(message);
     245       
    200246
    201247
    202248        for (Engine* engine : ObjectList<Engine>())
    203249            engine->setActive(true);
     250
     251        std::string message2("Press W for forward acceleration, press W+space for boost!");
     252        this->getGametypeInfo()->sendAnnounceMessage(message2);
     253        ChatManager::message(message2);
    204254    }
    205255
  • code/branches/mergeFS18/src/modules/gametypes/SpaceRace.h

    r11720 r12029  
    4242#include "SpaceRaceManager.h"
    4343
     44
    4445namespace orxonox
    4546{
     
    5455
    5556        public:
    56             SpaceRace(Context* context);
     57            SpaceRace(Context* context);//, SpaceRace* parentRace);
    5758            virtual ~SpaceRace() {}
    5859
     
    6061            virtual void end() override;
    6162            virtual void countdownFinished();
     63           
    6264            virtual void addBots(unsigned int amount) override; //<! overwrite function in order to bypass the addbots command.
     65            virtual void tick(float dt) override;
     66            virtual void startmessage(int second);
    6367
    6468
     
    7983            inline Clock& getClock()
    8084                { return this->clock_; }
     85            //inline void setParentRace(SpaceRace* parentRace) { this->parentRace = parentRace; }
    8186
    8287            virtual bool allowPawnHit(Pawn* victim, Pawn* originator) override;
    8388            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator) override;
    8489            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator) override;
     90            bool countdown_mode = false;
     91            float time_passed = 11.0f;
     92           
     93            bool bLost=false;
    8594
    8695        private:
    8796            bool cantMove_;                                            ///< Helper variable, used to stall the engines before the race starts.
    8897            std::map<PlayerInfo*, RaceCheckPoint*> checkpointReached_; ///< The number of the last check point reached by each player.
    89             bool bTimeIsUp_;                                           ///< True if one of the check points is reached too late.
     98            bool bTimeIsUp_;    ///< True if one of the check points is reached too late.
    9099
    91100            Clock clock_; ///< The clock starts running at the beginning of the game. It is used to give the time at each check point, the give the time at the end of the game, and to stop the game if a check point is reached too late.
  • code/branches/mergeFS18/src/modules/gametypes/SpaceRaceController.cc

    r11720 r12029  
    2020 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    2121 *
    22  *  Created on: Oct 8, 2012
     22 *  Created on: Oct 8, 2012findCheck
    2323 *      Author: purgham
    2424 */
     
    3030#include "collisionshapes/CollisionShape.h"
    3131#include "BulletCollision/CollisionShapes/btCollisionShape.h"
     32#include "SpaceRace.h"
    3233
    3334
     
    3839    const int ADJUSTDISTANCE = 500;
    3940    const int MINDISTANCE = 5;
     41
    4042    /*
    4143     * Idea: Find static Point (checkpoints the spaceship has to reach)
     
    4547    {
    4648        RegisterObject(SpaceRaceController);
     49        //this->parentRace = nullptr;
     50
    4751        std::vector<RaceCheckPoint*> checkpoints;
    4852
     
    6367
    6468        int i;
    65         for (i = -2; findCheckpoint(i) != nullptr; i--)
     69        for (i = -2; findCheckpoint(i) != nullptr; i--)     // WIESO?
    6670        {
    6771            continue;
     
    103107        return returnVec;
    104108    }
    105 
     109    void SpaceRaceController::endtheGame() const {
     110        SpaceRace* gametype = orxonox_cast<SpaceRace*>(this->getGametype());
     111        assert(gametype)
     112;        if (!gametype)
     113        return;
     114        gametype->bLost=true;
     115        gametype->end();
     116
     117    }
    106118    /*
    107119     * called from 'findStaticCheckpoints'
     
    122134            for (int checkpointIndex : currentCheckpoint->getNextCheckpoints())
    123135            {
     136                if (findCheckpoint(checkpointIndex) == nullptr){
     137                    orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl;
     138                }
    124139                if (currentCheckpoint == findCheckpoint(checkpointIndex))
    125140                {
    126                     //orxout() << currentCheckpoint->getCheckpointIndex()<<endl;
     141                    orxout() << currentCheckpoint->getCheckpointIndex()<<endl;
    127142                    continue;
    128143                }
    129                 if (findCheckpoint(checkpointIndex) == nullptr)
    130                     orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl;
     144             
    131145                else
    132146                    numberOfWays += rekSimulationCheckpointsReached(findCheckpoint(checkpointIndex), zaehler);
     147
    133148            }
    134149            zaehler[currentCheckpoint] += numberOfWays;
     
    162177        {
    163178            RaceCheckPoint* nextRaceCheckPoint = findCheckpoint(checkpointIndex);
     179
    164180            float distance = recCalculateDistance(nextRaceCheckPoint, this->getControllableEntity()->getPosition());
    165181
     
    168184                minDistance = distance;
    169185                minNextRaceCheckPoint = nextRaceCheckPoint;
    170             }
    171 
    172         }
    173 
     186
     187            }
     188            //There is a bug. If the user passes through the 19th checkpoint with the opponents, the game will end immediately
     189            if(nextRaceCheckPoint->isLast())
     190                endtheGame();
     191
     192        }
     193        if(minNextRaceCheckPoint == nullptr) { orxout()<<"nullptr found @192 SpaceRaceController" << endl;}
    174194        return minNextRaceCheckPoint;
    175195    }
     
    208228
    209229        {
     230            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @218 SpaceRaceController" << endl;
     231
    210232            return nextRaceCheckpoint_;
    211233        }
     
    213235
    214236        {
     237            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @223 SpaceRaceController" << endl;
     238
    215239            return nextRaceCheckpoint_;
    216240        }
     
    221245    }
    222246
     247
     248
     249
     250   
     251
    223252    RaceCheckPoint* SpaceRaceController::findCheckpoint(int index) const
    224253    {
    225         for (RaceCheckPoint* checkpoint : this->checkpoints_)
    226             if (checkpoint->getCheckpointIndex() == index)
    227                 return checkpoint;
    228         return nullptr;
    229     }
     254        RaceCheckPoint* res = nullptr;
     255        for (RaceCheckPoint* checkpoint : this->checkpoints_){
     256            //conclusion: index=20 is not
     257            if (checkpoint->getCheckpointIndex() == index){
     258                //if(checkpoint == nullptr) orxout()<<"returned nullptr @line 234 SpaceRaceController"<<endl;
     259                //orxout()<< "index of the checkpoint "<< index <<endl;
     260                res = checkpoint;
     261                return res;
     262            }
     263        }
     264    /* if(index>2 )   
     265        this->endtheGame();*/
     266
     267        return res;
     268    }
     269   
     270
    230271
    231272    /*RaceCheckPoint* SpaceRaceController::addVirtualCheckPoint( RaceCheckPoint* previousCheckpoint, int indexFollowingCheckPoint , const Vector3& virtualCheckPointPosition )
     
    282323    void SpaceRaceController::tick(float dt)
    283324    {
     325       
     326
    284327        if (this->getControllableEntity() == nullptr || this->getControllableEntity()->getPlayer() == nullptr )
    285328        {
     
    312355        {
    313356            nextRaceCheckpoint_ = adjustNextPoint();
     357            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @327 SpaceRaceController" << endl;
     358
    314359            lastPositionSpaceship = this->getControllableEntity()->getPosition();
    315360        }
     
    325370        }
    326371        //orxout(user_status) << "dt= " << dt << ";  distance= " << (lastPositionSpaceship-this->getControllableEntity()->getPosition()).length() <<std::endl;
    327         lastPositionSpaceship = this->getControllableEntity()->getPosition();
    328        
     372        /*lastPositionSpaceship = this->getControllableEntity()->getPosition();
     373       
     374        SpaceRace obj=new SpaceRace();
     375        obj.setParentRace(parentRace);
     376        this->parentRace=obj.parentRace;*/
     377       
    329378        this->boostControl();
     379
     380        /*if(nextRaceCheckpoint_ == nullptr){
     381            this->parentRace->bLost=true;
     382            this->parentRace->end();
     383        }*/
     384        // if(nextRaceCheckpoint_ == nullptr ){
     385        //    // if( nextRaceCheckpoint_->getCheckpointIndex()==19)
     386        //     orxout()<<"nullptr @351 Line"<<endl;
     387        // }
     388
     389       
    330390        this->moveToPosition(nextRaceCheckpoint_->getPosition());
     391
    331392        this->boostControl();
    332393    }
    333394
     395
     396    /*void SpaceRaceController::setParentRace(parentRace){
     397        this->parentRace=parentRace;
     398    }*/
    334399    // True if a coordinate of 'pointToPoint' is smaller then the corresponding coordinate of 'groesse'
    335400    bool SpaceRaceController::vergleicheQuader(const Vector3& pointToPoint, const Vector3& groesse)
  • code/branches/mergeFS18/src/modules/gametypes/SpaceRaceController.h

    r11099 r12029  
    4747    {
    4848        public:
    49             SpaceRaceController(Context* context);
     49            SpaceRaceController(Context* context);//, SpaceRace* parentRace);
    5050            virtual ~SpaceRaceController();
    5151            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
    5252            virtual void tick(float dt) override;
     53           
    5354
    5455        private:
     
    5758            RaceCheckPoint* nextPointFind(RaceCheckPoint*);
    5859            RaceCheckPoint* adjustNextPoint();
     60            void endtheGame() const;
     61
    5962            std::vector<RaceCheckPoint*> findStaticCheckpoints(RaceCheckPoint*, const std::vector<RaceCheckPoint*>&);
    6063            std::vector<RaceCheckPoint*> staticCheckpoints();
     
    7477            Vector3 lastPositionSpaceship;
    7578            int virtualCheckPointIndex;
     79            //SpaceRace* parentRace;
    7680    };
    7781
  • code/branches/mergeFS18/src/modules/gametypes/SpaceRaceManager.cc

    r11071 r12029  
    113113    RaceCheckPoint* SpaceRaceManager::findCheckpoint(int index) const
    114114    {
    115         for (RaceCheckPoint* checkpoint : this->checkpoints_)
     115        /*for (RaceCheckPoint* checkpoint : this->checkpoints_)
    116116        if (checkpoint->getCheckpointIndex() == index)
    117117        return checkpoint;
     118        return nullptr;*/
     119        for (RaceCheckPoint* checkpoint : this->checkpoints_){
     120            if (checkpoint->getCheckpointIndex() == index)
     121                return checkpoint;
     122        }
     123        orxout()<<"returned checkpoint @line 123 SpaceRaceManager"<<endl;
    118124        return nullptr;
    119125    }
  • code/branches/mergeFS18/src/orxonox/items/Engine.cc

    r11071 r12029  
    5454        this->relativePosition_ = Vector3::ZERO;
    5555
    56         this->boostFactor_ = 1.5f;
     56        this->boostFactor_ = 1.2f;
    5757
    5858        this->maxSpeedFront_ = 0.0f;
     
    6161        this->maxSpeedUpDown_ = 0.0f;
    6262
    63         this->accelerationFront_ = 0.0f;
     63        this->accelerationFront_ = 1.0f;
    6464        this->accelerationBrake_ = 0.0f;
    6565        this->accelerationBack_ = 0.0f;
     
    6868
    6969        this->speedAdd_ = 0.0f;
    70         this->speedMultiply_ = 1.0f;
     70        this->speedMultiply_ = 1.0f;                       //////////////////////////////////////////
    7171
    7272        this->setConfigValues();
  • code/branches/mergeFS18/src/orxonox/worldentities/pawns/SpaceShip.cc

    r12028 r12029  
    6565        this->boostPowerRate_ = 1.0f;
    6666        this->boostRate_ = 5.0f;
    67         this->boostCooldownDuration_ = 5.0f;
     67        this->boostCooldownDuration_ = 10.0f;
    6868
    6969        this->shakeFrequency_ = 15.0f;
  • code/branches/mergeFS18/src/orxonox/worldentities/pawns/SpaceShip.h

    r12028 r12029  
    103103            */
    104104            virtual void moveFrontBack(const Vector2& value)
    105                 { this->steering_.z -= value.x; }
     105                { this->steering_.z -= (0.6)*value.x; }
    106106            /**
    107107            @brief Move right or left.
     
    109109            */
    110110            virtual void moveRightLeft(const Vector2& value)
    111                 { this->steering_.x += value.x; }
     111                { this->steering_.x += (0.6)*value.x; }
    112112            /**
    113113            @brief Move up or down.
     
    115115            */
    116116            virtual void moveUpDown(const Vector2& value)
    117                 { this->steering_.y += value.x; }
     117                { this->steering_.y += (0.6)*value.x; }
    118118
    119119            inline void moveFrontBack(float value)
Note: See TracChangeset for help on using the changeset viewer.