[Orxonox-commit 3492] r8178 - in code/trunk: . data/levels data/overlays src/modules/overlays/hud src/orxonox src/orxonox/gametypes
jo at orxonox.net
jo at orxonox.net
Sun Apr 3 19:56:47 CEST 2011
Author: jo
Date: 2011-04-03 19:56:47 +0200 (Sun, 03 Apr 2011)
New Revision: 8178
Added:
code/trunk/data/levels/lastTeamStanding.oxw
code/trunk/data/levels/lastTeamStandingII.oxw
code/trunk/data/overlays/lastTeamStandingHUD.oxo
code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc
code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h
code/trunk/src/orxonox/gametypes/LastTeamStanding.cc
code/trunk/src/orxonox/gametypes/LastTeamStanding.h
Modified:
code/trunk/
code/trunk/data/levels/lastManStanding.oxw
code/trunk/data/overlays/lastManStandingHUD.oxo
code/trunk/src/modules/overlays/hud/CMakeLists.txt
code/trunk/src/modules/overlays/hud/GametypeStatus.cc
code/trunk/src/modules/overlays/hud/GametypeStatus.h
code/trunk/src/orxonox/OrxonoxPrereqs.h
code/trunk/src/orxonox/gametypes/CMakeLists.txt
code/trunk/src/orxonox/gametypes/Gametype.h
Log:
Merged lastmastanding3 into trunk. There's an xml parsing error that only appeared after merging. The level seems to load properly though.
Property changes on: code/trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /code/branches/ai:6592-7033
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dynamicmatch:6584-7030
/code/branches/fps:6591-7072
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hudelements:6584-6941
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/ipv6:7293-7458
/code/branches/kicklib:7975-7977
/code/branches/lastmanstanding:7479-7644
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/miniprojects:2754-2824
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network64:2210-2355
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/overlay:2117-2385
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup2:5942-6405
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/png2:7262-7263
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation3:6913-7162
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/script_trigger:1295-1953,1955
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound3:5941-6102
/code/branches/steering:5949-6091
/code/branches/tetris:8100-8107
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weapons:2897-3051
/code/branches/weaponsystem:2742-2890
+ /code/branches/ai:6592-7033
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dynamicmatch:6584-7030
/code/branches/fps:6591-7072
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hudelements:6584-6941
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/ipv6:7293-7458
/code/branches/kicklib:7975-7977
/code/branches/lastmanstanding:7479-7644
/code/branches/lastmanstanding3:7903-8175
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/miniprojects:2754-2824
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network64:2210-2355
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/overlay:2117-2385
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup2:5942-6405
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/png2:7262-7263
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation3:6913-7162
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/script_trigger:1295-1953,1955
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound3:5941-6102
/code/branches/steering:5949-6091
/code/branches/tetris:8100-8107
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weapons:2897-3051
/code/branches/weaponsystem:2742-2890
Modified: code/trunk/data/levels/lastManStanding.oxw
===================================================================
--- code/trunk/data/levels/lastManStanding.oxw 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/data/levels/lastManStanding.oxw 2011-04-03 17:56:47 UTC (rev 8178)
@@ -1,3 +1,9 @@
+<LevelInfo
+ name = "Last Man Standing"
+ description = "Be the sole survivor."
+ tags = ""
+/>
+
<?lua
include("stats.oxo")
include("HUDTemplates3.oxo")
@@ -37,31 +43,25 @@
<Bot />
<!-- ------------ middle asteroid -------------- -->
- <StaticEntity position="0,20,0" collisionType=static>
- <attached>
- <Model position="0,0,0" scale=140 mesh="asteroid_UV.mesh" shadow=true />
- <!-- ParticleEmitter position="0,0,0" source="Orxonox/Steam" / -->
- </attached>
- <collisionShapes>
- <SphereCollisionShape radius="145" />
- </collisionShapes>
+ <StaticEntity position="0,0,0" collisionType=static>
+ <attached>
+ <MovableEntity position="0,20,0" rotationrate="-4.5" rotationaxis="0,1,0" >
+ <attached>
+ <Model position="0,0,0" scale=140 mesh="asteroid_UV.mesh" shadow=true />
+ <Model position="-160,40,28.4" scale=1 mesh="sphere.mesh" /><!--EasterEgg indicator-->
+ <PickupSpawner position="-160,40,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="15"><!--EasterEgg-->
+ <pickup>
+ <InvisiblePickup template=hugeinvisiblepickup />
+ </pickup>
+ </PickupSpawner>
+ </attached>
+ </MovableEntity>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="145" />
+ </collisionShapes>
</StaticEntity>
- <PickupSpawner position="-160,65,10" triggerDistance="10" respawnTime="5" maxSpawnedItems="10"><!--EasterEgg-->
- <pickup>
- <InvisiblePickup template=mediuminvisiblepickup />
- </pickup>
- </PickupSpawner>
- <PickupSpawner position="-160,60,17" triggerDistance="10" respawnTime="5" maxSpawnedItems="10"><!--EasterEgg-->
- <pickup>
- <InvisiblePickup template=hugeinvisiblepickup />
- </pickup>
- </PickupSpawner>
- <StaticEntity position="-160,60,28.4"><!--EasterEgg-Indicator-->
- <attached>
- <Model position="0,0,0" scale=1 mesh="sphere.mesh" />
- </attached>
- </StaticEntity>
<!-- ---------------asteroid dome----------------- -->
<?lua
@@ -137,7 +137,7 @@
</StaticEntity>
-<?lua end ?>
+<?lua end ?><!-- ---------------asteroid dome END------------------->
</Scene>
</Level>
Copied: code/trunk/data/levels/lastTeamStanding.oxw (from rev 8175, code/branches/lastmanstanding3/data/levels/lastTeamStanding.oxw)
===================================================================
--- code/trunk/data/levels/lastTeamStanding.oxw (rev 0)
+++ code/trunk/data/levels/lastTeamStanding.oxw 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,142 @@
+<LevelInfo
+ name = "Last Team Standing"
+ description = "Survive as a team."
+ tags = "singleplayer"
+/>
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+ include("lastTeamStandingHUD.oxo")
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+?>
+
+<Level
+ name = "Last Team Standing"
+ description = "testmap for gametype last team standing"
+ gametype = "LastTeamStanding"
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+
+ <Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/skypanoramagen1"
+ >
+
+ <?lua
+ include("includes/pickups.oxi")
+ ?>
+
+<Bot />
+
+<!-- ------------ middle asteroid -------------- -->
+ <StaticEntity position="0,20,0" collisionType=static>
+ <attached>
+ <Model position="0,0,0" scale=140 mesh="asteroid_UV.mesh" shadow=true />
+ <!-- ParticleEmitter position="0,0,0" source="Orxonox/Steam" / -->
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="145" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <PickupSpawner position="-160,65,10" triggerDistance="10" respawnTime="5" maxSpawnedItems="10"><!--EasterEgg-->
+ <pickup>
+ <InvisiblePickup template=mediuminvisiblepickup />
+ </pickup>
+ </PickupSpawner>
+ <PickupSpawner position="-160,60,17" triggerDistance="10" respawnTime="5" maxSpawnedItems="10"><!--EasterEgg-->
+ <pickup>
+ <InvisiblePickup template=hugeinvisiblepickup />
+ </pickup>
+ </PickupSpawner>
+ <StaticEntity position="-160,60,28.4"><!--EasterEgg-Indicator-->
+ <attached>
+ <Model position="0,0,0" scale=1 mesh="sphere.mesh" />
+ </attached>
+ </StaticEntity>
+
+<!-- ---------------asteroid dome----------------- -->
+<?lua
+max = 16
+for i = 0, max, 1
+do
+ y = math.sin(i/max*6)*750
+ z = math.cos(i/max*6)*750
+ j = 1
+ ?>
+
+ <TeamSpawnPoint team=<?lua print( math.mod(i,4)) ?> position="<?lua print(y*1.4+z*0.2) ?>,0,<?lua print(z*1.4-y*0.2) ?>" direction="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+ <StaticEntity position="<?lua print(y) ?>,0,<?lua print(z) ?>" scale=<?lua print(j * 2) ?> collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="<?lua print(j * 2) ?>,100,<?lua print(j * 2) ?>" position = "0,0,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="<?lua print(y) ?>,100,<?lua print(z) ?>" scale=<?lua print(j * 2) ?> collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i+3,6) + 1) ?>.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="45,100,45" position = "0,0,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="<?lua print(y) ?>,200,<?lua print(z) ?>" scale=<?lua print(j * 2) ?> collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*5,6) + 1) ?>.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="45,100,45" position = "0,0,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="<?lua print(y) ?>,-100,<?lua print(z) ?>" scale=<?lua print(j * 2) ?> collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*13+1,6) + 1) ?>.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="45,100,45" position = "0,0,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="<?lua print(y) ?>,-200,<?lua print(z) ?>" scale=<?lua print(j * 2) ?> collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*17,6) + 1) ?>.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="45,100,45" position = "0,0,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+<!-- ---------Top Asteroid----------- -->
+ <StaticEntity position="<?lua print(y) ?>,300,<?lua print(z) ?>" scale=<?lua print(j * 2.1) ?> pitch="90" roll="180" yaw="<?lua print(-90+i*360/max) ?>" collisionType=static >
+ <attached>
+ <Model position="0,0,0" scale=25 mesh="ast6.mesh">
+ </Model>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape halfExtents="50,140,30" position="0,0,0"/>
+ </collisionShapes>
+ </StaticEntity>
+
+
+<?lua end ?>
+
+ </Scene>
+</Level>
+
+
Copied: code/trunk/data/levels/lastTeamStandingII.oxw (from rev 8175, code/branches/lastmanstanding3/data/levels/lastTeamStandingII.oxw)
===================================================================
--- code/trunk/data/levels/lastTeamStandingII.oxw (rev 0)
+++ code/trunk/data/levels/lastTeamStandingII.oxw 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,417 @@
+<LevelInfo
+ name = "On the fly"
+ description = "Survive as a team."
+ tags = ""
+/>
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+ include("lastTeamStandingHUD.oxo")
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+?>
+
+<Level
+ name = "On the fly"
+ description = "testmap for gametype last team standing"
+ gametype = "LastTeamStanding"
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+
+ <Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/skypanoramagen1"
+ >
+<!-- TODO:
+1. make collisionshapes bulletproof: -> attach movable entity with dynamic collisionshape within a static collisionshape
+2. add forcefields -> there should be several "streams" through the level
+3. add teamspawnpoints (different spaceships?) (where should the spawnpoints be placed?)
+-->
+<!--Bot / -->
+
+<!-------------------- Box: TopLayer + BottomLayer + 4 invisible Walls --------------------->
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,-400,0" mesh="cube_orange.mesh" scale3D="1000,10,1000" />
+ <Model position="0,-420,0" mesh="cube_orange.mesh" scale3D="1000,10,1000" /><!-- Second Model in order to avoid graphic errors-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,-400,0" halfExtents="1500,10,1500" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,400,0" mesh="cube_orange.mesh" scale3D="1000,10,1000" />
+ <Model position="0,420,0" mesh="cube_orange.mesh" scale3D="1000,10,1000" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,400,0" halfExtents="1000,10,1000" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <!--Model position="1000,0,0" mesh="cube_green.mesh" scale3D="10,400,1000" /-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="1000,0,0" halfExtents="10,400,1000" />
+ </collisionShapes>
+ </StaticEntity>
+
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <!-- Model position="-1000,0,0" mesh="cube_green.mesh" scale3D="10,400,1000" / -->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-1000,0,0" halfExtents="10,400,1000" />
+ </collisionShapes>
+ </StaticEntity>
+
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,1000" mesh="cube_green.mesh" scale3D="1000,400,10" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,1000" halfExtents="1000,400,10" />
+ </collisionShapes>
+ </StaticEntity>
+
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,-1000" mesh="cube_green.mesh" scale3D="1000,400,10" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,-1000" halfExtents="1000,400,10" />
+ </collisionShapes>
+ </StaticEntity>
+<!-- END of CUBE-->
+<!-------------- Centered Thin Gate -------------->
+
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,-1200,0" mesh="hs-w01.mesh" scale3D="300,400,900" pitch="90" roll="0" yaw="0"/>
+ <!--Model position="121,0,-80" mesh="cube.mesh" scale3D="18,400,18" />
+ <Model position="-121,0,-80" mesh="cube.mesh" scale3D="18,400,18" /-->
+ <Model position="0,0,-80" scale=150 mesh="sphere.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="121,0,-80" halfExtents="18,400,18" />
+ <BoxCollisionShape position="-121,0,-80" halfExtents="18,400,18" />
+ <SphereCollisionShape position="0,0,-80" radius="150" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <ForceField position="0,270,-80" direction="-3,-4,-3" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="0,270,-80" direction="-3,-4,-3">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- to bulk gate, left -->
+ <ForceField position="0,-275,-80" direction="3,0,2" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="0,-275,-80" direction="3,0,2">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+
+<!-------------- Bulk Gate -------------->
+ <StaticEntity position="300,0,500" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,-100,0" mesh="hs-w01.mesh" scale3D="500,400,600" pitch="270" roll="0" yaw="0"/>
+ <!--Model position="205,-105,20" mesh="cube.mesh" scale3D="135,280,60" />
+ <Model position="-205,-105,20" mesh="cube.mesh" scale3D="135,280,60" />
+ <Model position="0,235,0" mesh="cube.mesh" scale3D="180,35,35" />
+ <Model position="0,-344,-18" mesh="cube.mesh" scale3D="210,38,36" /-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="205,-105,20" halfExtents="135,280,60" />
+ <BoxCollisionShape position="-205,-105,20" halfExtents="135,280,60" />
+ <BoxCollisionShape position="0,235,0" halfExtents="180,35,35" />
+ <BoxCollisionShape position="0,-344,-18" halfExtents="210,38,36" />
+ </collisionShapes>
+ </StaticEntity>
+<!-- back to thin gate -->
+ <ForceField position="300,0,650" direction="1,1.5,-4" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="300,0,650" direction="1,1.5,-4">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- to thin gate -->
+ <ForceField position="300,300,500" direction="-1,0,-2" diameter=100 velocity=1500 length=900 />
+ <MovableEntity position="300,300,500" direction="-1,0,-2">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream -->
+ <ForceField position="830,-300,830" direction="-1,0,0" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="830,-300,830" direction="-1,0,0">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.5,0,0" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.5,0,0" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream II-->
+ <ForceField position="830,350,830" direction="0,0,-1" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="830,350,830" direction="0,0,-1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0,0,0.5" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0,0,0.5" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+
+<!-------------- Bar -------------->
+ <StaticEntity position="-495,0,-495" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,0" mesh="CuboidBody.mesh" scale3D="20,720,20" pitch="90" roll="45" yaw="0"/>
+ <!--Model position="0,0,0" mesh="cube.mesh" scale3D="19,719,19" pitch="90" roll="45" yaw="0"/-->
+ </attached>
+
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="20,720,20" pitch="90" roll="45" yaw="0"/>
+ </collisionShapes>
+ </StaticEntity>
+<!-- "lift" -->
+ <ForceField position="-700,-300,-700" direction="0,1,0" diameter=100 velocity=2000 length=400 />
+ <MovableEntity position="-700,-300,-700" direction="0,1,0">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- to thin gate, low -->
+ <ForceField position="0,60,-830" direction="0,-1,2" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="0,60,-830" direction="0,-1,2">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream -->
+ <ForceField position="-830,-350,-830" direction="2,0,0" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="-830,-350,-830" direction="2,0,0">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.5,0,0" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.5,0,0" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream II-->
+ <ForceField position="-870,350,-830" direction="0,0,1" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="-870,350,-830" direction="0,0,1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0,0,0.5" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0,0,0.5" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+<!-------------- 2 Side-Bars -------------->
+ <StaticEntity position="0,0,-1000" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,0" mesh="CuboidBody.mesh" scale3D="20,405,20" pitch="0" roll="10" yaw="0"/>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="20,400,20" pitch="0" roll="0" yaw="0"/>
+ </collisionShapes>
+ </StaticEntity>
+ <StaticEntity position="-1000,0,0" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,0" mesh="CuboidBody.mesh" scale3D="20,405,20" pitch="7" roll="0" yaw="0"/>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="20,400,20" pitch="0" roll="0" yaw="0"/>
+ </collisionShapes>
+ </StaticEntity>
+<!-- to solar panels -->
+ <ForceField position="-850,-300,-200" direction="1,0,2" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="-850,-300,-200" direction="1,0,2">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- along the bar -->
+ <ForceField position="-900,50,-100" direction="1,0,-1" diameter=150 velocity=2000 length=900 />
+ <MovableEntity position="-900,50,-100" direction="1,0,-1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+<!-------------- 3 Solar Panels --------------->
+
+<?lua
+for i = 1, 3, 1
+do
+ x = i/4*1000
+ z = i/4*500
+?>
+ <StaticEntity position="<?lua print(-1000+x) ?>,-310,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,0,0" mesh="SolarPanel.mesh" scale3D="60,80,30" pitch="0" roll="0" yaw="120"/>
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,300,0" halfExtents="155,460,3" pitch="0" roll="0" yaw="120"/>
+ </collisionShapes>
+ </StaticEntity>
+<?lua end ?>
+
+ <ForceField position="-600,100,400" direction="0,-1,-3" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="-600,100,400" direction="0,-1,-3">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream -->
+ <ForceField position="-830,-100,830" direction="0,0,-1" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="-830,-100,830" direction="0,0,-1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.5,0,0" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.5,0,0" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream II -->
+ <ForceField position="-830,350,830" direction="1,0,0" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="-830,350,830" direction="1,0,0">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0,0,0.5" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0,0,0.5" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- along the panels -->
+ <ForceField position="-830,250,250" direction="3,0,2" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="-830,250,250" direction="3,0,2">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+<!-------------- Thin Gate -------------->
+
+ <StaticEntity position="500,0,-500" direction="1,0,-1" collisionType=static mass=100000 >
+ <attached>
+ <Model position="0,-1200,0" mesh="hs-w01.mesh" scale3D="300,400,900" pitch="90" roll="0" yaw="0"/>
+ <Model position="0,100,-80" scale=150 mesh="sphere.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="121,0,-80" halfExtents="18,400,18" />
+ <BoxCollisionShape position="-121,0,-80" halfExtents="18,400,18" />
+ <SphereCollisionShape position="0,100,-80" radius="150" />
+ </collisionShapes>
+ </StaticEntity>
+<!-- to thin gate middle -->
+ <ForceField position="550,350,-550" direction="-3.3,0,3" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="550,350,-550" direction="-3.3,0,3">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- across the field -->
+ <ForceField position="550,-350,-550" direction="-3,0,1" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="550,-350,-550" direction="-3,0,1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.7,0.4,0.1" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.7,0.4,0.1" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream -->
+ <ForceField position="830,-350,-830" direction="0,0,1" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="830,-350,-830" direction="0,0,1">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.5,0,0" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0.5,0,0" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+<!-- alternative stream II -->
+ <ForceField position="830,350,-830" direction="-1,0,0" diameter=100 velocity=2000 length=900 />
+ <MovableEntity position="830,350,-830" direction="-1,0,0">
+ <attached>
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0,0,0.5" scale=1/>
+ <?lua for i=0,4,1 do ?>
+ <Billboard position="0,0,<?lua print(i*(-100)) ?>" material="Examples/Flare" colour="0,0,0.5" scale=1/>
+ <?lua end ?>
+ </attached>
+ </MovableEntity>
+
+<!---------------- Spawnpoints ------------------>
+ <TeamSpawnPoint team=0 position="845,350,-835" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=0 position="845,-350,-835" direction="0,0,1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=0 position="835,350,-845" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=0 position="835,-350,-845" direction="0,0,1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+ <TeamSpawnPoint team=1 position="-845,350,835" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=1 position="-845,-100,835" direction="0,0,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=1 position="-835,350,845" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=1 position="-835,-100,845" direction="0,0,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+ <TeamSpawnPoint team=2 position="-870,350,-835" direction="0,0,1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=2 position="-840,-350,-835" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=2 position="-865,350,-840" direction="0,0,1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=2 position="-835,-350,-840" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+ <TeamSpawnPoint team=3 position="835,350,845" direction="0,0,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=3 position="835,-300,845" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=3 position="845,350,835" direction="0,0,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <TeamSpawnPoint team=3 position="845,-300,835" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+<Bot />
+
+ </Scene>
+</Level>
+
Modified: code/trunk/data/overlays/lastManStandingHUD.oxo
===================================================================
--- code/trunk/data/overlays/lastManStandingHUD.oxo 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/data/overlays/lastManStandingHUD.oxo 2011-04-03 17:56:47 UTC (rev 8178)
@@ -64,7 +64,7 @@
showplayers = true
/>
- <OverlayText
+ <!--OverlayText
position = "0.02, 0.07"
pickpoint = "0.0, 0.0"
font = "ShareTechMono"
@@ -92,7 +92,7 @@
colour = "1.0, 1.0, 1.0, 1.0"
align = "left"
caption = "|"
- />
+ /-->
</OverlayGroup>
</Template>
Copied: code/trunk/data/overlays/lastTeamStandingHUD.oxo (from rev 8175, code/branches/lastmanstanding3/data/overlays/lastTeamStandingHUD.oxo)
===================================================================
--- code/trunk/data/overlays/lastTeamStandingHUD.oxo (rev 0)
+++ code/trunk/data/overlays/lastTeamStandingHUD.oxo 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,58 @@
+<Template name="lastTeamStandingHUD">
+ <OverlayGroup name="lastTeamStandingHUD" scale = "1, 1">
+
+<GametypeFadingMessage
+ name = "fadingmessage"
+ position = "0.5, 0.01"
+ font = "VeraMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 0.5, 1.0"
+ align = "center"
+ />
+
+ <OverlayText
+ position = "0.02, 0.02"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+ caption = "Lives: "
+ />
+
+ <LastTeamStandingInfos
+ position = "0.14, 0.02"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showlives = true
+ showteams = false
+ />
+
+ <OverlayText
+ position = "0.02, 0.055"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+ caption = "Teams: "
+ />
+
+ <LastTeamStandingInfos
+ position = "0.14, 0.055"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showlives = false
+ showteams = true
+ />
+
+ </OverlayGroup>
+</Template>
Modified: code/trunk/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/overlays/hud/CMakeLists.txt 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/modules/overlays/hud/CMakeLists.txt 2011-04-03 17:56:47 UTC (rev 8178)
@@ -16,4 +16,5 @@
GametypeFadingMessage.cc
LastManStandingInfos.cc
PauseNotice.cc
+ LastTeamStandingInfos.cc
)
Modified: code/trunk/src/modules/overlays/hud/GametypeStatus.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeStatus.cc 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/modules/overlays/hud/GametypeStatus.cc 2011-04-03 17:56:47 UTC (rev 8178)
@@ -35,6 +35,7 @@
#include "infos/PlayerInfo.h"
#include "worldentities/ControllableEntity.h"
#include "worldentities/pawns/Spectator.h"
+//#include "gametypes/Gametype.h"
namespace orxonox
{
@@ -49,8 +50,10 @@
{
RegisterObject(GametypeStatus);
+ //this->game_ = 0;
this->owner_ = 0;
this->bNoCaption_ = false;
+ //this->bForcedSpawn_ = false;
ModifyConsoleCommand(__CC_GametypeStatus_name, __CC_displayCaption_name).setObject(this);
}
@@ -66,6 +69,11 @@
if (this->owner_ && this->owner_->getGametypeInfo() && this->owner_->getControllableEntity())
{
+ //if (this->game_)
+ // this->bForcedSpawn_ = this->game_->getForceSpawn();
+ //else
+ // this->bForcedSpawn_ = false;
+
const GametypeInfo* gtinfo = this->owner_->getGametypeInfo();
ControllableEntity* ce = this->owner_->getControllableEntity();
@@ -86,7 +94,7 @@
{
if (gtinfo->isStartCountdownRunning())
this->setCaption(multi_cast<std::string>(static_cast<int>(ceil(gtinfo->getStartCountdown()))));
- else if (ce->isA(Class(Spectator)))
+ else if (ce->isA(Class(Spectator))/*&&(!bForcedSpawn_)*/)
this->setCaption("Press [Fire] to respawn");
else
this->setCaption("");
@@ -100,7 +108,7 @@
void GametypeStatus::changedOwner()
{
SUPER(GametypeStatus, changedOwner);
-
+ //this->game_ = orxonox_cast<Gametype*>(this->getOwner());
this->owner_ = orxonox_cast<PlayerInfo*>(this->getOwner());
}
Modified: code/trunk/src/modules/overlays/hud/GametypeStatus.h
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeStatus.h 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/modules/overlays/hud/GametypeStatus.h 2011-04-03 17:56:47 UTC (rev 8178)
@@ -48,8 +48,10 @@
void setDisplayCaption(bool bValue); //!< Toggles whether the gametype status is displayed.
private:
+ //Gametype* game_;
PlayerInfo* owner_;
bool bNoCaption_;
+ //bool bForcedSpawn_;
};
}
Copied: code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc (from rev 8175, code/branches/lastmanstanding3/src/modules/overlays/hud/LastTeamStandingInfos.cc)
===================================================================
--- code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc (rev 0)
+++ code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,97 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ *
+ *
+ */
+
+#include "LastTeamStandingInfos.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+#include "gametypes/LastTeamStanding.h"
+#include "infos/PlayerInfo.h"
+
+namespace orxonox
+{
+ CreateFactory(LastTeamStandingInfos);
+
+ LastTeamStandingInfos::LastTeamStandingInfos(BaseObject* creator) : OverlayText(creator)
+ {
+ RegisterObject(LastTeamStandingInfos);
+
+ this->lts_ = 0;
+ this->player_ = 0;
+ this->bShowLives_ = false;
+ this->bShowTeams_ = false;
+ }
+
+ LastTeamStandingInfos::~LastTeamStandingInfos()
+ {
+ }
+
+ void LastTeamStandingInfos::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(LastTeamStandingInfos, XMLPort, xmlelement, mode);
+
+ XMLPortParam(LastTeamStandingInfos, "showlives", setShowLives, getShowLives, xmlelement, mode).defaultValues(false);
+ XMLPortParam(LastTeamStandingInfos, "showTeams", setShowTeams, getShowTeams, xmlelement, mode).defaultValues(false);
+ }
+
+ void LastTeamStandingInfos::tick(float dt)
+ {
+ SUPER(LastTeamStandingInfos, tick, dt);
+
+ if (this->player_ && this->lts_)
+ {
+ if (this->bShowLives_)
+ {
+ const std::string& lives = multi_cast<std::string>(this->lts_->playerGetLives(this->player_));
+ this->setCaption(lives);
+ }
+ else if(this->bShowTeams_)
+ {
+ const std::string& Teams = multi_cast<std::string>(this->lts_->getNumTeamsAlive());
+ this->setCaption(Teams);
+ }
+ }
+ }
+
+ void LastTeamStandingInfos::changedOwner()
+ {
+ SUPER(LastTeamStandingInfos, changedOwner);
+
+ if (this->getOwner() && this->getOwner()->getGametype())
+ {
+ this->player_ = orxonox_cast<PlayerInfo*>(this->getOwner());
+ this->lts_ = orxonox_cast<LastTeamStanding*>(this->getOwner()->getGametype().get());
+ }
+ else
+ {
+ this->player_ = 0;
+ this->lts_ = 0;
+ }
+ }
+}
Copied: code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h (from rev 8175, code/branches/lastmanstanding3/src/modules/overlays/hud/LastTeamStandingInfos.h)
===================================================================
--- code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h (rev 0)
+++ code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,66 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ *
+ *
+ */
+
+#ifndef _LastTeamStandingInfos_H__
+#define _LastTeamStandingInfos_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+ class _OverlaysExport LastTeamStandingInfos : public OverlayText, public Tickable
+ {
+ public:
+ LastTeamStandingInfos(BaseObject* creator);
+ virtual ~LastTeamStandingInfos();
+
+ virtual void tick(float dt);
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ virtual void changedOwner();
+
+ inline void setShowLives(bool value)
+ { this->bShowLives_ = value; }
+ inline bool getShowLives() const
+ { return this->bShowLives_; }
+
+ inline void setShowTeams(bool value)
+ { this->bShowTeams_ = value; }
+ inline bool getShowTeams() const
+ { return this->bShowTeams_; }
+
+ private:
+ LastTeamStanding* lts_;
+ PlayerInfo* player_;
+ bool bShowLives_;
+ bool bShowTeams_;
+ };
+}
+#endif /* _LastTeamStandingInfos_H__ */
Modified: code/trunk/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/trunk/src/orxonox/OrxonoxPrereqs.h 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/orxonox/OrxonoxPrereqs.h 2011-04-03 17:56:47 UTC (rev 8178)
@@ -95,6 +95,7 @@
class Dynamicmatch;
class Gametype;
class LastManStanding;
+ class LastTeamStanding;
class TeamBaseMatch;
class TeamDeathmatch;
class UnderAttack;
Modified: code/trunk/src/orxonox/gametypes/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/gametypes/CMakeLists.txt 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/orxonox/gametypes/CMakeLists.txt 2011-04-03 17:56:47 UTC (rev 8178)
@@ -7,4 +7,5 @@
Asteroids.cc
Dynamicmatch.cc
LastManStanding.cc
+ LastTeamStanding.cc
)
Modified: code/trunk/src/orxonox/gametypes/Gametype.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.h 2011-04-03 16:51:03 UTC (rev 8177)
+++ code/trunk/src/orxonox/gametypes/Gametype.h 2011-04-03 17:56:47 UTC (rev 8178)
@@ -149,6 +149,9 @@
inline void setTimeLimit(float t)
{ this->timeLimit_ = t; }
+ //inline bool getForceSpawn()
+ // { return this->bForceSpawn_; }
+
virtual void resetTimer();
virtual void resetTimer(float t);
Copied: code/trunk/src/orxonox/gametypes/LastTeamStanding.cc (from rev 8175, code/branches/lastmanstanding3/src/orxonox/gametypes/LastTeamStanding.cc)
===================================================================
--- code/trunk/src/orxonox/gametypes/LastTeamStanding.cc (rev 0)
+++ code/trunk/src/orxonox/gametypes/LastTeamStanding.cc 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,324 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+
+#include "LastTeamStanding.h"
+
+#include "core/CoreIncludes.h"
+#include "network/Host.h"
+#include "infos/PlayerInfo.h"
+#include "worldentities/pawns/Pawn.h"
+#include "core/ConfigValueIncludes.h"
+#include "util/Convert.h"
+
+namespace orxonox
+{
+ CreateUnloadableFactory(LastTeamStanding);
+
+ LastTeamStanding::LastTeamStanding(BaseObject* creator) : TeamDeathmatch(creator)
+ {
+ RegisterObject(LastTeamStanding);
+ this->bForceSpawn_ = true;
+ this->lives = 1;//4
+ this->eachTeamsPlayers.resize(teams_,0);
+ this->teamsAlive = 0;
+ this->bNoPunishment = false;
+ this->bHardPunishment = false;
+ this->punishDamageRate = 0.4f;
+ this->timeRemaining = 15.0f;
+ this->respawnDelay = 4.0f;
+ this->setHUDTemplate("lastTeamStandingHUD");
+ }
+
+ LastTeamStanding::~LastTeamStanding()
+ {
+ //this->playerLives_.clear();
+ //this->eachTeamsPlayers.clear();
+ //this->timeToAct_.clear();
+ //this->inGame_.clear();
+ //this->playerDelayTime_.clear();
+ }
+
+ void LastTeamStanding::playerEntered(PlayerInfo* player)
+ {
+ if (!player)// only for safety
+ return;
+ TeamDeathmatch::playerEntered(player);
+ if (teamsAlive<=1)
+ playerLives_[player]=lives;
+ else
+ playerLives_[player]=getMinLives();//new players only get minimum of lives */
+
+ this->timeToAct_[player] = timeRemaining;
+ this->playerDelayTime_[player] = respawnDelay;
+ this->inGame_[player] = true;
+ unsigned int team = getTeam(player);
+ if( team < 0|| team > teams_) // make sure getTeam returns a regular value
+ return;
+ if(this->eachTeamsPlayers[team]==0) //if a player is the first in his group, a new team is alive
+ this->teamsAlive++;
+ this->eachTeamsPlayers[team]++; //the number of player in this team is increased
+ }
+
+ bool LastTeamStanding::playerLeft(PlayerInfo* player)
+ {
+ bool valid_player = TeamDeathmatch::playerLeft(player);
+ if (valid_player)
+ {
+ this->playerLives_.erase(player);
+ this->timeToAct_.erase(player);
+ this->playerDelayTime_.erase(player);
+ this->inGame_.erase(player);
+ unsigned int team = getTeam(player);
+ if( team < 0|| team > teams_) // make sure getTeam returns a regular value
+ return valid_player;
+ this->eachTeamsPlayers[team]--; // a player left the team
+ if(this->eachTeamsPlayers[team] == 0) // if it was the last player a team died
+ this->teamsAlive--;
+ }
+
+ return valid_player;
+ }
+
+ bool LastTeamStanding::allowPawnDeath(Pawn* victim, Pawn* originator)
+ {
+ if (!victim||!victim->getPlayer())// only for safety
+ return true;
+ bool allow = TeamDeathmatch::allowPawnDeath(victim, originator);
+ if(!allow) {return allow;}
+
+ playerLives_[victim->getPlayer()] = playerLives_[victim->getPlayer()] - 1; //player lost a live
+ this->inGame_[victim->getPlayer()] = false; //if player dies, he isn't allowed to respawn immediately
+ if (playerLives_[victim->getPlayer()]<=0) //if player lost all lives
+ {
+ unsigned int team = getTeam(victim->getPlayer());
+ if(team < 0|| team > teams_) // make sure getTeam returns a regular value
+ return allow;
+ this->eachTeamsPlayers[team]--;
+ if(eachTeamsPlayers[team] == 0) //last team member died
+ this->teamsAlive--;
+ const std::string& message = victim->getPlayer()->getName() + " has lost all lives";
+ COUT(0) << message << std::endl;
+ Host::Broadcast(message);
+ }
+ return allow;
+ }
+
+ bool LastTeamStanding::allowPawnDamage(Pawn* victim, Pawn* originator)
+ {
+ bool allow = TeamDeathmatch::allowPawnDamage(victim, originator);
+ if(!allow) {return allow;}
+ if (originator && originator->getPlayer())// only for safety
+ {
+ this->timeToAct_[originator->getPlayer()] = timeRemaining;
+
+ std::map<PlayerInfo*, Player>::iterator it = this->players_.find(originator->getPlayer());
+ if (it != this->players_.end())
+ {
+ if (it->first->getClientID()== CLIENTID_UNKNOWN)
+ return true;
+ const std::string& message = ""; // resets Camper-Warning-message
+ this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
+ }
+ }
+ return allow;
+ }
+
+ void LastTeamStanding::spawnDeadPlayersIfRequested()
+ {
+ for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
+ if (it->second.state_ == PlayerState::Dead)
+ {
+ bool alive = (0 < playerLives_[it->first]&&(inGame_[it->first]));
+ if (alive&&(it->first->isReadyToSpawn() || this->bForceSpawn_))
+ {
+ this->spawnPlayer(it->first);
+ }
+ }
+ }
+
+ void LastTeamStanding::playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn)
+ {
+ if (!player)
+ return;
+ TeamDeathmatch::playerStartsControllingPawn(player,pawn);
+
+ this->timeToAct_[player] = timeRemaining + 3.0f + respawnDelay;//reset timer
+ this->playerDelayTime_[player] = respawnDelay;
+
+ std::map<PlayerInfo*, Player>::iterator it = this->players_.find(player);
+ if (it != this->players_.end())
+ {
+ if (it->first->getClientID()== CLIENTID_UNKNOWN)
+ return;
+ const std::string& message = ""; // resets Camper-Warning-message
+ this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
+ }
+ }
+
+ void LastTeamStanding::tick(float dt)
+ {
+ SUPER(LastTeamStanding, tick, dt);
+ if(this->hasStarted()&&(!this->hasEnded()))
+ {
+ if ( this->hasStarted()&&(teamsAlive<=1) )//last team remaining -> game will end
+ {
+ this->end();
+ }
+ for (std::map<PlayerInfo*, float>::iterator it = this->timeToAct_.begin(); it != this->timeToAct_.end(); ++it)
+ {
+ if (playerGetLives(it->first) <= 0)//Players without lives shouldn't be affected by time.
+ continue;
+ it->second -= dt;//Decreases punishment time.
+ if (!inGame_[it->first])//Manages respawn delay - player is forced to respawn after the delaytime is used up.
+ {
+ playerDelayTime_[it->first] -= dt;
+ if (playerDelayTime_[it->first] <= 0)
+ this->inGame_[it->first] = true;
+
+ if (it->first->getClientID()== CLIENTID_UNKNOWN)
+ continue;
+ int output = 1 + playerDelayTime_[it->first];
+ const std::string& message = "Respawn in " +multi_cast<std::string>(output)+ " seconds." ;//Countdown
+ this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
+ }
+ else if (it->second < 0.0f)
+ {
+ it->second = timeRemaining + 3.0f;//reset punishment-timer
+ if (playerGetLives(it->first) > 0)
+ {
+ this->punishPlayer(it->first);
+ if (it->first->getClientID() == CLIENTID_UNKNOWN)
+ return;
+ const std::string& message = ""; // resets Camper-Warning-message
+ this->gtinfo_->sendFadingMessage(message, it->first->getClientID());
+ }
+ }
+ else if (it->second < timeRemaining/5)//Warning message
+ {
+ if (it->first->getClientID()== CLIENTID_UNKNOWN)
+ continue;
+ const std::string& message = "Camper Warning! Don't forget to shoot.";
+ this->gtinfo_->sendFadingMessage(message, it->first->getClientID());
+ }
+ }
+ }
+ }
+
+ void LastTeamStanding::end()//TODO: Send the message to the whole team
+ {
+ Gametype::end();
+ int party = -1;
+ //find a player who survived
+ for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
+ {
+ if (it->first->getClientID() == CLIENTID_UNKNOWN)
+ continue;
+
+ if (it->second > 0)//a player that is alive
+ {
+ //which party has survived?
+ std::map<PlayerInfo*, int>::iterator it2 = this->teamnumbers_.find(it->first);
+ if (it2 != this->teamnumbers_.end())
+ {
+ party = it2->second;
+ }
+ //if (party < 0) return; //if search failed
+ //victory message to all team members, loose message to everyone else
+ for (std::map<PlayerInfo*, int>::iterator it3 = this->teamnumbers_.begin(); it3 != this->teamnumbers_.end(); ++it3)
+ {
+ if (it3->first->getClientID() == CLIENTID_UNKNOWN)
+ continue;
+ if (it3->second == party)
+ {this->gtinfo_->sendAnnounceMessage("You have won the match!", it3->first->getClientID());}
+ else
+ {this->gtinfo_->sendAnnounceMessage("You have lost the match!", it3->first->getClientID());}
+ }
+ return;
+ }
+ }
+ }
+
+
+ int LastTeamStanding::getMinLives()
+ {
+ int min = lives;
+ for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
+ {
+ if (it->second <= 0)
+ continue;
+ if (it->second < lives)
+ min = it->second;
+ }
+ return min;
+ }
+
+ void LastTeamStanding::punishPlayer(PlayerInfo* player)
+ {
+ if(!player)
+ return;
+ if(bNoPunishment)
+ return;
+ std::map<PlayerInfo*, Player>::iterator it = this->players_.find(player);
+ if (it != this->players_.end())
+ {
+ if(!player->getControllableEntity())
+ return;
+ Pawn* pawn = dynamic_cast<Pawn*>(player->getControllableEntity());
+ if(!pawn)
+ return;
+ if(bHardPunishment)
+ {
+ pawn->kill();
+ this->timeToAct_[player] = timeRemaining + 3.0f + respawnDelay;//reset timer
+ }
+ else
+ {
+ float damage = pawn->getMaxHealth()*punishDamageRate*0.5;//TODO: Factor 0.5 is hard coded. Where is the ratio between MaxHealth actually defined?
+ pawn->removeHealth(damage);
+ this->timeToAct_[player] = timeRemaining;//reset timer
+ }
+ }
+ }
+
+ int LastTeamStanding::playerGetLives(PlayerInfo* player)
+ {
+ if (player)
+ return playerLives_[player];
+ else
+ return 0;
+ }
+
+ void LastTeamStanding::setConfigValues()
+ {
+ SetConfigValue(lives, 4);
+ SetConfigValue(timeRemaining, 15.0f);
+ SetConfigValue(respawnDelay, 4.0f);
+ SetConfigValue(bNoPunishment, false);
+ SetConfigValue(bHardPunishment, false);
+ }
+}
Copied: code/trunk/src/orxonox/gametypes/LastTeamStanding.h (from rev 8175, code/branches/lastmanstanding3/src/orxonox/gametypes/LastTeamStanding.h)
===================================================================
--- code/trunk/src/orxonox/gametypes/LastTeamStanding.h (rev 0)
+++ code/trunk/src/orxonox/gametypes/LastTeamStanding.h 2011-04-03 17:56:47 UTC (rev 8178)
@@ -0,0 +1,93 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+/**
+ @file LastTeamStanding.h
+ @brief Declaration of the Gametype "Last Team Standing".
+*/
+
+#ifndef _LastTeamStanding_H__
+#define _LastTeamStanding_H__
+
+#include "OrxonoxPrereqs.h"
+#include "TeamDeathmatch.h"
+#include <map>
+#include <vector>
+
+//TODO: Hud doesn load; problem with destructor; teams are not assigned properly;
+
+namespace orxonox
+{
+ class _OrxonoxExport LastTeamStanding : public TeamDeathmatch
+ {
+ /**
+ @brief
+ Last Team Standing is a gametype where each team fights against each other, until one team remains.
+ @author
+ Johannes Ritz
+ */
+ protected:
+ int lives; //!< Standard amount of lives. Each player starts a game with so many lives.
+ std::map< PlayerInfo*, int > playerLives_; //!< Each player's lives are stored here.
+ std::vector<int> eachTeamsPlayers; //!<Number of players in each team.
+ int teamsAlive; //!< Counter counting teams with more than one player remaining.
+//Data for CamperPunishment
+ float timeRemaining; //!< Each player has a certain time where he or she has to hit an opponent or will be punished.
+ std::map<PlayerInfo*, float> timeToAct_; //!< Each player's time till she/he will be punished is stored here.
+ bool bNoPunishment; //!< Config value to switch off Punishment function if it is set to true.
+ bool bHardPunishment; //!< Switches between damage and death as punishment.
+ float punishDamageRate; //!< Makes Damage adjustable.
+//Data for RespawnDelay
+ float respawnDelay; //!<Time in seconds when a player will respawn after death.
+ std::map<PlayerInfo*, float> playerDelayTime_; //!< Stores each Player's delay time.
+ std::map<PlayerInfo*, bool> inGame_; //!< Indicates each Player's state.
+
+ virtual void spawnDeadPlayersIfRequested(); //!< Prevents dead players to respawn.
+ virtual int getMinLives(); //!< Returns minimum of each player's lives; players with 0 lives are skipped;
+
+ public:
+ LastTeamStanding(BaseObject* creator); //!< Default Constructor.
+ virtual ~LastTeamStanding(); //!< Default Destructor.
+
+ virtual void playerEntered(PlayerInfo* player); //!< Initializes values.
+ virtual bool playerLeft(PlayerInfo* player); //!< Manages all local variables.
+
+ virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0); //!< Manages each player's lost lives.
+ virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0); //!< If a player shoot's an opponent, his punishment countdown will be resetted.
+ virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn); //!< Resets punishment time and respawn delay.
+ void tick (float dt); //!< used to end the game
+ virtual void end(); //!< Sends an end message.
+ void punishPlayer(PlayerInfo* player); //!< Function in order to kill a player. Punishment for hiding longer than "timeRemaining".
+ int playerGetLives(PlayerInfo* player); //!< getFunction for the map "playerLives_".
+ inline int getNumTeamsAlive() const//!< Returns the number of players that are still alive.
+ {return this->teamsAlive;}
+ void setConfigValues(); //!< Makes values configurable.
+
+ };
+}
+
+#endif /* _LastTeamStanding_H__ */
More information about the Orxonox-commit
mailing list