Changeset 9272 for code/branches
- Timestamp:
- Jun 3, 2012, 6:05:24 PM (12 years ago)
- Location:
- code/branches/presentation2012merge
- Files:
-
- 49 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation2012merge/data/gui/layouts/GUILayout.xsd
r5781 r9272 2 2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 3 3 4 <xsd:element name="GUILayout" type="GUILayoutType"/> 5 6 <xsd:complexType name="GUILayoutType"> 7 <xsd:sequence> 8 <xsd:element name="Window" type="WindowType" /> 9 </xsd:sequence> 10 <xsd:attribute name="Parent" type="xsd:string" use="optional" default=""/> 11 </xsd:complexType> 12 13 <xsd:complexType name="WindowType"> 14 <xsd:sequence> 15 <xsd:element name="LayoutImport" type="LayoutImportType" minOccurs="0" maxOccurs="unbounded" /> 16 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 17 <xsd:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded" /> 18 <xsd:choice minOccurs="0" maxOccurs="unbounded"> 19 <xsd:element name="Window" type="WindowType" /> 20 <xsd:element name="AutoWindow" type="AutoWindowType" /> 21 </xsd:choice> 22 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 23 </xsd:sequence> 24 <xsd:attribute name="Type" type="xsd:string" use="required"/> 25 <xsd:attribute name="Name" type="xsd:string" use="optional" default="" /> 26 </xsd:complexType> 4 <xsd:element name="GUILayout" type="GUILayoutType"/> 27 5 28 <xsd:complexType name="AutoWindowType"> 29 <xsd:sequence> 30 <xsd:element name="LayoutImport" type="LayoutImportType" minOccurs="0" maxOccurs="unbounded" /> 31 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 32 <xsd:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded" /> 33 <xsd:choice minOccurs="0" maxOccurs="unbounded"> 34 <xsd:element name="Window" type="WindowType" /> 35 <xsd:element name="AutoWindow" type="AutoWindowType" /> 36 </xsd:choice> 37 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 38 </xsd:sequence> 39 <xsd:attribute name="NameSuffix" type="xsd:string" use="required"/> 40 </xsd:complexType> 6 <xsd:complexType name="GUILayoutType"> 7 <xsd:sequence> 8 <xsd:element name="Window" type="WindowType" /> 9 </xsd:sequence> 10 <xsd:attribute name="Parent" type="xsd:string" use="optional" default=""/> 11 </xsd:complexType> 41 12 42 <xsd:complexType name="PropertyType"> 43 <xsd:simpleContent> 44 <xsd:extension base="xsd:string"> 45 <xsd:attribute name="Name" type="xsd:string" use="required"/> 46 <xsd:attribute name="Value" type="xsd:string" use="optional"/> 47 </xsd:extension> 48 </xsd:simpleContent> 49 </xsd:complexType> 13 <xsd:complexType name="WindowType"> 14 <xsd:sequence> 15 <xsd:element name="LayoutImport" type="LayoutImportType" minOccurs="0" maxOccurs="unbounded" /> 16 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 17 <xsd:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded" /> 18 <xsd:choice minOccurs="0" maxOccurs="unbounded"> 19 <xsd:element name="Window" type="WindowType" /> 20 <xsd:element name="AutoWindow" type="AutoWindowType" /> 21 </xsd:choice> 22 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 23 </xsd:sequence> 24 <xsd:attribute name="Type" type="xsd:string" use="required"/> 25 <xsd:attribute name="Name" type="xsd:string" use="optional" default="" /> 26 </xsd:complexType> 50 27 51 <xsd:complexType name="LayoutImportType"> 52 <xsd:attribute name="Filename" type="xsd:string" use="required"/> 53 <xsd:attribute name="Prefix" type="xsd:string" use="optional" default="" /> 54 <xsd:attribute name="ResourceGroup" type="xsd:string" use="optional" default="" /> 55 </xsd:complexType> 28 <xsd:complexType name="AutoWindowType"> 29 <xsd:sequence> 30 <xsd:element name="LayoutImport" type="LayoutImportType" minOccurs="0" maxOccurs="unbounded" /> 31 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 32 <xsd:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded" /> 33 <xsd:choice minOccurs="0" maxOccurs="unbounded"> 34 <xsd:element name="Window" type="WindowType" /> 35 <xsd:element name="AutoWindow" type="AutoWindowType" /> 36 </xsd:choice> 37 <xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded" /> 38 </xsd:sequence> 39 <xsd:attribute name="NameSuffix" type="xsd:string" use="required"/> 40 </xsd:complexType> 56 41 57 <xsd:complexType name="EventType"> 58 <xsd:attribute name="Name" type="xsd:string" use="required"/> 59 <xsd:attribute name="Function" type="xsd:string" use="required"/> 60 </xsd:complexType> 42 <xsd:complexType name="PropertyType"> 43 <xsd:simpleContent> 44 <xsd:extension base="xsd:string"> 45 <xsd:attribute name="Name" type="xsd:string" use="required"/> 46 <xsd:attribute name="Value" type="xsd:string" use="optional"/> 47 </xsd:extension> 48 </xsd:simpleContent> 49 </xsd:complexType> 50 51 <xsd:complexType name="LayoutImportType"> 52 <xsd:attribute name="Filename" type="xsd:string" use="required"/> 53 <xsd:attribute name="Prefix" type="xsd:string" use="optional" default="" /> 54 <xsd:attribute name="ResourceGroup" type="xsd:string" use="optional" default="" /> 55 </xsd:complexType> 56 57 <xsd:complexType name="EventType"> 58 <xsd:attribute name="Name" type="xsd:string" use="required"/> 59 <xsd:attribute name="Function" type="xsd:string" use="required"/> 60 </xsd:complexType> 61 61 62 62 </xsd:schema> -
code/branches/presentation2012merge/data/gui/layouts/InGamePickupHUD.layout
r7163 r9272 2 2 3 3 <GUILayout> 4 <Window Type="DefaultWindow" Name="orxonox/InGamePickupHUD_RootWindow" > 5 <Property Name="InheritsAlpha" Value="False" /> 6 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 7 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" /> 8 <Window Type="TaharezLook/StaticImage" Name="orxonox/InGamePickupHUD_Overview" > 9 <Property Name="Font" Value="BlueHighway-12" /> 10 <Property Name="Text" Value="Pickup List" /> 11 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 12 <Property Name="UnifiedAreaRect" Value="{{0,5},{0.15,0},{0.2,0},{0.45,0}}" /> 13 <Property Name="Alpha" Value="0.3" /> 14 <!--Event Name="Clicked" Function="InGameMenu.button_return_clicked"/--> 15 <Window Type="TaharezLook/StaticText" Name="orxonox/InGamePickupHUD_PickupTitle" > 16 <Property Name="Alpha" Value="0.8"/> 17 <Property Name="Text" Value="Pickup List" /> 18 <Property Name="Font" Value="BlueHighway-10" /> 19 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 20 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,-20},{0,20}}" /> 21 </Window> 22 <Window Type="TaharezLook/Button" Name="orxonox/InGamePickupHUD_closeButton" > 23 <Property Name="Alpha" Value="0.8" /> 24 <Property Name="Font" Value="BlueHighway-12" /> 25 <Property Name="Text" Value="X" /> 26 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 27 <Property Name="UnifiedAreaRect" Value="{{1,-20},{0,0},{1,0},{0,20}}" /> 28 <!-- alle Grössen / anordnungen angepasst - da überschneidungen von absoluten 29 und relativen Positionsangaben (problematisch bei kleinen auflösungen) --> 30 <Event Name="Clicked" Function="InGamePickupHUD.close_button_clicked"/> 31 </Window> 32 <Window Type="TaharezLook/Listbox" Name="orxonox/InGamePickupHUD_PickupListBox"> 33 <Property Name="Alpha" Value="0.8" /> 34 <Property Name="Font" Value="BlueHighway-12" /> 35 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 36 <Property Name="UnifiedAreaRect" Value="{{0,5},{0,25},{1,-5},{1,-5}}" /> 37 <!-- 38 <Window Type="TaharezLook/ListboxItem" Name="orxonox/InGamePickupHUD_TestPickupOne"> 39 <Property Name="Alpha" Value="0.8" /> 40 <Property Name="Font" Value="BlueHighway-12" /> 41 <Property Name="Text" Value="First Pickup" /> 42 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 43 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{0,30},{1,0}}" /> 44 </Window> 45 --> 46 </Window> 47 48 </Window> 49 50 51 </Window> 52 4 <Window Type="DefaultWindow" Name="orxonox/InGamePickupHUD_RootWindow" > 5 <Property Name="InheritsAlpha" Value="False" /> 6 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 7 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" /> 8 <Window Type="TaharezLook/StaticImage" Name="orxonox/InGamePickupHUD_Overview" > 9 <Property Name="Font" Value="BlueHighway-12" /> 10 <Property Name="Text" Value="Pickup List" /> 11 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 12 <Property Name="UnifiedAreaRect" Value="{{0,5},{0.15,0},{0.2,0},{0.45,0}}" /> 13 <Property Name="Alpha" Value="0.3" /> 14 <!--Event Name="Clicked" Function="InGameMenu.button_return_clicked"/--> 15 <Window Type="TaharezLook/StaticText" Name="orxonox/InGamePickupHUD_PickupTitle" > 16 <Property Name="Alpha" Value="0.8"/> 17 <Property Name="Text" Value="Pickup List" /> 18 <Property Name="Font" Value="BlueHighway-10" /> 19 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 20 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,-20},{0,20}}" /> 21 </Window> 22 <Window Type="TaharezLook/Button" Name="orxonox/InGamePickupHUD_closeButton" > 23 <Property Name="Alpha" Value="0.8" /> 24 <Property Name="Font" Value="BlueHighway-12" /> 25 <Property Name="Text" Value="X" /> 26 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 27 <Property Name="UnifiedAreaRect" Value="{{1,-20},{0,0},{1,0},{0,20}}" /> 28 <!-- alle Grössen / anordnungen angepasst - da überschneidungen von absoluten 29 und relativen Positionsangaben (problematisch bei kleinen auflösungen) --> 30 <Event Name="Clicked" Function="InGamePickupHUD.close_button_clicked"/> 31 </Window> 32 <Window Type="TaharezLook/Listbox" Name="orxonox/InGamePickupHUD_PickupListBox"> 33 <Property Name="Alpha" Value="0.8" /> 34 <Property Name="Font" Value="BlueHighway-12" /> 35 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 36 <Property Name="UnifiedAreaRect" Value="{{0,5},{0,25},{1,-5},{1,-5}}" /> 37 <!-- 38 <Window Type="TaharezLook/ListboxItem" Name="orxonox/InGamePickupHUD_TestPickupOne"> 39 <Property Name="Alpha" Value="0.8" /> 40 <Property Name="Font" Value="BlueHighway-12" /> 41 <Property Name="Text" Value="First Pickup" /> 42 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 43 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{0,30},{1,0}}" /> 44 </Window> 45 --> 46 </Window> 47 </Window> 48 </Window> 53 49 </GUILayout> -
code/branches/presentation2012merge/data/gui/layouts/ShipSelectionMenu.layout
r9271 r9272 9 9 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" /> 10 10 <Property Name="BackgroundEnabled" Value="False" /> 11 <!-- --> 11 <!-- --> 12 12 <Window Type="MenuWidgets/StaticText" Name="orxonox/ShipSelectionWindow" > 13 13 <Property Name="Text" Value="ShipSelection" /> … … 17 17 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 18 18 <Property Name="VertFormatting" Value="TopAligned" /> 19 <Property Name="UnifiedAreaRect" Value="{{0.2,0},{0.15,0},{0.8,0},{0.7,0}}" /> 19 <Property Name="UnifiedAreaRect" Value="{{0.2,0},{0.15,0},{0.8,0},{0.7,0}}" /> 20 20 <Window Type="MenuWidgets/TabControl" Name="orxonox/ShipSelectionTabControl" > 21 21 <Property Name="TabHeight" Value="{0,26.4388}" /> 22 22 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 23 23 <Property Name="TabPanePosition" Value="Top" /> 24 25 26 </Window> 27 28 29 24 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.1,0},{0.95,0},{0.925,0}}" /> 25 26 </Window> 27 28 <!-- TODO: Ship Description and Image 29 <Window Type="MenuWidgets/StaticImage" Name="orxonox/ShipSelectionShipImage" > 30 30 <Property Name="AlwaysOnTop" Value="True" /> 31 31 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> … … 38 38 <Property Name="HorzScrollbar" Value="True" /> 39 39 <Property Name="UnifiedAreaRect" Value="{{0.1,0},{0.725,0},{0.9,0},{0.875,0}}" /> 40 </Window>--> 41 40 </Window>--> 41 42 42 </Window> 43 43 <Window Type="MenuWidgets/Button" Name="orxonox/ShipSelectionStartButton" > … … 48 48 </Window> 49 49 <!-- TODO: set ship properties 50 50 <Window Type="MenuWidgets/Button" Name="orxonox/ShipSelectionConfigButton" > 51 51 <Property Name="Text" Value="Configure" /> 52 52 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> … … 54 54 <Property Name="Disabled" Value="True" /> 55 55 <Event Name="Clicked" Function="ShipSelectionMenu.ShipSelectionConfigButton_clicked"/> 56 </Window> --> 56 </Window> --> 57 57 <Window Type="MenuWidgets/Button" Name="orxonox/ShipSelectionBackButton" > 58 58 <Property Name="Text" Value="Back" /> -
code/branches/presentation2012merge/data/gui/scripts/ShipSelectionMenu.lua
r9271 r9272 12 12 -- Windows 13 13 dircmd = "dir /b/s" 14 end]] 15 P.createFilterTab("All Ships") 14 end]] 15 P.createFilterTab("All Ships") 16 16 end 17 17 … … 19 19 P.shipList = {} 20 20 for line in io.lines("../levels/templates/.shipmodels") do --checks if shipmodel is included in level file 21 22 23 24 end 21 if selectedlevel:hasShip(string.lower(line)) then 22 P.shipList[#P.shipList+1] = string.lower(line) 23 end 24 end 25 25 end 26 26 … … 46 46 tabName = "orxonox/ShipSelectionLevelTab" 47 47 -- create new tab window with desired name 48 listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName)) 48 listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName)) 49 49 listbox:setText(name) 50 50 listbox:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}") 51 --[[TODO: smaller list if image and description is implemented. 52 listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.675,0}}") --]] 51 --[[TODO: smaller list if image and description is implemented. 52 listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.675,0}}") --]] 53 53 listbox:setProperty("UnifiedAreaRect", "{{0,0},{0,0},{1,0},{1,0}}") 54 54 -- fill listbox with items … … 107 107 108 108 if (selectedlevel ~= nil and P.ShipSelectionGetSelectedModel() ~= nil) then 109 109 selectedlevel:selectShip(P.ShipSelectionGetSelectedModel()) 110 110 orxonox.execute("startGame " .. "_temp.oxw") 111 111 hideAllMenuSheets() 112 112 else 113 113 orxonox.execute("orxout user_warning no ship model selected or no tagged shipmodel installed") 114 114 end 115 115 end … … 128 128 function P.ShipSelectionBackButton_clicked(e) 129 129 orxonox.execute("keyESC") 130 end 130 end 131 131 132 132 return P -
code/branches/presentation2012merge/data/gui/scripts/SingleplayerMenu.lua
r9269 r9272 10 10 function P.onLoad() 11 11 P.createLevelList() 12 12 13 13 -- create tabs with desired tab as argument (nil for all) 14 14 P.createFilterTab("Gametypes", "gametype") … … 19 19 P.createFilterTab("Tests", "test") 20 20 P.createFilterTab("Show All", nil) 21 21 22 22 -- update description and screenshot boxes 23 23 P.SingleplayerSelectionChanged() 24 24 25 25 --buttons are arranged in a 1x3 matrix 26 26 P:setButton(1, 1, { … … 48 48 level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index) 49 49 if (level ~= nil and level:getXMLFilename() ~= "_temp.oxw") then 50 50 --os.execute("echo " .. level:getXMLFilename() .." >> ~/outputorx") 51 51 local levelXMLFilename = level:getXMLFilename() 52 52 -- create an imageset for each screenshot … … 151 151 orxonox.execute("startGame " .. selectedlevel:getXMLFilename()) 152 152 hideAllMenuSheets() 153 153 end 154 154 end 155 155 end -
code/branches/presentation2012merge/data/levels/Spacerace2.oxw
r9271 r9272 12 12 13 13 include("templates/spaceshipAssff.oxt") 14 14 15 15 ?> 16 16 … … 37 37 <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"/> 38 38 39 40 41 <checkpoints> 42 43 <attached>44 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />45 </attached>46 <collisionShapes>47 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" />48 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" />49 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" />50 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" />51 </collisionShapes>52 </RaceCheckPoint>53 54 <RaceCheckPoint name="checkpoint2" position="0,2100,2300" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="1" islast="false" nextcheckpoints="3,-1,-1">55 <attached>56 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />57 </attached>58 <collisionShapes>59 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" />60 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" />61 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" />62 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" />63 </collisionShapes>64 </RaceCheckPoint>65 66 <RaceCheckPoint name="checkpoint3" position="0,700,2700" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">67 <attached>68 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />69 </attached>70 <collisionShapes>71 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" />72 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" />73 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" />74 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" />75 </collisionShapes>76 </RaceCheckPoint>77 78 <RaceCheckPoint name="checkpoint4" position="0,-400,300" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="3" islast="true">79 <attached>80 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />81 </attached>82 <collisionShapes>83 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" />84 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" />85 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" />86 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" />87 </collisionShapes>88 </RaceCheckPoint>89 </checkpoints>90 </SpaceRaceManager>91 92 93 <SpaceShip position="0,0,200" lookat="0,0,0">39 40 <SpaceRaceManager> 41 <checkpoints> 42 <RaceCheckPoint name="checkpoint1" position="0,-2000,1000" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="0" islast="false" nextcheckpoints="1,2,-1"> 43 <attached> 44 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 45 </attached> 46 <collisionShapes> 47 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" /> 48 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" /> 49 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" /> 50 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" /> 51 </collisionShapes> 52 </RaceCheckPoint> 53 54 <RaceCheckPoint name="checkpoint2" position="0,2100,2300" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="1" islast="false" nextcheckpoints="3,-1,-1"> 55 <attached> 56 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 57 </attached> 58 <collisionShapes> 59 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" /> 60 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" /> 61 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" /> 62 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" /> 63 </collisionShapes> 64 </RaceCheckPoint> 65 66 <RaceCheckPoint name="checkpoint3" position="0,700,2700" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1"> 67 <attached> 68 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 69 </attached> 70 <collisionShapes> 71 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" /> 72 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" /> 73 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" /> 74 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" /> 75 </collisionShapes> 76 </RaceCheckPoint> 77 78 <RaceCheckPoint name="checkpoint4" position="0,-400,300" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="3" islast="true"> 79 <attached> 80 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 81 </attached> 82 <collisionShapes> 83 <BoxCollisionShape position="0,0,55" halfExtents="55, 10, 10" /> 84 <BoxCollisionShape position="0,0,-55" halfExtents="55, 10, 10" /> 85 <BoxCollisionShape position="55,0,0" halfExtents="10, 10, 55" /> 86 <BoxCollisionShape position="-55,0,0" halfExtents="10, 10, 55" /> 87 </collisionShapes> 88 </RaceCheckPoint> 89 </checkpoints> 90 </SpaceRaceManager> 91 92 93 <SpaceShip position="0,0,200" lookat="0,0,0"> 94 94 <templates> 95 95 <Template link=spaceshipassff /> … … 202 202 203 203 204 204 205 205 </Scene> 206 206 </Level> -
code/branches/presentation2012merge/data/levels/SurfaceRacePresentation.oxw
r9271 r9272 16 16 include("templates/spaceshipSpacecruiser.oxt") 17 17 include("templates/pickupRepresentationTemplates.oxt") 18 18 19 19 ?> 20 20 … … 56 56 <Model position="4200,8050,-1000" scale=10 mesh="debris-pile02.mesh" shadow=true /> 57 57 <Model position="4200,8050,-1000" scale=10 mesh="debris-pile03.mesh" shadow=true /> 58 59 58 59 <MovableEntity position="-700,8090,-300" velocity="80,0,0" rotationaxis="1,0,1" rotationrate=200> 60 60 <attached> 61 61 <Model position="0,0,-20" scale=10 mesh="cokebottle.mesh" /> … … 65 65 66 66 <SpaceRaceManager> 67 <checkpoints> 68 69 <attached> 70 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 71 </attached> 72 73 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 74 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 75 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 76 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 77 </collisionShapes> 78 </RaceCheckPoint> 79 80 67 <checkpoints> 68 <RaceCheckPoint name="checkpoint1" position="0,8050,-1000" direction="0,1,0" collisionType="static" scale="4" distance="150" checkpointindex="0" islast="false" nextcheckpoints="1,-1,-1"> 69 <attached> 70 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 71 </attached> 72 <collisionShapes> 73 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 74 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 75 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 76 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 77 </collisionShapes> 78 </RaceCheckPoint> 79 80 <RaceCheckPoint name="checkpoint2" position="1000,8050,-4000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="1" islast="false" nextcheckpoints="2,-1,-1"> 81 81 <attached> 82 82 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 90 90 </RaceCheckPoint> 91 91 92 93 <attached> 94 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 95 </attached> 96 <collisionShapes> 97 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 98 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 99 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 100 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 101 </collisionShapes> 102 </RaceCheckPoint> 103 104 92 <RaceCheckPoint name="checkpoint3" position="3000,8050,-4000" direction="0,1,0" roll="-45" collisionType="static" scale="4" distance="150" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1"> 93 <attached> 94 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 95 </attached> 96 <collisionShapes> 97 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 98 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 99 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 100 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 101 </collisionShapes> 102 </RaceCheckPoint> 103 104 <RaceCheckPoint name="checkpoint4" position="4000,8050,-1000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="3" islast="false" nextcheckpoints="4,-1,-1"> 105 105 <attached> 106 106 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 114 114 </RaceCheckPoint> 115 115 116 116 <RaceCheckPoint name="checkpoint5" position="4000,8050,0" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1"> 117 117 <attached> 118 118 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 126 126 </RaceCheckPoint> 127 127 128 129 <attached> 130 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 131 </attached> 132 <collisionShapes> 133 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 134 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 135 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 136 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 137 </collisionShapes> 138 </RaceCheckPoint> 139 140 128 <RaceCheckPoint name="checkpoint6" position="3000,8050,1000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1"> 129 <attached> 130 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 131 </attached> 132 <collisionShapes> 133 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 134 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 135 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 136 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 137 </collisionShapes> 138 </RaceCheckPoint> 139 140 <RaceCheckPoint name="checkpoint7" position="0,8050,2000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="150" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1"> 141 141 <attached> 142 142 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 150 150 </RaceCheckPoint> 151 151 152 153 <attached> 154 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 155 </attached> 156 <collisionShapes> 157 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 158 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 159 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 160 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 161 </collisionShapes> 162 </RaceCheckPoint> 163 164 152 <RaceCheckPoint name="checkpoint8" position="-4000,8050,3000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="7" islast="false" nextcheckpoints="8,-1,-1"> 153 <attached> 154 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 155 </attached> 156 <collisionShapes> 157 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 158 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 159 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 160 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 161 </collisionShapes> 162 </RaceCheckPoint> 163 164 <RaceCheckPoint name="checkpoint9" position="-4000,8050,5000" direction="0,1,0" roll="-45" collisionType="static" scale="4" distance="150" checkpointindex="8" islast="false" nextcheckpoints="9,-1,-1"> 165 165 <attached> 166 166 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 174 174 </RaceCheckPoint> 175 175 176 177 <attached> 178 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 179 </attached> 180 <collisionShapes> 181 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 182 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 183 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 184 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 185 </collisionShapes> 186 </RaceCheckPoint> 187 188 189 <attached> 190 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 191 </attached> 192 <collisionShapes> 193 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 194 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 195 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 196 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 197 </collisionShapes> 198 </RaceCheckPoint> 199 200 176 <RaceCheckPoint name="checkpoint10" position="-3000,8050,6000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="150" checkpointindex="9" islast="false" nextcheckpoints="10,-1,-1"> 177 <attached> 178 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 179 </attached> 180 <collisionShapes> 181 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 182 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 183 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 184 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 185 </collisionShapes> 186 </RaceCheckPoint> 187 188 <RaceCheckPoint name="checkpoint11" position="0,8050,6000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="120" checkpointindex="10" islast="false" nextcheckpoints="11,-1,-1"> 189 <attached> 190 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 191 </attached> 192 <collisionShapes> 193 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 194 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 195 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 196 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 197 </collisionShapes> 198 </RaceCheckPoint> 199 200 <RaceCheckPoint name="checkpoint12" position="6000,8050,6000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="11" islast="false" nextcheckpoints="12,-1,-1"> 201 201 <attached> 202 202 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 210 210 </RaceCheckPoint> 211 211 212 213 <attached> 214 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 215 </attached> 216 <collisionShapes> 217 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 218 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 219 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 220 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 221 </collisionShapes> 222 </RaceCheckPoint> 223 224 212 <RaceCheckPoint name="checkpoint13" position="5500,8050,3000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="12" islast="false" nextcheckpoints="13,-1,-1"> 213 <attached> 214 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 215 </attached> 216 <collisionShapes> 217 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 218 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 219 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 220 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 221 </collisionShapes> 222 </RaceCheckPoint> 223 224 <RaceCheckPoint name="checkpoint14" position="6000,8050,-5000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="13" islast="true" > 225 225 <attached> 226 226 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> … … 238 238 <SpawnPoint team=0 position="0,8050,0" lookat="0,8000,-8000" spawnclass=SpaceShip pawndesign=shipselection /> 239 239 240 241 240 241 <!-- -----------------------Zylinder---------------------------- --> 242 242 <StaticEntity position="2750,8050,6000" direction="1,0,0" roll="90" scale="4" collisionType=static mass=100000 friction=0.01 > 243 243 <attached> 244 245 246 247 248 249 250 251 252 </attached> 253 254 255 256 257 258 259 260 261 262 263 264 244 <Model position="0,0,0" mesh="cylinder.mesh" scale3D="100,100,400" /> 245 <!-- 246 <Model position="0,80,600" mesh="testcube.mesh" scale3D="90,18,-600" /> 247 <Model position="0,-80,600" mesh="testcube.mesh" scale3D="90,18,-600" /> 248 <Model position="80,0,600" mesh="testcube.mesh" scale3D="18,90,-600" /> 249 <Model position="-80,0,600" mesh="testcube.mesh" scale3D="18,09,-600" /> 250 --> 251 252 </attached> 253 254 255 <collisionShapes> 256 257 258 <BoxCollisionShape position="0,320,2400" halfExtents="360,72,2400" /> 259 <BoxCollisionShape position="0,-320,2400" halfExtents="360,72,2400" /> 260 <BoxCollisionShape position="320,0,2400" halfExtents="72,360,2400" /> 261 <BoxCollisionShape position="-320,0,2400" halfExtents="72,360,2400" /> 262 263 264 265 265 </collisionShapes> 266 266 … … 270 270 <StaticEntity position="4465,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 > 271 271 <attached> 272 272 <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" /> 273 273 <!-- 274 275 276 277 </attached> 278 279 280 281 282 283 274 <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" /> 275 --> 276 277 </attached> 278 279 280 <collisionShapes> 281 282 283 <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" /> 284 284 285 285 </collisionShapes> … … 289 289 <StaticEntity position="3535,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 > 290 290 <attached> 291 291 <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" /> 292 292 <!-- 293 294 295 296 </attached> 297 298 299 300 301 302 293 <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" /> 294 --> 295 296 </attached> 297 298 299 <collisionShapes> 300 301 302 <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" /> 303 303 304 304 </collisionShapes> … … 309 309 310 310 311 311 <!-- ------------------Boden----------------- --> 312 312 <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 friction=0.01> 313 313 <attached> … … 317 317 <BoxCollisionShape position="0,50,0" halfExtents="8000,8000,8000" />um j?:P"{ 318 318 319 </collisionShapes> 319 </collisionShapes> 320 320 </StaticEntity> 321 321 … … 351 351 for i = 0, max, 1 352 352 do 353 354 355 356 353 x=-12000 354 y=10000 355 z=-12000 356 357 357 ?> 358 358 <?lua -
code/branches/presentation2012merge/data/levels/asteroidField.oxw
r9271 r9272 39 39 40 40 <!-- Belt that's far away *** TURNED OFF FOR PERFORMANCE REASONS *** --> 41 <!-- Generate asteroid field and asteroid belt --> 41 <!-- Generate asteroid field and asteroid belt --> 42 42 <!-- 43 43 <?lua 44 45 44 dofile("includes/asteroidField.lua") 45 asteroidBelt(0, 0, 0, -48, -34, 70, 100, 200, 219900, 210000, 900, 1) 46 46 ?> 47 47 --> … … 50 50 <!-- triple large belt around the planet --> 51 51 <?lua 52 53 52 dofile("includes/asteroidField.lua") 53 asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 7190, 7800, 250, 1) 54 54 ?> 55 55 <?lua 56 57 56 dofile("includes/asteroidField.lua") 57 asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 10000, 11000, 300, 1) 58 58 ?> 59 59 <?lua 60 61 60 dofile("includes/asteroidField.lua") 61 asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 14000, 15000, 350, 1) 62 62 ?> 63 63 … … 95 95 96 96 97 97 98 98 </Scene> 99 99 </Level> -
code/branches/presentation2012merge/data/levels/dynamicMatch.oxw
r9016 r9272 90 90 <attached> 91 91 <Model position="0,0,0" scale="<?lua print(j * 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh"> 92 92 <attached><!-- ---------asteroid fog----- --> 93 93 <ParticleEmitter position="0,0,0" source="Orxonox/Steam" /> 94 94 </attached> 95 95 </Model> 96 96 </attached> 97 97 <?lua if i == 5 then ?><collisionShapes> -
code/branches/presentation2012merge/data/levels/includes/CuboidSpaceStation.lua
r7163 r9272 1 1 ---------------------------------------------------------------------------------------------------- 2 2 -- This lua script creates a totally random generated space station for the orxonox computer game!-- 3 -- (c) Wallah 2008, published under GPL licence! 3 -- (c) Wallah 2008, published under GPL licence! -- 4 4 ---------------------------------------------------------------------------------------------------- 5 5 6 6 -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7 -- IMPORTANT: If you need more parameters, do the following: copy the actual function (just the headline and the end statement) to the end of the file, 7 -- IMPORTANT: If you need more parameters, do the following: copy the actual function (just the headline and the end statement) to the end of the file, -- 8 8 -- like I did with createSpaceStation() and let that function call the new function where you can modify the parameters. For all parameters which the old function-- 9 9 -- doesn't have you just give the standard default values, which I have defined. This is to make sure, that anyone else who uses the old function can still use it-- 10 -- the same way he/she always did. If you want a function with less parameters, just create a new one at the end of the file and call this function with some 11 -- default values. REMEMBER: Function overloading is not possible, be sure to call your function differently from others already existing ones. 10 -- the same way he/she always did. If you want a function with less parameters, just create a new one at the end of the file and call this function with some -- 11 -- default values. REMEMBER: Function overloading is not possible, be sure to call your function differently from others already existing ones. -- 12 12 -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 13 13 14 14 -- This function creates a randomly generated space station. 15 15 -- The first argument ranSeed, must be 0, or a positive Integer, if it is 0 your space station is always chosen randomly, if you give an integer, 16 -- 16 -- your space station will be generated randomly, but once you have the space station it will always be the same. 17 17 -- The argument xLength defines how large the space station will be into the x-direction. 18 18 -- The argument xVar defines how much the space station will vary at the ends in x-direction, this is so that the station is no cube. … … 37 37 -- Create a randomseed, so that the math.random() function is actually random. 38 38 if ranSeed == 0 then 39 39 math.randomseed(os.time()) 40 40 else 41 41 math.randomseed(ranSeed) 42 42 end 43 43 -- End create randomseed. … … 52 52 sSSize=30 53 53 if xLength>=yLength and xLength>=zLength then 54 54 sSSize=xLength+20 55 55 elseif yLength>=xLength and yLength>=zLength then 56 56 sSSize=yLength+20 57 57 elseif zLength>=xLength and zLength>=yLength then 58 58 sSSize=zLength+20 59 59 end 60 60 -- Define how many parts the space station has, this value has to be exact, so be sure to increment it if you're adding a new part. … … 78 78 pDim=6 79 79 -- Define the griddimension, be sure this value matches the size of a single space station part plus the size of a connection part, which means your parts must be: 80 -- 80 -- integer*(gridDim-connectionSize), then integer tells you how many griddimensions your part is. 81 81 gridDim=2.25 82 82 -- End define global parameters. … … 89 89 -- The parameters x,y,z are the axis of the space station, which iterate to sSSize, the maximal size of the space station. 90 90 -- The griddimension, this word I will use later, means that the distance of a point to the next point is gridDim in the game, so the absolute x-axis is x*gridDim*sSScale, 91 -- 91 -- and so on for the other dimensions y and z. 92 92 -- grid[x][y][z][0] contains 0 if there is no part at the position (x,y,z), otherwise 1. 93 93 -- grid[x][y][z][1] contains 0 if there is no connection from (x,y,z) in x-direction, "+" if there is one in the positive x-direction, 94 -- 94 -- "-" if there is one in the negative x-direction, "+-" if there are in both x-directions. 95 95 -- grid[x][y][z][2] contains 0 if there is no connection from (x,y,z) in y-direction, "+" if there is one in the positive y-direction, 96 -- 96 -- "-" if there is one in the negative y-direction, "+-" if there are in both y-directions. 97 97 -- grid[x][y][z][3] contains 0 if there is no connection from (x,y,z) in z-direction, "+" if there is one in the positive z-direction, 98 -- 98 -- "-" if there is one in the negative z-direction, "+-" if there are in both z-directions. 99 99 grid = {} 100 100 for x=-math.floor(sSSize/2),math.floor(sSSize/2) do 101 102 103 104 105 106 107 108 109 110 101 grid[x] = {} 102 for y=-math.floor(sSSize/2),math.floor(sSSize/2) do 103 grid[x][y]= {} 104 for z=-math.floor(sSSize/2),math.floor(sSSize/2) do 105 grid[x][y][z]={} 106 for i=0,3 do 107 grid[x][y][z][i]=0 108 end 109 end 110 end 111 111 end 112 112 -- End create 4-dim grid. … … 119 119 -- The first parameter i, tells us how many parts fit into the array, so it iterates from 1 to sSParts, each part has his own value i. 120 120 -- The second, third and fourth parameters are the relative coordinates of the part, you have to start at (0,0,0) and be sure you fill the array into the right direction. 121 -- 122 -- 121 -- A short example: your part is 2 griddimensions long and you place it in the game, that the relative coordinate point is at (0,0,0) and the part lies in the positive 122 -- z-axis, then you have to use the coordinate point (0,0,1). 123 123 -- The fifth parameter is an array with size 4, at index=0, you have to set 1 if your part covers the gridpoint at (x,y,z), otherwise 0. 124 -- 124 -- At index=1,2,3 you define the possible connection directions (1 for x, 2 for y and 3 for z), be sure to use the notation from above (0, "+-", "+", "-"). 125 125 bodyParts={} 126 126 for i=1,sSParts do 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 127 bodyParts[i]={} 128 for x=-math.floor(pDim/2),math.floor(pDim/2) do 129 bodyParts[i][x]={} 130 for y=-math.floor(pDim/2),math.floor(pDim/2) do 131 bodyParts[i][x][y]={} 132 for z=-math.floor(pDim/2),math.floor(pDim/2) do 133 bodyParts[i][x][y][z]={} 134 for k=0,3 do 135 bodyParts[i][x][y][z][k]=0 136 end 137 end 138 end 139 end 140 -- This contains the name of the mesh file. 141 bodyParts[i][0][0][0][4]="" 142 -- This contains the first possible rotation of your part, pitch=... yaw=... roll=... . 143 bodyParts[i][0][0][0][5]="" 144 -- This contains the second possible rotation of your part, pitch=... yaw=... roll=... . 145 bodyParts[i][0][0][0][6]="" 146 -- This contains the third possible rotation of your part, pitch=... yaw=... roll=... . 147 bodyParts[i][0][0][0][7]="" 148 -- Contains the movement rotation, rotationaxis=... rotationrate=... . 149 bodyParts[i][0][0][0][8]="" 150 -- Contains the attachment, if your part has an attachment, e.g. <ParticleEmitter .../>. 151 bodyParts[i][0][0][0][9]="" 152 -- Contains how many of this part you want to attach to your space station. 153 bodyParts[i][0][0][0][10]=1 154 154 end 155 155 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 193 193 194 194 -- Insert the CuboidConnectionBody, it is three griddimensions long and one wide and high and can have only connections at griddimension 1 195 -- 195 -- (except the side in direction of griddimension 2) and griddimension 3 (except the side in direction of griddimension 2). 196 196 bodyParts[3][0][0][0][4]="CuboidConnBody.mesh" 197 197 bodyParts[3][0][0][0][5]="pitch=-90" … … 373 373 --This function actualizes the grid, which I have to call always after I have added a new part to the space station. 374 374 function actualizeGrid(Index,x,y,z) 375 376 377 378 379 380 381 382 383 384 385 375 for i=math.floor(-pDim/2)+1,math.floor(pDim/2) do 376 for j=math.floor(-pDim/2)+1,math.floor(pDim/2) do 377 for k=math.floor(-pDim/2)+1,math.floor(pDim/2) do 378 if bodyParts[Index][i][j][k][0] == 1 then 379 for l=0,3 do 380 grid[x+i][y+j][z+k][l] = bodyParts[Index][i][j][k][l] 381 end 382 end 383 end 384 end 385 end 386 386 end 387 387 -- End actualizeGrid. … … 390 390 -- If the part fits there it returns 1, otherwise 0. 391 391 function checkPart(Index,x,y,z) 392 393 394 395 396 397 --which means that the part doesn't fit there.398 399 400 401 402 403 404 392 check=1 393 for i=math.floor(-pDim/2)+1,math.floor(pDim/2) do 394 for j=math.floor(-pDim/2)+1,math.floor(pDim/2) do 395 for k=math.floor(-pDim/2)+1,math.floor(pDim/2) do 396 -- If the part occupies the position (i,j,k), the grid must be empty there ((x+i, y+j, z+k)==0), if not, check is zero, 397 -- which means that the part doesn't fit there. 398 if bodyParts[Index][i][j][k][0] == 1 and grid[x+i][y+j][z+k][0] == 1 then 399 check=0 400 end 401 end 402 end 403 end 404 return check 405 405 end 406 406 -- End checkPart function. … … 408 408 -- This function prints the model with tempPartIndex in the bodyParts array at position lx,ly,lz. 409 409 -- If you need to rotate the model around his own axis, then you have to set movEntity true and define the details of the rotation in 410 -- 410 -- bodyParts[tempPartIndex][0][0][0][8]. 411 411 -- If your model needs to be rotated like bodyParts[tempPartIndex][0][0][0][5], then side must be 1, for bodyParts[tempPartIndex][0][0][0][6] side must be 2, 412 -- 412 -- for bodyParts[tempPartIndex][0][0][0][7] side must be 3. 413 413 function printModel(lx,ly,lz,tempPartIndex,movEntity,side) 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 414 if movEntity == true then 415 print("<MovableEntity scale=1 position=\"") print(lx*gridDim*sSScale) print(",") print(ly*gridDim*sSScale) print(",") print(lz*gridDim*sSScale) print("\" ") 416 print(bodyParts[tempPartIndex][0][0][0][8]) print(">") 417 print("<attached>") 418 lx=0 ly=0 lz=0 419 end 420 421 print("<Model position=\"") print(lx*gridDim*sSScale) print(",") print(ly*gridDim*sSScale) print(",") print(lz*gridDim*sSScale) 422 print("\" scale=") print(sSScale) print(" mesh= \"") print(bodyParts[tempPartIndex][0][0][0][4]) print("\"") 423 424 if side == 1 then 425 print(bodyParts[tempPartIndex][0][0][0][5]) print(">") 426 elseif side == 2 then 427 print(bodyParts[tempPartIndex][0][0][0][6]) print(">") 428 elseif side == 3 then 429 print(bodyParts[tempPartIndex][0][0][0][7]) print(">") 430 end 431 432 print("<attached>") 433 print(bodyParts[tempPartIndex][0][0][0][9]) 434 print("</attached>") 435 436 print("</Model>") 437 438 if movEntity == true then 439 print("</attached>") 440 print("</MovableEntity>") 441 end 442 442 end 443 443 -- End function printModel(). … … 446 446 -- The arguments lx,ly,lz are the coordinates of the grid, where you want to set the part. 447 447 -- The arguments xAxis,yAxis,zAxis can be 0 or 1, but only one argument out of the three can be 1. This means two of them must always be zero. You have to set xAxis to one, 448 -- 449 -- 448 -- if your part is attached to a side, which faces into the x-direction (negative or positive, this is later specified with Dir), that means the x-Axis is a normal vector 449 -- of the side to which you want to attach the part. The same for yAxis and zAxis. 450 450 -- The argument Dir must be 1 if your side, where you want to attach the part, faces into the positive direction, -1 if the side faces into the negative direction. The side 451 -- 452 -- 451 -- faces into the positive direction means, that the side of the side where the part will be attached is directed into the direction of the positive direction of the 452 -- corresponding axis. 453 453 -- The argument index is the index of the part for the bodyParts array. 454 454 -- The argument printMovEnt must be false if your part doesn't need to be attached to an extra MovableEntity. If your part must be attached to an extra MovableEntity 455 -- 455 -- this argument must be true. The extra MovableEntity is used to rotate the part around his own axis, or something like that. 456 456 -- The argument printSide is like the argument side of the printModel() function. It defines how your part will be rotated. Read the commentary there. 457 457 -- The function returns 0 if the part couldn't be set, because it did not fit there or there was no side to attach the part. It returns 1 if the part is successfully set. 458 458 function setPart(lx,ly,lz,xAxis,yAxis,zAxis,Dir,index,printMovEnt,printSide) 459 459 460 461 462 463 464 --a connection into the positive direction. Otherwise I look from the negative side and so the part of the station must have a connection into the negative direction.465 466 467 468 469 470 471 --at the next position is a part which can have a connection into the direction from where I look.472 473 474 475 476 477 478 479 480 481 482 483 460 partSet=0 461 -- For the bodyParts array I use 1 as x-, 2 as y- and 3 as z-Axis for the definition in which directions a part can have connections. 462 coord=1*xAxis+2*yAxis+3*zAxis 463 -- If I try to attach the part from the positive direction to the side of the space station, the part of the station (where I want to attach the new part) must have 464 -- a connection into the positive direction. Otherwise I look from the negative side and so the part of the station must have a connection into the negative direction. 465 if Dir==1 then 466 conn="+" 467 elseif Dir==-1 then 468 conn="-" 469 end 470 -- I look from the direction defined through Dir, and here I check, whether I have reached a side of the space station, which means at position lx,ly,lz is nothing and 471 -- at the next position is a part which can have a connection into the direction from where I look. 472 if grid[lx][ly][lz][0] == 0 and grid[lx+(-1*xAxis*Dir)][ly+(-1*yAxis*Dir)][lz+(-1*zAxis*Dir)][0] == 1 and (grid[lx+(-1*xAxis*Dir)][ly+(-1*yAxis*Dir)][lz+(-1*zAxis*Dir)][coord]=="+-" or grid[lx+(-1*xAxis*Dir)][ly+(-1*yAxis*Dir)][lz+(-1*zAxis*Dir)][coord]==conn) then 473 -- This checks whether the part fits at that position or not. 474 check=checkPart(index,lx,ly,lz) 475 if check == 1 then 476 -- This prints the part. 477 printModel(lx,ly,lz,index,printMovEnt,printSide) 478 partSet=1 479 -- This actualizes the grid array with the values of the array bodyParts at the position index. 480 actualizeGrid(index,lx,ly,lz) 481 end 482 end 483 return partSet 484 484 end 485 485 -- End function setPart(). … … 490 490 -- The argument parts is the number of different parts which you want to attach to a side. 491 491 function spiralSet(xAxis,yAxis,zAxis,Dir,index,parts,printMovEnt,printSide) 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 492 if index[0] ~= false then 493 -- The array vector contains the actual position where you try to set the part. vector[0],vector[1] and vector[3] contains the x,y,z-coordinate. 494 vector={} 495 -- This must be done, because there are different sides from where I try to attach a part. 496 coord1=1*yAxis+2*zAxis 497 coord2=math.mod(coord1+1,3) 498 coord3=math.mod(coord2+1,3) 499 500 for pc=1,parts do 501 tempIndex = index[pc] 502 for eachPart=1,bodyParts[tempIndex][0][0][0][10] do 503 partSet=0 504 vector[coord1]=math.floor(Dir*sSSize/2)-2*Dir 505 while vector[coord1]~=math.floor(-1*Dir*sSSize/2)+2*Dir and partSet==0 do 506 round=0 507 while round<=math.floor(sSSize/2)-2 and partSet==0 do 508 vector[coord2]=round 509 vector[coord3]=-round 510 while vector[coord3]<=round and partSet==0 do 511 partSet=setPart(vector[0],vector[1],vector[2],xAxis,yAxis,zAxis,Dir,tempIndex,printMovEnt,printSide) 512 vector[coord3]=vector[coord3]+1 513 end 514 while vector[coord2]>=-round and partSet==0 do 515 partSet=setPart(vector[0],vector[1],vector[2],xAxis,yAxis,zAxis,Dir,tempIndex,printMovEnt,printSide) 516 vector[coord2]=vector[coord2]-1 517 end 518 while vector[coord3]>-round and partSet==0 do 519 partSet=setPart(vector[0],vector[1],vector[2],xAxis,yAxis,zAxis,Dir,tempIndex,printMovEnt,printSide) 520 vector[coord3]=vector[coord3]-1 521 end 522 while vector[coord2]<=round and partSet==0 do 523 partSet=setPart(vector[0],vector[1],vector[2],xAxis,yAxis,zAxis,Dir,tempIndex,printMovEnt,printSide) 524 vector[coord2]=vector[coord2]+1 525 end 526 round=round+1 527 end 528 vector[coord1]=vector[coord1]-Dir 529 end 530 end 531 end 532 end 533 533 end 534 534 -- End function spiralSet(). … … 554 554 xMax=math.random(math.floor(xLength/2),math.floor(xLength/2)+xVar) 555 555 while x<xMax do 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 556 -- The same for the y- and z-direction. 557 y=math.random(-math.floor(yLength/2),-math.floor(yLength/2)+yVar) 558 yMax=math.random(math.floor(yLength/2),math.floor(yLength/2)+yVar) 559 while y<yMax do 560 yMax=math.random(math.floor(yLength/2),math.floor(yLength/2)+yVar) 561 z=math.random(-math.floor(zLength/2),-math.floor(zLength/2)+zVar) 562 zMax=math.random(math.floor(zLength/2),math.floor(zLength/2)+zVar) 563 while z<zMax do 564 -- This loop choses a bodypart, which fits at position (x,y,z). 565 -- If after the fifth time the part does still not fit we terminate the loop and set no part at postition (x,y,z). 566 partSet=0 567 counter=0 568 while counter<5 and partSet==0 do 569 -- This choses randomly a bodyPartIndex, which is the index used for the parts in the array bodyParts. 570 tempBodyPartIndex=math.random(1,sSBodyParts) 571 check=checkPart(tempBodyPartIndex,x,y,z) 572 -- If check == 1, this means that the part fits there, so we put it there and break the while true loop, to go on. 573 if check == 1 then 574 -- This prints the chosen part at position (x*gridDim*sSScale,y*gridDim*sSScale,z*gridDim*sSScale). 575 printModel(x,y,z,tempBodyPartIndex,false,1) 576 -- This actualizes the grid array with the values of the array bodyParts at the position tempBodyPartIndex, which is our randomly chosen part. 577 actualizeGrid(tempBodyPartIndex,x,y,z) 578 partSet=1 579 end 580 counter=counter+1 581 end 582 z=z+1 583 end 584 y=y+1 585 end 586 x=x+1 587 587 end 588 588 -- End attach all bodyparts. … … 593 593 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 594 594 -- Attach backParts, if there are some. 595 595 spiralSet(0,0,1,1,backPartsIndex,backParts,false,1) 596 596 -- End attach backParts. 597 597 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 599 599 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 600 600 -- Attach frontParts, if there are. 601 601 spiralSet(0,0,1,-1,frontPartsIndex,frontParts,false,1) 602 602 -- End attach frontParts. 603 603 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 605 605 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 606 606 -- Attach parts on the left side of the space station. 607 607 spiralSet(1,0,0,-1,leftSidePartsIndex,leftSideParts,true,1) 608 608 -- End attach left side parts. 609 609 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 611 611 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 612 612 -- Attach parts on the right side of the space station. 613 613 spiralSet(1,0,0,1,rightSidePartsIndex,rightSideParts,true,2) 614 614 -- End attach right side parts. 615 615 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 617 617 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 618 618 -- Attach parts on top of the space station. 619 619 spiralSet(0,1,0,1,topPartsIndex,topParts,true,1) 620 620 -- End attach top parts. 621 621 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- … … 627 627 -- This iterates through the whole grid array. 628 628 if connPartsIndex[0] ~= false then 629 630 631 632 633 634 --then it checks if that part can have a connection into the positive x-direction, if it can, it checks if there is a part at (x+1,y,z) and635 --if that part can have a connection into the negative x-direction, if both can, it prints the xml code to set a connection part.636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 629 for x=math.floor(-sSSize/2)+2,math.floor(sSSize/2)-2 do 630 for y=math.floor(-sSSize/2)+2,math.floor(sSSize/2)-2 do 631 for z=math.floor(-sSSize/2)+2,math.floor(sSSize/2)-2 do 632 tempConnPartIndex=connPartsIndex[math.random(1,connParts)] 633 -- This checks whether there has to be a connection part between (x,y,z) and (x+1,y,z) or not. First it checks if there is a part at (x,y,z) and 634 -- then it checks if that part can have a connection into the positive x-direction, if it can, it checks if there is a part at (x+1,y,z) and 635 -- if that part can have a connection into the negative x-direction, if both can, it prints the xml code to set a connection part. 636 if grid[x][y][z][0]==1 and (grid[x][y][z][1]=="+" or grid[x][y][z][1]=="+-") and grid[x+1][y][z][0]==1 and (grid[x+1][y][z][1]=="-" or grid[x+1][y][z][1]=="+-") then 637 -- This prints the connection part, the +1/2 is because the connection is set exactly in the middle of two gridpoints. 638 printModel(x+1/2,y,z,tempConnPartIndex,false,1) 639 end 640 -- The same as in the x-direction, but for the y-direction. 641 if grid[x][y][z][0]==1 and ( grid[x][y][z][2]=="+" or grid[x][y][z][2]=="+-" ) and grid[x][y+1][z][0]==1 and ( grid[x][y+1][z][2]=="-" or grid[x][y+1][z][2]=="+-" ) then 642 printModel(x,y+1/2,z,tempConnPartIndex,false,2) 643 end 644 -- The same as in the x-direction, but for the z-direction. 645 if grid[x][y][z][0]==1 and ( grid[x][y][z][3]=="+" or grid[x][y][z][3]=="+-" ) and grid[x][y][z+1][0]==1 and ( grid[x][y][z+1][3]=="-" or grid[x][y][z+1][3]=="+-" ) then 646 printModel(x,y,z+1/2,tempConnPartIndex,false,3) 647 end 648 end 649 end 650 end 651 651 end 652 652 -- End attach all connectionparts. … … 671 671 -- This function is for the lazy guys, which do not care how the space station looks like, so I use some good standard values. 672 672 function createSpaceStation() 673 673 createSpaceStationPar(0,4,1,2,1,6,1,100) 674 674 end 675 675 -- End createSpaceStaion() function. -
code/branches/presentation2012merge/data/levels/includes/asteroidField.lua
r9271 r9272 1 1 --[[ fog generator 2 2 generates fog 3 4 5 3 posX, posY, posZ - position in space 4 size - size of billboard 5 brightness - [0,1] fog brightness 6 6 --]] 7 7 function generateFog(posX, posY, posZ, size, brightness) 8 9 print("position = \"") 10 print(posX) print(",") 11 print(posY) print(",") 12 print(posZ) print("\" ") 13 14 print(brightness) print(",") 15 print(brightness) print(",") 16 print(brightness) print("\" ") 17 18 19 8 print("<Billboard ") 9 print("position = \"") 10 print(posX) print(",") 11 print(posY) print(",") 12 print(posZ) print("\" ") 13 print("colour=\"") 14 print(brightness) print(",") 15 print(brightness) print(",") 16 print(brightness) print("\" ") 17 print("material=\"Smoke/Smoke\" scale=") 18 print(size) 19 print(" />") 20 20 end 21 21 22 22 --[[ asteroid field generator 23 23 generates asteroid field 24 25 26 27 28 24 posX, posY, posZ - position in space 25 minSize, maxSize - size boundaries of each asteroid 26 radius - size of the cube around position in space 27 count - number of asteroids 28 fog - enable fog 0/1 29 29 --]] 30 30 function asteroidField(posX, posY, posZ, minSize, maxSize, radius, count, fog) 31 for i = 1, count, 1 32 do 33 size = (math.random() * (maxSize - minSize)) + minSize 34 pX = (2 * math.random() * radius) - radius + posX 35 pY = (2 * math.random() * radius) - radius + posY 36 pZ = (2 * math.random() * radius) - radius + posZ 37 print("<StaticEntity ") 38 39 print("position = \"") 40 print(pX) print(",") 41 print(pY) print(",") 42 print(pZ) print("\" ") 43 44 print("scale = \"") print(size) print("\" ") 45 46 print("collisionType = static linearDamping = 0.8 angularDamping = 1 ") 47 print("collisiondamage = 1000 enablecollisiondamage = true>") 48 49 print("<attached>") 50 print("<Model mass=\"") print(size * 10) print("\" ") 51 print("mesh=\"ast") print(math.mod(i,6) + 1) print(".mesh\" />") 52 print("</attached>") 53 54 print("<collisionShapes> ") 55 print("<SphereCollisionShape radius=\"") 56 print(size * 2.5) print("\" />") 57 print("</collisionShapes>") 58 59 print("</StaticEntity>") 60 61 if fog == 1 and i % 5 == 0 then 62 generateFog(pX, pY, pZ, radius*0.04, 0.2) 63 end 64 end 31 for i = 1, count, 1 do 32 size = (math.random() * (maxSize - minSize)) + minSize 33 pX = (2 * math.random() * radius) - radius + posX 34 pY = (2 * math.random() * radius) - radius + posY 35 pZ = (2 * math.random() * radius) - radius + posZ 36 print("<StaticEntity ") 37 38 print("position = \"") 39 print(pX) print(",") 40 print(pY) print(",") 41 print(pZ) print("\" ") 42 43 print("scale = \"") print(size) print("\" ") 44 45 print("collisionType = static linearDamping = 0.8 angularDamping = 1 ") 46 print("collisiondamage = 1000 enablecollisiondamage = true>") 47 48 print("<attached>") 49 print("<Model mass=\"") print(size * 10) print("\" ") 50 print("mesh=\"ast") print(math.mod(i,6) + 1) print(".mesh\" />") 51 print("</attached>") 52 53 print("<collisionShapes> ") 54 print("<SphereCollisionShape radius=\"") 55 print(size * 2.5) print("\" />") 56 print("</collisionShapes>") 57 58 print("</StaticEntity>") 59 60 if fog == 1 and i % 5 == 0 then 61 generateFog(pX, pY, pZ, radius*0.04, 0.2) 62 end 63 end 65 64 end 66 65 … … 68 67 --[[ asteroid belt generator 69 68 generates asteroid belt 70 71 72 73 74 75 69 posX, posY, posZ - position in space 70 yaw, pitch - rotation 71 minSize, maxSize - size boundaries of each asteroid 72 radius0, radius1 - inner/outer radius 73 count - number of asteroids 74 fog - enable fog 0/1 76 75 --]] 77 76 function asteroidBelt(centerX, centerY, centerZ, yaw, pitch, segments, minSize, maxSize, radius0, radius1, count, fog) 78 dPhi = (2 * math.pi) / segments 79 width = math.abs(radius1 - radius0) 80 radius = (radius1 + radius0) / 2 81 segmentCount = count / segments 82 83 print("<StaticEntity collisionType=static yaw=") print(yaw) 84 print(" pitch=") print(pitch) 85 86 print(" position = \"") 87 print(centerX) print(",") 88 print(centerY) print(",") 89 print(centerZ) print("\"") 90 print(">") 91 92 print("<attached>") 93 94 for i = 0, segments - 1, 1 95 do 96 asteroidField((radius * math.cos(i * dPhi)), 97 (radius * math.sin(i * dPhi)), 98 0, minSize, maxSize, width, segmentCount, fog) 99 end 100 101 print("</attached>") 102 print("</StaticEntity>") 77 dPhi = (2 * math.pi) / segments 78 width = math.abs(radius1 - radius0) 79 radius = (radius1 + radius0) / 2 80 segmentCount = count / segments 81 82 print("<StaticEntity collisionType=static yaw=") print(yaw) 83 print(" pitch=") print(pitch) 84 85 print(" position = \"") 86 print(centerX) print(",") 87 print(centerY) print(",") 88 print(centerZ) print("\"") 89 print(">") 90 91 print("<attached>") 92 93 for i = 0, segments - 1, 1 do 94 asteroidField((radius * math.cos(i * dPhi)), 95 (radius * math.sin(i * dPhi)), 96 0, minSize, maxSize, width, segmentCount, fog) 97 end 98 99 print("</attached>") 100 print("</StaticEntity>") 103 101 end -
code/branches/presentation2012merge/data/levels/includes/weaponSettingsFPS.oxi
r8755 r9272 1 1 <weaponslots> 2 2 <WeaponSlot position="0,0,0" yaw=0 pitch=0 roll=0 /> 3 <!-- <WeaponSlot position="-0.5,0.8,2.5" yaw=0 pitch=0 roll=0 /> 3 <!-- 4 <WeaponSlot position="-0.5,0.8,2.5" yaw=0 pitch=0 roll=0 /> 4 5 <WeaponSlot position="15,-1.5,-25" yaw=0 pitch=0 roll=0 /> 5 <WeaponSlot position="0,0,-45" yaw=0 pitch=0 roll=0 /> --> 6 <WeaponSlot position="0,0,-45" yaw=0 pitch=0 roll=0 /> 7 --> 6 8 </weaponslots> 7 9 <weaponsets> … … 11 13 <weapons> 12 14 <WeaponPack firemode=0> 13 15 <links> 14 16 <DefaultWeaponmodeLink firemode=0 weaponmode=0 /> 15 17 <DefaultWeaponmodeLink firemode=1 weaponmode=1 /> 16 18 <DefaultWeaponmodeLink firemode=2 weaponmode=2 /> 17 19 </links> 18 19 20 20 <Weapon> 21 <HsW01 mode=0 munitionpershot=0 delay=0.0 damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.7, -0.3, -3" /> 22 <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20/> 21 23 </Weapon> 22 24 <LaserGun … … 28 30 unlimitedMunition=true 29 31 /> 30 <!-- <LaserGun32 <!--LaserGun 31 33 position="0,0,0" 32 34 munitionType="LaserGunMunition" … … 45 47 speed="600" 46 48 unlimitedMunition=true 47 / >-->49 /--> 48 50 </WeaponPack> 49 51 </weapons> -
code/branches/presentation2012merge/data/levels/lastManStanding.oxw
r9016 r9272 33 33 ?> 34 34 35 <!----- Spawnpoints 35 <!----- Spawnpoints 36 36 <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"/> 37 37 <SpawnPoint team=0 position="-1150,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff /> … … 44 44 45 45 <!-- ------------ middle asteroid -------------- --> 46 <StaticEntity position="0,0,0" collisionType=static> 46 <StaticEntity position="0,0,0" collisionType=static> 47 47 <attached> 48 48 <MovableEntity position="0,20,0" rotationrate="-4.5" rotationaxis="0,1,0" > … … 79 79 <attached> 80 80 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh"> 81 81 </Model> 82 82 </attached> 83 83 <collisionShapes> … … 89 89 <attached> 90 90 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i+3,6) + 1) ?>.mesh"> 91 91 </Model> 92 92 </attached> 93 93 <collisionShapes> … … 99 99 <attached> 100 100 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*5,6) + 1) ?>.mesh"> 101 101 </Model> 102 102 </attached> 103 103 <collisionShapes> … … 109 109 <attached> 110 110 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*13+1,6) + 1) ?>.mesh"> 111 111 </Model> 112 112 </attached> 113 113 <collisionShapes> … … 119 119 <attached> 120 120 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*17,6) + 1) ?>.mesh"> 121 121 </Model> 122 122 </attached> 123 123 <collisionShapes> … … 130 130 <attached> 131 131 <Model position="0,0,0" scale=25 mesh="ast6.mesh"> 132 132 </Model> 133 133 </attached> 134 134 <collisionShapes> -
code/branches/presentation2012merge/data/levels/lastTeamStanding.oxw
r9016 r9272 74 74 <attached> 75 75 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh"> 76 76 </Model> 77 77 </attached> 78 78 <collisionShapes> … … 84 84 <attached> 85 85 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i+3,6) + 1) ?>.mesh"> 86 86 </Model> 87 87 </attached> 88 88 <collisionShapes> … … 94 94 <attached> 95 95 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*5,6) + 1) ?>.mesh"> 96 96 </Model> 97 97 </attached> 98 98 <collisionShapes> … … 104 104 <attached> 105 105 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*13+1,6) + 1) ?>.mesh"> 106 106 </Model> 107 107 </attached> 108 108 <collisionShapes> … … 114 114 <attached> 115 115 <Model position="0,0,0" scale=15 mesh="ast<?lua print( math.mod(i*17,6) + 1) ?>.mesh"> 116 116 </Model> 117 117 </attached> 118 118 <collisionShapes> … … 125 125 <attached> 126 126 <Model position="0,0,0" scale=25 mesh="ast6.mesh"> 127 127 </Model> 128 128 </attached> 129 129 <collisionShapes> -
code/branches/presentation2012merge/data/levels/old/CuboidSpaceStation.oxw
r7679 r9272 1 1 <?lua 2 2 include("HUDTemplates3.oxo") 3 3 ?> 4 4 5 5 <?lua 6 6 include("templates/spaceshipAssff.oxt") 7 7 ?> 8 8 9 9 <Level 10 11 10 name = "SpaceStation test Space!" 11 description = "All the new SpaceStations are created here!" 12 12 > 13 14 15 16 13 <Scene 14 ambientlight = "0.5, 0.5, 0.5" 15 skybox = "Orxonox/Starbox" 16 > 17 17 18 18 … … 20 20 <!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 21 21 <?lua 22 22 dofile("includes/CuboidSpaceStation.lua") 23 23 ?> 24 24 … … 29 29 ---> 30 30 <?lua 31 31 createSpaceStation() 32 32 ?> 33 33 … … 37 37 ---> 38 38 <PositionableEntity scale=1 position="0,0,-5000"> 39 40 41 42 43 39 <attached> 40 <?lua 41 createSpaceStation() 42 ?> 43 </attached> 44 44 </PositionableEntity> 45 45 … … 49 49 ---> 50 50 <MovableEntity scale=1 position="5000,0,0" velocity="50,0,0" yaw=-90> 51 52 53 54 55 51 <attached> 52 <?lua 53 createSpaceStation() 54 ?> 55 </attached> 56 56 </MovableEntity> 57 57 … … 61 61 ---> 62 62 <MovableEntity scale=1 position="-5000,0,0" rotationaxis="0,1,0" rotationrate=5> 63 64 65 66 67 63 <attached> 64 <?lua 65 createSpaceStation() 66 ?> 67 </attached> 68 68 </MovableEntity> 69 69 … … 77 77 ---> 78 78 <MovableEntity scale=1 position="0,0,0" rotationaxis="0,1,0" rotationrate=3> 79 80 81 82 83 84 85 86 87 88 79 <attached> 80 <MovableEntity scale=1 position="10000,0,0" rotationaxis="0,0,1" rotationrate=2> 81 <attached> 82 <?lua 83 -- Here I use the createSpaceStationPar(...) function, which has 8 arguments, see the .lua file at the top to understand them. 84 createSpaceStationPar(0,2,1,2,1,2,1,50) 85 ?> 86 </attached> 87 </MovableEntity> 88 </attached> 89 89 </MovableEntity> 90 90 … … 95 95 96 96 97 97 <ParticleSpawner position="0,0,0" source="Orxonox/BigExplosion1part3" lifetime=2.0 loop=0 autostart=0> 98 98 <events> 99 99 <spawn> -
code/branches/presentation2012merge/data/levels/presentationFS10Ed.oxw
r9016 r9272 39 39 </collisionShapes> 40 40 </Pawn> 41 41 42 42 <Pawn health=100 position="0,-35,0" direction="0,-1,0" collisionType=dynamic mass=100000> 43 43 <attached> … … 48 48 </collisionShapes> 49 49 </Pawn> 50 50 51 51 <StaticEntity position="0,-50,0" direction="0,-1,0" collisionType=static mass=100000 > 52 52 <attached> … … 66 66 </collisionShapes> 67 67 </StaticEntity> 68 68 69 69 <StaticEntity position="600,-20,0" direction="0,-1,0" collisionType=static mass=100000 > 70 70 <attached> … … 84 84 </collisionShapes> 85 85 </StaticEntity> 86 86 87 87 <StaticEntity position="600,40,250" direction="0,-1,0" collisionType=static mass=100000 > 88 88 <attached> … … 93 93 </collisionShapes> 94 94 </StaticEntity> 95 96 95 96 97 97 <StaticEntity position="6000,0,10250" direction="0,0,0" collisionType=static mass=100000 > 98 98 <attached> … … 103 103 </collisionShapes> 104 104 </StaticEntity> 105 105 106 106 <Pawn health=100 position="530,70,1450" direction="-1,0,0" collisionType=dynamic mass=1 > 107 107 <attached> … … 112 112 </collisionShapes> 113 113 </Pawn> 114 114 115 115 <Pawn health=100 position="670,70,1450" direction="-1,0,0" collisionType=dynamic mass=1 > 116 116 <attached> … … 121 121 </collisionShapes> 122 122 </Pawn> 123 123 124 124 <Pawn health=100 position="600,70,1500" direction="0,0,-1" collisionType=dynamic mass=1 > 125 125 <attached> … … 130 130 </collisionShapes> 131 131 </Pawn> 132 132 133 133 <Pawn health=100 position="600,150,1450" direction="0,-1,0" collisionType=dynamic mass=1 > 134 134 <attached> … … 139 139 </collisionShapes> 140 140 </Pawn> 141 141 142 142 <Pawn health=100 position="600,35,1450" direction="0,-1,0" collisionType=dynamic mass=1 > 143 143 <attached> … … 148 148 </collisionShapes> 149 149 </Pawn> 150 150 151 151 152 152 <SpawnPoint position="0,300,0" direction="0, 0, 0" lookat="0,0,100000000" spawnclass=FpsPlayer pawndesign=fps /> … … 163 163 <attached> 164 164 <Model position="0,0,0" scale3D="<?lua print(j*100) ?>,<?lua print(g*100) ?>,<?lua print(h*100) ?>" mesh="cube<?lua 165 166 167 168 165 if math.mod(i,4)==0 then print('_green') end 166 if math.mod(i,4)==1 then print('_red') end 167 if math.mod(i,4)==2 then print('_orange') end 168 ?>.mesh" /> <!--if it's 3, cube.mesh is taken -> yellow --> 169 169 </attached> 170 170 <collisionShapes> -
code/branches/presentation2012merge/data/levels/presentationHS11.oxw
r9271 r9272 138 138 139 139 <!-- Generate asteroid field and asteroid belt --> 140 <!-- asteroidBelt(centerX, centerY, centerZ, yaw, pitch, segments, minSize, maxSize, radius0, radius1, count, fog) --> 140 <!-- asteroidBelt(centerX, centerY, centerZ, yaw, pitch, segments, minSize, maxSize, radius0, radius1, count, fog) --> 141 141 <?lua 142 143 142 dofile("includes/asteroidField.lua") 143 asteroidBelt(20000, 0, 13000, -48, -34, 70, 100, 200, 22000, 20000, 500, 1) 144 144 145 145 ?> -
code/branches/presentation2012merge/data/levels/surfaceRace.oxw
r9271 r9272 12 12 include("templates/spaceshipRace.oxt") 13 13 include("templates/pickupRepresentationTemplates.oxt") 14 14 15 15 ?> 16 16 … … 39 39 40 40 <SpaceRaceManager> 41 <checkpoints> 42 43 <attached> 44 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 45 46 <!-- 47 48 49 50 41 <checkpoints> 42 <RaceCheckPoint name="checkpoint1" position="0,8050,-1000" direction="0,1,0" collisionType="static" scale="4" distance="150" checkpointindex="0" islast="false" nextcheckpoints="1,-1,-1"> 43 <attached> 44 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 45 46 <!-- 47 <Model position="0,0,55" mesh="testcube.mesh" scale3D="110,20,20" /> 48 <Model position="0,0,-55" mesh="testcube.mesh" scale3D="110,20,20" /> 49 <Model position="55,0,0" mesh="testcube.mesh" scale3D="20,20,110" /> 50 <Model position="-55,0,0" mesh="testcube.mesh" scale3D="20,20,110" /> 51 51 52 52 --> … … 57 57 58 58 59 60 61 62 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 63 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 64 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 65 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 66 67 68 </collisionShapes> 69 70 71 72 59 <collisionShapes> 60 61 62 <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" /> 63 <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" /> 64 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 65 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 66 67 68 </collisionShapes> 69 70 71 72 73 73 </RaceCheckPoint> 74 74 … … 77 77 <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" /> 78 78 </attached> 79 79 80 80 81 81 <collisionShapes> … … 85 85 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 86 86 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 87 87 88 88 </collisionShapes> 89 89 </RaceCheckPoint> … … 103 103 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 104 104 105 105 106 106 </collisionShapes> 107 107 … … 121 121 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 122 122 123 123 124 124 </collisionShapes> 125 125 … … 139 139 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 140 140 141 141 142 142 </collisionShapes> 143 143 … … 157 157 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 158 158 159 159 160 160 </collisionShapes> 161 161 </RaceCheckPoint> … … 175 175 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 176 176 177 177 178 178 </collisionShapes> 179 179 … … 192 192 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 193 193 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 194 194 195 195 </collisionShapes> 196 196 </RaceCheckPoint> … … 209 209 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 210 210 211 211 212 212 </collisionShapes> 213 213 … … 227 227 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 228 228 229 229 230 230 </collisionShapes> 231 231 … … 244 244 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 245 245 246 246 247 247 </collisionShapes> 248 248 … … 261 261 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 262 262 263 263 264 264 </collisionShapes> 265 265 … … 278 278 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 279 279 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 280 280 281 281 </collisionShapes> 282 282 </RaceCheckPoint> … … 293 293 <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" /> 294 294 <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" /> 295 295 296 296 </collisionShapes> 297 297 </RaceCheckPoint> … … 303 303 <SpawnPoint team=0 position="0,8050,0" lookat="0,8000,-8000" spawnclass=SpaceShip pawndesign=spaceshipRace /> 304 304 305 306 305 306 <!-- -----------------------Zylinder---------------------------- --> 307 307 <StaticEntity position="2750,8050,6000" direction="1,0,0" roll="90" scale="4" collisionType=static mass=100000 friction=0.01 > 308 308 <attached> 309 310 311 312 313 314 315 309 <Model position="0,0,0" mesh="cylinder.mesh" scale3D="100,100,400" /> 310 <!-- 311 <Model position="0,80,600" mesh="testcube.mesh" scale3D="90,18,-600" /> 312 <Model position="0,-80,600" mesh="testcube.mesh" scale3D="90,18,-600" /> 313 <Model position="80,0,600" mesh="testcube.mesh" scale3D="18,90,-600" /> 314 <Model position="-80,0,600" mesh="testcube.mesh" scale3D="18,09,-600" /> 315 --> 316 316 317 317 </attached> 318 318 319 319 320 321 322 323 324 325 326 327 328 329 320 <collisionShapes> 321 322 323 <BoxCollisionShape position="0,320,2400" halfExtents="360,72,2400" /> 324 <BoxCollisionShape position="0,-320,2400" halfExtents="360,72,2400" /> 325 <BoxCollisionShape position="320,0,2400" halfExtents="72,360,2400" /> 326 <BoxCollisionShape position="-320,0,2400" halfExtents="72,360,2400" /> 327 328 329 330 330 </collisionShapes> 331 331 … … 335 335 <StaticEntity position="4465,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 > 336 336 <attached> 337 337 <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" /> 338 338 <!-- 339 340 339 <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" /> 340 --> 341 341 342 342 </attached> 343 343 344 344 345 346 347 348 345 <collisionShapes> 346 347 348 <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" /> 349 349 350 350 </collisionShapes> … … 354 354 <StaticEntity position="3535,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 > 355 355 <attached> 356 356 <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" /> 357 357 <!-- 358 359 358 <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" /> 359 --> 360 360 361 361 </attached> 362 362 363 363 364 365 366 367 364 <collisionShapes> 365 366 367 <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" /> 368 368 369 369 </collisionShapes> … … 374 374 375 375 376 376 <!-- ------------------Boden----------------- --> 377 377 <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 friction=0.01> 378 378 <attached> … … 382 382 <BoxCollisionShape position="0,50,0" halfExtents="8000,8000,8000" />um j?:P"{ 383 383 384 </collisionShapes> 384 </collisionShapes> 385 385 </StaticEntity> 386 386 … … 416 416 for i = 0, max, 1 417 417 do 418 419 420 421 418 x=-12000 419 y=10000 420 z=-12000 421 422 422 ?> 423 423 <?lua -
code/branches/presentation2012merge/data/levels/templates/FPS.oxt
r8858 r9272 17 17 linearDamping = 0.7 18 18 angularDamping = 0.9999999 19 friction 20 19 friction = 0.01 20 21 21 weapon = "hs-w01.mesh" 22 22 > … … 24 24 <BoxCollisionShape position="0,-20,0" halfExtents="15,25,15" /> 25 25 </collisionShapes> 26 26 27 27 <camerapositions> 28 28 <CameraPosition position="-1,1,2.2" drag=false mouselook=true /> 29 29 </camerapositions> 30 30 31 31 <?lua 32 32 include("../includes/weaponSettingsFPS.oxi") 33 33 ?> 34 34 … … 40 40 <camerapositions> 41 41 <CameraPosition position="0,0,20" drag=false mouselook=true /> 42 42 43 43 <!-- 44 44 CameraPosition position="0,150,-25" pitch=-90 drag=true /> … … 47 47 <CameraPosition position="-50,5,-8" yaw=-90 drag=true /> 48 48 <CameraPosition position="50,5,-8" yaw=90 drag=true / 49 49 50 50 </camerapositions> 51 51 </FpsPlayer> -
code/branches/presentation2012merge/data/levels/templates/tower.oxt
r9271 r9272 2 2 <Tower 3 3 4 4 5 5 explosionchunks = 6 6 6 … … 13 13 14 14 > 15 16 17 18 19 20 21 15 <controller> 16 <WaypointPatrolController alertnessradius=1000 team=5> 17 <waypoints> 18 <Model mesh="cube.mesh" scale=0 position=" 700, 200, 100" /> 19 </waypoints> 20 </WaypointPatrolController> 21 </controller> 22 22 23 23 24 24 <attached> 25 25 <Model position="0,0,0" scale=45 mesh="Tower.mesh" /> 26 26 </attached> 27 27 28 28 <!--collisionShapes> 29 29 30 30 </collisionShapes--> 31 31 -
code/branches/presentation2012merge/data/levels/testStars.oxw
r9016 r9272 30 30 <attached> 31 31 <Model pitch=180 position="0,0,0" scale=1.5 mesh="rocket_test.mesh" > 32 33 <ParticleEmitter pitch=0 roll=0 position="0,5,0" source="Orxonox/laser" lifetime=2.0 loop=1 startdelay=3.0/>34 <ParticleEmitter pitch=-90 roll=0 position="0,-5,0" source="Orxonox/particlecanon" lifetime=2.0 loop=1 startdelay=3.0/>35 <ParticleEmitter pitch=-90 roll=0 position="0,0,-2" source="Orxonox/rocketfire" lifetime=2.0 loop=1 startdelay=3.0 />36 32 <attached> 33 <ParticleEmitter pitch=0 roll=0 position="0,5,0" source="Orxonox/laser" lifetime=2.0 loop=1 startdelay=3.0/> 34 <ParticleEmitter pitch=-90 roll=0 position="0,-5,0" source="Orxonox/particlecanon" lifetime=2.0 loop=1 startdelay=3.0/> 35 <ParticleEmitter pitch=-90 roll=0 position="0,0,-2" source="Orxonox/rocketfire" lifetime=2.0 loop=1 startdelay=3.0 /> 36 <ParticleEmitter pitch=-90 roll=0 position="0,0,-2" source="Orxonox/smoke" lifetime=2.0 loop=1 startdelay=3.0 /> 37 37 </attached> 38 39 38 </Model> 39 </attached> 40 40 </Rocket--> 41 41 42 42 <CreateStars numStars="6000" material="Examples/Flare" colour="1,1,1" radius=10000 colourDiff=0.1/> 43 43 -
code/branches/presentation2012merge/data/levels/towerDefense.oxw
r9271 r9272 42 42 43 43 44 <!-- Template for a tower 44 <!-- Template for a tower EDIT: new towertemplate is included with "templates/tower" --> 45 45 <!--Template name=towertemplate> 46 46 <Tower> … … 59 59 <Template link=lodtemplate_default /> 60 60 </templates> 61 61 62 62 <?lua include("includes/notifications.oxi") ?> 63 63 … … 66 66 skybox = "Orxonox/Starbox" 67 67 > 68 69 70 71 72 73 74 75 76 77 78 68 69 <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"/> 70 71 <!-- Spawns the camera, attached to a crate --> 72 <SpawnPoint team=0 position="0,0,0" spawnclass=Pawn pawndesign=centerpointmark /> 73 <!--TeamSpawnPoint team=1 position="-7,7,4" direction="-1,0,0" roll=90 yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff /--> 74 75 <!--SpawnPoint team=1 position="0,0,10" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff /--> 76 <!--SpawnPoint team=0 position="0,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff /--> 77 78 <SpaceShip position="-700,-500, 100" lookat="0,0,0" scale=3 team=1 > 79 79 <templates> 80 80 <Template link=spaceshipassff /> … … 83 83 <WaypointController accuracy=60> 84 84 <waypoints> 85 85 <!-- 1,3 10,3 10,11, 13,11 --> 86 86 <Model mesh="cube.mesh" scale=0 position="-700,-500, 150" /> 87 87 <Model mesh="cube.mesh" scale=0 position=" 200,-500, 150" /> 88 88 <Model mesh="cube.mesh" scale=0 position=" 200, 300, 150" /> 89 89 <Model mesh="cube.mesh" scale=0 position=" 500, 300, 150" /> 90 90 <Model mesh="cube.mesh" scale=0 position=" 500, 700, 150" /> 91 91 </waypoints> 92 92 </WaypointController> 93 93 </controller> 94 94 </SpaceShip> 95 96 95 96 97 97 <!--invisible entity to attach towers to, since playfield is static and towers are dynamic--> 98 98 <StaticEntity position=0,0,0> 99 100 101 102 103 99 100 <attached> 101 <Model position="-50,-50,0" mesh="Playfield_ME.mesh" scale=80 /> 102 <!-- Base --> 103 <Model position="500,700,100" mesh="sphere.mesh" scale=80 /> 104 104 <!--Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /--> <!-- Only temporary needed to help align the collisionshape --> 105 106 107 108 109 105 <!-- This was used to mark the playfield, let's let it be here for now --> 106 <!--Model position="-8,8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /--> 107 <!--Model position="-8,-8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /--> 108 <!--Model position="8,-8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /--> 109 <!--Model position="8,8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /--> 110 110 </attached> 111 111 <collisionShapes> <!-- The collisionshape forbids other worldentities that have a collisionShape to fly through it. 112 112 113 113 TODO: Find correct size for the collisionshape; since a collisionShape is invisible 114 114 I added the crate wich currently has the same dimensions as the collisionshape. … … 117 117 <BoxCollisionShape position="0,0,0" halfExtents="400,400,100" /> 118 118 </collisionShapes> 119 120 121 122 123 124 125 <TowerDefenseCenterpoint 126 name=towerdefensecenter 127 width=16 128 129 130 131 position="0,0,0" 132 direction="0,0,0" 133 collisionType=dynamic 134 135 119 </StaticEntity> 120 121 122 123 124 <!-- PlayField --> 125 <TowerDefenseCenterpoint 126 name=towerdefensecenter 127 width=16 128 height=16 129 tileScale=100 130 towerTemplate=tower 131 position="0,0,0" 132 direction="0,0,0" 133 collisionType=dynamic 134 mass=100000> 135 136 136 </TowerDefenseCenterpoint> 137 137 -
code/branches/presentation2012merge/data/overlays/towerdefenseHUD.oxo
r9271 r9272 8 8 colour = "1.0, 1.0, 1.0, 1.0" 9 9 align = "left" 10 11 10 11 caption = "Hello World" 12 12 /> 13 14 15 13 </OverlayGroup> 16 14 </Template> -
code/branches/presentation2012merge/src/modules/gametypes/SpaceRaceManager.cc
r9271 r9272 149 149 } 150 150 else 151 151 { 152 152 // adjust the radarvisibility 153 153 gametype->newCheckpointReached(newCheckpoint, player); -
code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.cc
r9271 r9272 70 70 void DamageBoostPickup::initialize(void) 71 71 { 72 73 72 this->duration_ = 0.0f; 73 this->damageMultiplier_ = 1.0f; //The default damage multiplier. 74 74 //Defines who is allowed to pick up the pickup. 75 75 this->addTarget(ClassIdentifier<SpaceShip>::getIdentifier()); … … 130 130 SpaceShip* ship = this->carrierToSpaceShipHelper(); 131 131 if(ship == NULL) // If the PickupCarrier is no SpaceShip, then this pickup is useless and therefore is destroyed. 132 132 this->Pickupable::destroy(); 133 133 134 134 -
code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.h
r9271 r9272 57 57 virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the input OrxonoxClass. 58 58 59 59 /** 60 60 @brief Get the time the DamagePickup lasts. 61 61 @return Returns the time in seconds the DamagePickup lasts. … … 95 95 96 96 Timer durationTimer_; //!< Timer. 97 97 float duration_; //! Duration of damage boost. 98 98 99 99 }; -
code/branches/presentation2012merge/src/modules/towerdefense/CMakeLists.txt
r9271 r9272 5 5 TowerDefenseHUDController.cc 6 6 TowerDefensePlayerStats.cc 7 7 8 8 ) 9 9 … … 13 13 LINK_LIBRARIES 14 14 orxonox 15 15 overlays 16 16 SOURCE_FILES ${TOWERDEFENSE_SRC_FILES} 17 17 ) -
code/branches/presentation2012merge/src/modules/towerdefense/TDEnemy.h
r9271 r9272 13 13 14 14 private: 15 16 17 15 float health; 16 float speed; 17 float armour; 18 18 19 19 -
code/branches/presentation2012merge/src/modules/towerdefense/Tower.cc
r9271 r9272 17 17 { 18 18 CreateFactory(Tower); 19 19 20 20 /** 21 22 23 21 @brief 22 Constructor. Registers and initializes the object. 23 */ 24 24 Tower::Tower(BaseObject* creator) : Pawn(creator) 25 25 { … … 34 34 this->delay_ = false; 35 35 this->delayTimer_.setTimer(0.2f, false, createExecutor(createFunctor(&TetrisStone::enableMovement, this))); 36 36 */ 37 37 } 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 38 39 void Tower::setOrientation(const Quaternion& orientation) 40 { 41 static int ori; 42 orxout() << "orientation " << ++ori << endl; 43 } 44 45 void Tower::rotateYaw(const Vector2& value) 46 { 47 static int yaw; 48 orxout() << "rotateYaw " << ++yaw << endl; 49 } 50 51 void Tower::rotatePitch(const Vector2& value) 52 { 53 static int pitch; 54 orxout() << "rotatePitch " << ++pitch << endl; 55 } 56 57 void Tower::rotateRoll(const Vector2& value) 58 { 59 static int roll; 60 orxout() << "rotateRoll" << ++roll << endl; 61 } 62 63 // This function is called whenever a player presses the up or the down key. 64 64 // You have to implement what happens when the up or the down key is pressed. 65 65 // value.x < 0 means: down key is pressed. … … 75 75 76 76 /** 77 78 79 80 81 82 77 @brief 78 Overloaded the function to rotate the stone. 79 @param value 80 A vector whose first component is the angle by which to rotate. 81 */ 82 /* 83 83 void Tower::moveFrontBack(const Vector2& value) 84 84 { 85 85 //orxout() << "frontBack.x: " << value.x << endl; 86 86 } 87 88 87 */ 88 89 89 /** 90 91 92 93 94 95 90 @brief 91 Overloaded the function to steer the stone right and left 92 @param value 93 A vector whose first component is the direction in which we want to steer the stone. 94 */ 95 /* 96 96 void Tower::moveRightLeft(const Vector2& value) 97 97 { 98 99 98 //orxout() << "rightLeft.x: " << value.x << endl; 99 100 100 if(!this->delay_) 101 101 { … … 104 104 if(!this->tetris_->isValidMove(this, newPos)) 105 105 return; 106 106 107 107 this->setPosition(newPos); 108 108 this->delay_ = true; 109 109 this->delayTimer_.startTimer(); 110 110 } 111 111 } 112 112 */ 113 113 } -
code/branches/presentation2012merge/src/modules/towerdefense/Tower.h
r9271 r9272 10 10 @brief 11 11 See TowerDefenseReadme.txt for Information. 12 12 13 13 @ingroup TowerDefense 14 14 */ … … 20 20 #include "towerdefense/TowerDefensePrereqs.h" 21 21 #include "worldentities/pawns/SpaceShip.h" 22 22 23 23 24 24 namespace orxonox … … 26 26 class _TowerDefenseExport Tower : public Pawn 27 27 { 28 29 30 31 32 33 34 35 36 37 38 39 28 public: 29 Tower(BaseObject* creator); 30 virtual ~Tower() {}; 31 32 // Maybe later override these to move towers with cursor keys 33 /* 34 virtual void moveFrontBack(const Vector2& value); 35 virtual void moveRightLeft(const Vector2& value); 36 */ 37 38 // Overriding these to stop towers from spasing out 39 void setOrientation(const Quaternion& orientation); 40 40 virtual void rotateYaw(const Vector2& value); 41 41 virtual void rotatePitch(const Vector2& value); 42 42 virtual void rotateRoll(const Vector2& value); 43 44 45 46 47 43 44 void setGame(TowerDefense* towerdefense) 45 { assert(towerdefense); game_ = towerdefense; } 46 private: 47 TowerDefense* game_; 48 48 }; 49 49 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefense.cc
r9271 r9272 82 82 #include "worldentities/pawns/SpaceShip.h" 83 83 #include "controllers/WaypointController.h" 84 84 85 85 #include "graphics/Model.h" 86 86 #include "infos/PlayerInfo.h" 87 87 88 88 #include "chat/ChatManager.h" 89 89 … … 94 94 { 95 95 CreateUnloadableFactory(TowerDefense); 96 97 96 97 TowerDefense::TowerDefense(BaseObject* creator) : Deathmatch(creator) 98 98 { 99 99 RegisterObject(TowerDefense); 100 100 101 101 this->setHUDTemplate("TowerDefenseHUD"); 102 102 103 104 105 106 107 } 108 103 this->stats_ = new TowerDefensePlayerStats(); 104 105 /* Temporary hack to allow the player to add towers */ 106 this->dedicatedAddTower_ = createConsoleCommand( "addTower", createExecutor( createFunctor(&TowerDefense::addTower, this) ) ); 107 } 108 109 109 TowerDefense::~TowerDefense() 110 110 { 111 111 /* Part of a temporary hack to allow the player to add towers */ 112 112 if (this->isInitialized()) 113 113 { … … 116 116 } 117 117 } 118 119 120 121 122 123 124 125 118 119 void TowerDefense::setCenterpoint(TowerDefenseCenterpoint *centerpoint) 120 { 121 orxout() << "Centerpoint now setting..." << endl; 122 this->center_ = centerpoint; 123 orxout() << "Centerpoint now set..." << endl; 124 } 125 126 126 void TowerDefense::start() 127 127 { 128 128 Deathmatch::start(); 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 } 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 for(std::vector<Coordinate>::iterator it = addedTowersCoordinates_.begin(); it != addedTowersCoordinates_.end(); ++it) 206 207 208 209 210 211 212 213 214 215 216 129 130 const int kInitialTowerCount = 3; 131 Coordinate initialTowerCoordinates[kInitialTowerCount] = {{3,2}, {8,5}, {12,10}}; 132 133 for (int i = 0; i < kInitialTowerCount; i++) 134 { 135 Coordinate coordinate = initialTowerCoordinates[i]; 136 addTower(coordinate.x, coordinate.y); 137 } 138 139 ChatManager::message("Use the console command addTower x y to add towers"); 140 141 //TODO: let the player control his controllable entity && TODO: create a new ControllableEntity for the player 142 } 143 144 void TowerDefense::end() 145 { 146 Deathmatch::end(); 147 148 ChatManager::message("Match is over"); 149 } 150 151 void TowerDefense::addTower(int x, int y) 152 { 153 const TowerCost towerCost = TDDefaultTowerCost; 154 155 if (!this->hasEnoughCreditForTower(towerCost)) 156 { 157 orxout() << "not enough credit: " << (this->stats_->getCredit()) << " available, " << TDDefaultTowerCost << " needed."; 158 return; 159 } 160 161 if (this->towerExists(x,y)) 162 { 163 orxout() << "tower exists!!" << endl; 164 return; 165 } 166 167 /* 168 unsigned int width = this->center_->getWidth(); 169 unsigned int height = this->center_->getHeight(); 170 */ 171 172 int tileScale = (int) this->center_->getTileScale(); 173 174 if (x > 15 || y > 15 || x < 0 || y < 0) 175 { 176 //Hard coded: TODO: let this depend on the centerpoint's height, width and fieldsize (fieldsize doesn't exist yet) 177 orxout() << "Can not add Tower: x and y should be between 0 and 15" << endl; 178 return; 179 } 180 181 orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl; 182 183 // Add tower to coordinatesStack 184 Coordinate newTowerCoordinates = {x, y}; 185 addedTowersCoordinates_.push_back(newTowerCoordinates); 186 187 // Reduce credit 188 this->stats_->buyTower(towerCost); 189 190 // Create tower 191 Tower* newTower = new Tower(this->center_); 192 newTower->addTemplate(this->center_->getTowerTemplate()); 193 194 newTower->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 75); 195 newTower->setGame(this); 196 } 197 198 bool TowerDefense::hasEnoughCreditForTower(TowerCost towerCost) 199 { 200 return ((this->stats_->getCredit()) >= towerCost); 201 } 202 203 bool TowerDefense::towerExists(int x, int y) 204 { 205 for(std::vector<Coordinate>::iterator it = addedTowersCoordinates_.begin(); it != addedTowersCoordinates_.end(); ++it) 206 { 207 Coordinate currentCoordinates = (Coordinate) (*it); 208 if (currentCoordinates.x == x && currentCoordinates.y == y) 209 return true; 210 } 211 212 return false; 213 } 214 215 216 void TowerDefense::tick(float dt) 217 217 { 218 218 SUPER(TowerDefense, tick, dt); 219 219 } 220 221 // Function to test if we can add waypoints using code only. Doesn't work yet 222 223 // THE PROBLEM: WaypointController's getControllableEntity() returns null, so it won't track. How do we get the controlableEntity to NOT BE NULL??? 224 /* 225 void TowerDefense::addWaypointsAndFirstEnemy() 226 { 227 SpaceShip *newShip = new SpaceShip(this->center_); 228 newShip->addTemplate("spaceshipassff"); 229 230 WaypointController *newController = new WaypointController(newShip); 231 newController->setAccuracy(3); 232 233 Model *wayPoint1 = new Model(newController); 234 wayPoint1->setMeshSource("crate.mesh"); 235 wayPoint1->setPosition(7,-7,5); 236 wayPoint1->setScale(0.2); 237 238 Model *wayPoint2 = new Model(newController); 239 wayPoint2->setMeshSource("crate.mesh"); 240 wayPoint2->setPosition(7,7,5); 241 wayPoint2->setScale(0.2); 242 243 newController->addWaypoint(wayPoint1); 244 newController->addWaypoint(wayPoint2); 245 246 // The following line causes the game to crash 247 248 newShip->setController(newController); 249 // newController -> getPlayer() -> startControl(newShip); 250 newShip->setPosition(-7,-7,5); 251 newShip->setScale(0.1); 252 //newShip->addSpeed(1); 253 254 255 256 // this->center_->attach(newShip); 257 } 258 */ 259 /* 260 void TowerDefense::playerEntered(PlayerInfo* player) 261 { 262 Deathmatch::playerEntered(player); 263 264 const std::string& message = player->getName() + " entered the game"; 265 ChatManager::message(message); 266 } 267 268 bool TowerDefense::playerLeft(PlayerInfo* player) 269 { 270 bool valid_player = Deathmatch::playerLeft(player); 271 272 if (valid_player) 273 { 274 const std::string& message = player->getName() + " left the game"; 275 ChatManager::message(message); 276 } 277 278 return valid_player; 279 } 280 281 282 void TowerDefense::pawnKilled(Pawn* victim, Pawn* killer) 283 { 284 if (victim && victim->getPlayer()) 285 { 286 std::string message; 287 if (killer) 288 { 289 if (killer->getPlayer()) 290 message = victim->getPlayer()->getName() + " was killed by " + killer->getPlayer()->getName(); 291 else 292 message = victim->getPlayer()->getName() + " was killed"; 293 } 294 else 295 message = victim->getPlayer()->getName() + " died"; 296 297 ChatManager::message(message); 298 } 299 300 Deathmatch::pawnKilled(victim, killer); 301 } 302 303 void TowerDefense::playerScored(PlayerInfo* player) 304 { 305 Gametype::playerScored(player); 306 307 }*/ 220 221 // Function to test if we can add waypoints using code only. Doesn't work yet 222 223 // THE PROBLEM: WaypointController's getControllableEntity() returns null, so it won't track. How do we get the controlableEntity to NOT BE NULL??? 224 /* 225 void TowerDefense::addWaypointsAndFirstEnemy() 226 { 227 SpaceShip *newShip = new SpaceShip(this->center_); 228 newShip->addTemplate("spaceshipassff"); 229 230 WaypointController *newController = new WaypointController(newShip); 231 newController->setAccuracy(3); 232 233 Model *wayPoint1 = new Model(newController); 234 wayPoint1->setMeshSource("crate.mesh"); 235 wayPoint1->setPosition(7,-7,5); 236 wayPoint1->setScale(0.2); 237 238 Model *wayPoint2 = new Model(newController); 239 wayPoint2->setMeshSource("crate.mesh"); 240 wayPoint2->setPosition(7,7,5); 241 wayPoint2->setScale(0.2); 242 243 newController->addWaypoint(wayPoint1); 244 newController->addWaypoint(wayPoint2); 245 246 // The following line causes the game to crash 247 248 newShip->setController(newController); 249 // newController -> getPlayer() -> startControl(newShip); 250 newShip->setPosition(-7,-7,5); 251 newShip->setScale(0.1); 252 //newShip->addSpeed(1); 253 254 255 256 // this->center_->attach(newShip); 257 } 258 */ 259 /* 260 void TowerDefense::playerEntered(PlayerInfo* player) 261 { 262 Deathmatch::playerEntered(player); 263 264 const std::string& message = player->getName() + " entered the game"; 265 ChatManager::message(message); 266 } 267 268 bool TowerDefense::playerLeft(PlayerInfo* player) 269 { 270 bool valid_player = Deathmatch::playerLeft(player); 271 272 if (valid_player) 273 { 274 const std::string& message = player->getName() + " left the game"; 275 ChatManager::message(message); 276 } 277 278 return valid_player; 279 } 280 281 282 void TowerDefense::pawnKilled(Pawn* victim, Pawn* killer) 283 { 284 if (victim && victim->getPlayer()) 285 { 286 std::string message; 287 if (killer) 288 { 289 if (killer->getPlayer()) 290 message = victim->getPlayer()->getName() + " was killed by " + killer->getPlayer()->getName(); 291 else 292 message = victim->getPlayer()->getName() + " was killed"; 293 } 294 else 295 message = victim->getPlayer()->getName() + " died"; 296 297 ChatManager::message(message); 298 } 299 300 Deathmatch::pawnKilled(victim, killer); 301 } 302 303 void TowerDefense::playerScored(PlayerInfo* player) 304 { 305 Gametype::playerScored(player); 306 }*/ 308 307 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefense.h
r9271 r9272 26 26 * 27 27 */ 28 28 29 29 /** 30 31 32 33 30 @brief 31 GameType class for TowerDefense. See TowerDefenseReadme.txt for Information. 32 33 @ingroup TowerDefense 34 34 */ 35 35 36 36 37 37 #ifndef _TowerDefense_H__ … … 40 40 #include "towerdefense/TowerDefensePrereqs.h" 41 41 #include "gametypes/Deathmatch.h" 42 42 43 43 #include "TowerDefensePlayerStats.h" 44 44 45 45 namespace orxonox 46 46 { 47 47 class _TowerDefenseExport TowerDefense : public Deathmatch 48 48 { 49 public: 50 TowerDefense(BaseObject* creator); 51 virtual ~TowerDefense(); 52 53 virtual void start(); //<! The function is called when the gametype starts 54 virtual void end(); 55 virtual void tick(float dt); 56 //virtual void playerEntered(PlayerInfo* player); 57 //virtual bool playerLeft(PlayerInfo* player); 58 59 //virtual void pawnKilled(Pawn* victim, Pawn* killer = 0); 60 //virtual void playerScored(PlayerInfo* player); 61 62 63 /* Called by TowerDefenseCenterpoint upon game start 64 The centerpoint is used to create towers 65 */ 66 void setCenterpoint(TowerDefenseCenterpoint *centerpoint); 67 68 /* Adds a tower at x, y in the playfield */ 69 void addTower(int x, int y); 70 71 /* Part of a temporary hack to allow the player to add towers */ 72 ConsoleCommand* dedicatedAddTower_; 73 74 //TODO: void spawnNewWave() 75 //TODO: create a timer which regularly calls the spawnNewWave function (time driven) 76 // or spawn a new wave when the old wave has been killed (event driven) 49 public: 50 TowerDefense(BaseObject* creator); 51 virtual ~TowerDefense(); 52 53 virtual void start(); //<! The function is called when the gametype starts 54 virtual void end(); 55 virtual void tick(float dt); 56 //virtual void playerEntered(PlayerInfo* player); 57 //virtual bool playerLeft(PlayerInfo* player); 58 59 //virtual void pawnKilled(Pawn* victim, Pawn* killer = 0); 60 //virtual void playerScored(PlayerInfo* player); 77 61 78 62 79 private: 80 TowerDefenseCenterpoint *center_; 81 82 /* handles stats */ 83 TowerDefensePlayerStats *stats_; 84 bool hasEnoughCreditForTower(TowerCost towerCost); 85 86 bool towerExists(int x, int y); 87 88 typedef struct { 89 int x; 90 int y; 91 } Coordinate; 92 93 std::vector<Coordinate> addedTowersCoordinates_; 94 std::vector<Tower*> towers_; 63 /* Called by TowerDefenseCenterpoint upon game start 64 The centerpoint is used to create towers 65 */ 66 void setCenterpoint(TowerDefenseCenterpoint *centerpoint); 67 68 /* Adds a tower at x, y in the playfield */ 69 void addTower(int x, int y); 70 71 /* Part of a temporary hack to allow the player to add towers */ 72 ConsoleCommand* dedicatedAddTower_; 73 74 //TODO: void spawnNewWave() 75 //TODO: create a timer which regularly calls the spawnNewWave function (time driven) 76 // or spawn a new wave when the old wave has been killed (event driven) 77 78 79 private: 80 TowerDefenseCenterpoint *center_; 81 82 /* handles stats */ 83 TowerDefensePlayerStats *stats_; 84 bool hasEnoughCreditForTower(TowerCost towerCost); 85 86 bool towerExists(int x, int y); 87 88 typedef struct { 89 int x; 90 int y; 91 } Coordinate; 92 93 std::vector<Coordinate> addedTowersCoordinates_; 94 std::vector<Tower*> towers_; 95 95 }; 96 96 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefenseCenterpoint.cc
r9271 r9272 50 50 { 51 51 RegisterObject(TowerDefenseCenterpoint); 52 53 52 53 this->width_ = 15; 54 54 this->height_ = 15; 55 55 this->towerTemplate_ = ""; 56 56 57 57 //this->setCollisionType(Static); 58 58 59 59 this->checkGametype(); 60 60 61 61 } … … 71 71 XMLPortParam(TowerDefenseCenterpoint, "width", setWidth, getWidth, xmlelement, mode); 72 72 XMLPortParam(TowerDefenseCenterpoint, "height", setHeight, getHeight, xmlelement, mode); 73 73 XMLPortParam(TowerDefenseCenterpoint, "tileScale", setTileScale, getTileScale, xmlelement, mode); 74 74 XMLPortParam(TowerDefenseCenterpoint, "towerTemplate", setTowerTemplate, getTowerTemplate, xmlelement, mode); 75 75 76 76 //TODO: add XMLPortObject(TowerDefenseCenterpoint, WorldEntity, "waypoints", addWaypoint, getWaypoint, xmlelement, mode); 77 77 // This was copied and shightly modified from WaypointController.cc ; there are no getters and setters and no membervariable yet … … 100 100 void TowerDefenseCenterpoint::checkGametype() 101 101 { 102 102 if (this->getGametype() != NULL && this->getGametype()->isA(Class(TowerDefense))) 103 103 { 104 104 // Sets the centerpoint of the gametype. The gametype uses this to later spawn in towers, he needs the tower template stored in the center point 105 105 TowerDefense* towerDefenseGametype = orxonox_cast<TowerDefense*>(this->getGametype().get()); 106 106 towerDefenseGametype->setCenterpoint(this); -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefenseCenterpoint.h
r9271 r9272 54 54 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 55 55 virtual void changedGametype(); 56 56 57 57 /** 58 58 @brief The width and hight in number of tiles. Default is 15 for both. … … 60 60 void setWidth(unsigned int width) 61 61 { this->width_ = width; } 62 63 62 63 unsigned int getWidth(void) const 64 64 { return this->width_; } 65 65 66 66 void setHeight(unsigned int height) 67 67 { this->height_ = height; } 68 69 68 69 unsigned int getHeight(void) const 70 70 { return this->height_; } 71 72 73 74 75 76 77 78 79 80 71 72 /** 73 @brief How to convert to world coordinates, e.g. that 0,15 is not at -8,-8 but at -80,-80 (if scale would be 10) 74 */ 75 void setTileScale(unsigned int tileScale) 76 { this->tileScale_ = tileScale; } 77 78 unsigned int getTileScale(void) const 79 { return this->tileScale_; } 80 81 81 /** 82 82 @brief Set the template for the towers. … … 85 85 void setTowerTemplate(const std::string& templateName) 86 86 { this->towerTemplate_ = templateName; } 87 88 87 88 const std::string& getTowerTemplate(void) const 89 89 { return this->towerTemplate_; } 90 90 91 91 private: 92 92 void checkGametype(); 93 93 94 94 unsigned int width_; 95 95 unsigned int height_; 96 97 96 unsigned int tileScale_; 97 98 98 std::string towerTemplate_; 99 99 }; -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefenseHUDController.cc
r9271 r9272 25 25 * ... 26 26 */ 27 27 28 28 #include "TowerDefenseHUDController.h" 29 29 … … 35 35 namespace orxonox 36 36 { 37 38 37 CreateFactory(TowerDefenseHUDController); 38 39 39 TowerDefenseHUDController::TowerDefenseHUDController(BaseObject* creator) : OverlayText(creator) 40 41 42 43 44 45 46 47 40 { 41 RegisterObject(TowerDefenseHUDController); 42 } 43 44 TowerDefenseHUDController::~TowerDefenseHUDController() 45 { 46 47 } 48 48 49 49 void TowerDefenseHUDController::tick(float dt) 50 51 52 53 50 { 51 SUPER(TowerDefenseHUDController, tick, dt); 52 } 53 54 54 void TowerDefenseHUDController::XMLPort(Element& xmlelement, XMLPort::Mode mode) 55 56 57 58 55 { 56 SUPER(TowerDefenseHUDController, XMLPort, xmlelement, mode); 57 } 58 59 59 void TowerDefenseHUDController::changedOwner() 60 60 { 61 61 SUPER(TowerDefenseHUDController, changedOwner); 62 62 /* 63 63 if (this->getOwner() != NULL && this->getOwner()->getGametype()) 64 64 this->owner_ = orxonox_cast<Pong*>(this->getOwner()->getGametype().get()); 65 65 else 66 66 this->owner_ = 0; 67 67 */ 68 68 } 69 69 70 70 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefenseHUDController.h
r9271 r9272 26 26 * 27 27 */ 28 28 29 29 /** 30 31 32 33 30 @brief 31 This subclass of OverlayText is used to display the stats of the player in the HUD 32 33 @ingroup TowerDefense 34 34 */ 35 35 36 36 37 37 #ifndef _TowerDefenseHUDController_H__ … … 48 48 class _TowerDefenseExport TowerDefenseHUDController : public OverlayText, public Tickable 49 49 { 50 51 50 public: 51 TowerDefenseHUDController(BaseObject* creator); 52 52 virtual ~TowerDefenseHUDController(); 53 53 54 54 virtual void tick(float dt); 55 55 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 56 56 virtual void changedOwner(); 57 57 }; 58 58 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefensePlayerStats.cc
r9271 r9272 25 25 * ... 26 26 */ 27 27 28 28 #include "TowerDefensePlayerStats.h" 29 29 30 30 namespace orxonox 31 31 { 32 33 32 const int kDefaultCredit = 200; 33 34 34 TowerDefensePlayerStats::TowerDefensePlayerStats() 35 36 37 38 39 40 41 42 43 */ 35 { 36 this->credit_ = kDefaultCredit; 37 this->waveNumber_ = 0; 38 } 39 /* 40 TowerDefensePlayerStats::~TowerDefensePlayerStats() 41 { 42 } 43 */ 44 44 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefensePlayerStats.h
r9271 r9272 26 26 * 27 27 */ 28 28 29 29 /** 30 31 32 33 30 @brief 31 This manages the stats of the player. It is used by 'TowerDefense', the gametype 32 33 @ingroup TowerDefense 34 34 */ 35 35 36 36 37 37 #ifndef _TowerDefensePlayerStats_H__ … … 42 42 namespace orxonox 43 43 { 44 45 46 47 48 44 typedef enum _TowerCosts { 45 // Set to 0 for debug... 46 TDDefaultTowerCost = 0 47 } TowerCost; 48 49 49 class _TowerDefenseExport TowerDefensePlayerStats 50 50 { 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 51 public: 52 TowerDefensePlayerStats(); 53 54 inline int getCredit() 55 { return credit_; } 56 57 inline void setCredit(int credit) 58 { credit_ = credit; } 59 60 inline void buyTower(TowerCost cost) 61 { credit_ -= cost;} 62 63 inline int getWaveNumber() 64 { return waveNumber_; } 65 66 inline void didLoadNextWave() 67 { waveNumber_++; } 68 69 private: 70 int credit_; 71 int waveNumber_; 72 //int baseHealth_; 73 73 }; 74 74 } -
code/branches/presentation2012merge/src/modules/towerdefense/TowerDefensePrereqs.h
r9271 r9272 66 66 { 67 67 class TowerDefense; 68 68 class Tower; 69 69 class TowerDefenseCenterpoint; 70 71 70 class TowerDefenseHUDController; 71 class TowerDefensePlayerStats; 72 72 } 73 73 -
code/branches/presentation2012merge/src/orxonox/LevelInfo.h
r9269 r9272 24 24 * Co-authors: 25 25 * ... 26 * 26 * 27 27 */ 28 28 … … 79 79 */ 80 80 inline const std::string& getName(void) const { return this->name_; } // tolua_export 81 81 82 82 /** 83 83 @brief Set the screenshot of the Level. … … 117 117 */ 118 118 inline bool hasTag(const std::string& tag) const { return this->tags_.find(tag) != this->tags_.end(); } // tolua_export 119 119 120 120 void setShips(const std::string& ships); //!< Set the starting ship models of the level 121 121 bool addShip(const std::string& ship, bool update = true); //!< Add a model to shipselection … … 125 125 */ 126 126 inline const std::string& getShips(void) const 127 { return this->startingShipsString_; } 127 { return this->startingShipsString_; } 128 128 /** 129 129 @brief Get whether the Level allows a specific starting ship model … … 131 131 @return Returns true if the Level allows the input ship model 132 132 */ 133 inline bool hasShip(const std::string& ship) const { return this->ships_.find(ship) != this->ships_.end(); } // tolua_export 133 inline bool hasShip(const std::string& ship) const { return this->ships_.find(ship) != this->ships_.end(); } // tolua_export 134 134 /** 135 135 @brief Get the XML-filename of the Level. … … 138 138 139 139 inline const std::string& getXMLFilename(void) const { return this->xmlfilename_; } // tolua_export 140 140 inline void selectShip (const std::string& ship) { this->changeShip(ship); } // tolua_export 141 141 142 142 … … 153 153 private: 154 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 size_t found = buff.find(pawndesignString.append(shipSelectionTag)); 172 if (found!= std::string::npos) 173 174 175 176 177 178 179 180 } 155 inline void changeShip (const std::string& model) { 156 static std::string shipSelectionTag = "shipselection"; 157 //HACK: Read Level XML File, find "shipselection", replace with ship model 158 std::string levelPath = "../levels/"; 159 levelPath.append(this->getXMLFilename()); 160 std::string tempPath = "../levels/"; 161 tempPath.append("_temp.oxw"); 162 orxout(user_status) << levelPath << endl; 163 orxout(user_status) << tempPath << endl; 164 std::ifstream myLevel (levelPath.c_str()); 165 std::ofstream tempLevel (tempPath.c_str()); 166 while(!myLevel.eof()) 167 { 168 std::string buff; 169 std::getline(myLevel, buff); 170 std::string pawndesignString = "pawndesign="; 171 size_t found = buff.find(pawndesignString.append(shipSelectionTag)); 172 if (found!= std::string::npos) 173 buff = buff.substr(0, found + 11) + model + buff.substr(found+11+shipSelectionTag.length(), std::string::npos); 174 tempLevel.write(buff.c_str(), buff.length()); 175 tempLevel << std::endl; 176 } 177 myLevel.close(); 178 tempLevel.close(); 179 orxout(user_status) << "done" << endl; 180 } 181 181 void tagsUpdated(void); //!< Updates the comma-seperated string of all tags, if the set of tags has changed. 182 182 void shipsUpdated(void); //!< Updates the comma-seperated string of all tags, if the set of tags has changed. … … 199 199 std::string tagsString_; //!< The comma-seperated string of all the tags the Level is tagged with. 200 200 std::set<std::string> ships_; //!< The set of starting ship models the Level allows. 201 std::string startingShipsString_; //!< The comma-seperated string of all the allowed ship models for the shipselection. 201 std::string startingShipsString_; //!< The comma-seperated string of all the allowed ship models for the shipselection. 202 202 }; // tolua_export 203 203 … … 210 210 - @b screenshot The screenshot of the level. 211 211 - @b tags A comma-seperated string of tags. Allowed tags are: <em>test</em>, <em>singleplayer</em>, <em>multiplayer</em>, <em>showcase</em>, <em>tutorial</em>, <em>presentation</em>, <em>shipselection</em>. 212 - @b (optional) startingships The comma-seperated string of starting ship models 212 - @b (optional) startingships The comma-seperated string of starting ship models 213 213 An example would be: 214 214 @code … … 224 224 @author 225 225 Damian 'Mozork' Frick 226 227 226 @edit 227 Matthias Hutter 228 228 @ingroup Orxonox 229 229 */ … … 235 235 236 236 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Creates a LevelInfo object through XML. 237 237 238 238 /** 239 239 @brief Set the screenshot of the Level. … … 283 283 */ 284 284 inline const std::string& getShips(void) const 285 { return this->LevelInfoItem::getShips(); } 285 { return this->LevelInfoItem::getShips(); } 286 286 LevelInfoItem* copy(void); //!< Copies the contents of this LevelInfo object to a new LevelInfoItem object. 287 287 }; … … 302 302 } 303 303 }; 304 304 305 305 } // tolua_export 306 306 -
code/branches/presentation2012merge/src/orxonox/ShipManager.cc
r9271 r9272 22 22 * Author: 23 23 * Matthias Hutter 24 * 24 * 25 25 */ 26 26 … … 28 28 @file ShipManager.cc 29 29 @brief Work-in Progress: Implementation of the ShipManager singleton. 30 30 Should make SpaceShip info available to lua handlers. 31 31 */ 32 32 … … 72 72 } 73 73 74 74 75 75 /** 76 76 @brief … … 132 132 void ShipManager::compileAvailableShipList() 133 133 { 134 135 136 137 138 139 140 141 142 143 144 145 146 147 134 /* 135 // We only want to load as little as possible 136 ClassTreeMask mask; 137 mask.exclude(Class(BaseObject)); 138 mask.include(Class(SpaceShip)); 139 SpaceShip* info = NULL; 140 XMLFile file = XMLFile(ship); 141 Loader::load(&file, mask, false, true); 142 for(ObjectList<SpaceShip>::iterator item = ObjectList<SpaceShip>::begin(); item != ObjectList<SpaceShip>::end(); ++item) 143 if(item->getXMLFilename() == *it) 144 info = item->copy(); 145 Loader::unload(&file); 146 */ 147 148 148 // Get all files matching the level criteria 149 149 Ogre::StringVectorPtr levels = Resource::findResourceNames("*.oxw"); -
code/branches/presentation2012merge/src/orxonox/controllers/FormationController.cc
r9271 r9272 50 50 { 51 51 52 SetConsoleCommand("FormationController", "formationflight", &FormationController::formationflight);53 SetConsoleCommand("FormationController", "masteraction", &FormationController::masteraction);54 SetConsoleCommand("FormationController", "followme", &FormationController::followme);55 SetConsoleCommand("FormationController", "passivebehaviour", &FormationController::passivebehaviour);56 SetConsoleCommand("FormationController", "formationsize", &FormationController::formationsize);57 58 59 60 61 static const unsigned int STANDARD_MAX_FORMATION_SIZE = 9;62 static const int RADIUS_TO_SEARCH_FOR_MASTERS = 5000;63 static const float FORMATION_LENGTH = 110;64 static const float FORMATION_WIDTH = 110;65 static const int FREEDOM_COUNT = 4; //seconds the slaves in a formation will be set free when master attacks an enemy66 static const float SPEED_MASTER = 0.6f;67 static const float ROTATEFACTOR_MASTER = 0.2f;68 static const float SPEED_FREE = 0.8f;69 static const float ROTATEFACTOR_FREE = 0.8f;70 71 FormationController::FormationController(BaseObject* creator) : Controller(creator)72 {52 SetConsoleCommand("FormationController", "formationflight", &FormationController::formationflight); 53 SetConsoleCommand("FormationController", "masteraction", &FormationController::masteraction); 54 SetConsoleCommand("FormationController", "followme", &FormationController::followme); 55 SetConsoleCommand("FormationController", "passivebehaviour", &FormationController::passivebehaviour); 56 SetConsoleCommand("FormationController", "formationsize", &FormationController::formationsize); 57 58 59 60 61 static const unsigned int STANDARD_MAX_FORMATION_SIZE = 9; 62 static const int RADIUS_TO_SEARCH_FOR_MASTERS = 5000; 63 static const float FORMATION_LENGTH = 110; 64 static const float FORMATION_WIDTH = 110; 65 static const int FREEDOM_COUNT = 4; //seconds the slaves in a formation will be set free when master attacks an enemy 66 static const float SPEED_MASTER = 0.6f; 67 static const float ROTATEFACTOR_MASTER = 0.2f; 68 static const float SPEED_FREE = 0.8f; 69 static const float ROTATEFACTOR_FREE = 0.8f; 70 71 FormationController::FormationController(BaseObject* creator) : Controller(creator) 72 { 73 73 RegisterObject(FormationController); 74 74 … … 91 91 this->team_=-1; 92 92 this->target_.setCallback(createFunctor(&FormationController::targetDied, this)); 93 }94 95 FormationController::~FormationController()96 {97 if (this->isInitialized())93 } 94 95 FormationController::~FormationController() 96 { 97 if (this->isInitialized()) 98 98 { 99 99 this->removeFromFormation(); … … 123 123 } 124 124 } 125 }126 127 void FormationController::XMLPort(Element& xmlelement, XMLPort::Mode mode)125 } 126 127 void FormationController::XMLPort(Element& xmlelement, XMLPort::Mode mode) 128 128 { 129 129 SUPER(FormationController, XMLPort, xmlelement, mode); … … 137 137 138 138 139 /**139 /** 140 140 @brief Activates / deactivates formationflight behaviour 141 141 @param form activate formflight if form is true 142 142 */ 143 void FormationController::formationflight(const bool form)143 void FormationController::formationflight(const bool form) 144 144 { 145 145 for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it) … … 168 168 } 169 169 170 /**170 /** 171 171 @brief Get all masters to do a "specific master action" 172 172 @param action which action to perform (integer, so it can be called with a console command (tmp solution)) … … 198 198 } 199 199 200 /**200 /** 201 201 @brief Sets shooting behaviour of pawns. 202 202 @param passive if true, bots won't shoot. … … 225 225 } 226 226 227 /**227 /** 228 228 @brief Sets maximal formation size 229 229 @param size maximal formation size. … … 282 282 Vector2 coord = get2DViewcoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target); 283 283 float distance = (target - this->getControllableEntity()->getPosition()).length(); 284 285 286 287 288 289 290 284 if(coord.x < 0.0001 && coord.y < 0.0001) 285 { 286 // if the ship reaches a direction very close to the direct one, set it to the direct one 287 Vector3 v_temp = this->getControllableEntity()->getPosition(); 288 Quaternion quat = v_temp.getRotationTo(target); 289 this->getControllableEntity()->rotate(quat); 290 } 291 291 292 292 if(this->state_ == FREE) … … 324 324 325 325 if(this->state_ == SLAVE) 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 } else this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER); 342 343 } else { 344 this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER + distance/300.0f); 345 } 346 326 { 327 328 this->getControllableEntity()->rotateYaw(-2.0f * ROTATEFACTOR_MASTER * coord.x * 2); 329 this->getControllableEntity()->rotatePitch(2.0f * ROTATEFACTOR_MASTER * coord.y * 2); 330 331 if (distance < 300) 332 { 333 if (bHasTargetOrientation_) 334 { 335 copyTargetOrientation(); 336 } 337 if (distance < 100) 338 { //linear speed reduction 339 this->getControllableEntity()->moveFrontBack(distance/100.0f*0.4f*SPEED_MASTER); 340 } 341 else 342 this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER); 343 } 344 else 345 this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER + distance/300.0f); 346 } 347 347 348 348 if (distance < 10) 349 349 { 350 350 this->positionReached(); 351 352 } 353 } 354 355 356 357 void FormationController::moveToTargetPosition()351 bHasTargetOrientation_=false; 352 } 353 } 354 355 356 357 void FormationController::moveToTargetPosition() 358 358 { 359 359 this->moveToPosition(this->targetPosition_); 360 360 } 361 361 362 //copy the Roll orientation of given Quaternion.363 void FormationController::copyOrientation(const Quaternion& orient)362 //copy the Roll orientation of given Quaternion. 363 void FormationController::copyOrientation(const Quaternion& orient) 364 364 { 365 365 //roll angle difference in radian … … 379 379 380 380 381 /**381 /** 382 382 @brief Unregisters a slave from its master. Initiated by a slave. 383 383 */ … … 469 469 } 470 470 } 471 /** 471 472 /** 472 473 @brief Commands the slaves of a master into a formation. Sufficiently fast not to be called within tick. Initiated by a master. 473 474 */ 474 475 void FormationController::commandSlaves() 475 void FormationController::commandSlaves() 476 476 { 477 477 if(this->state_ != MASTER) return; … … 487 487 } 488 488 else 489 489 // formation: 490 490 { 491 491 dest += 1.0f*orient*WorldEntity::BACK; 492 492 Vector3 pos = Vector3::ZERO; 493 493 bool left=true; 494 494 int i = 1; 495 495 … … 689 689 690 690 if (specificMasterActionHoldCount_ == 0) 691 691 { 692 692 this->specificMasterAction_ = NONE; 693 693 this->searchNewTarget(); 694 } 695 else specificMasterActionHoldCount_--; 694 } 695 else 696 specificMasterActionHoldCount_--; 696 697 } 697 698 … … 717 718 void FormationController::turn180() 718 719 { 719 720 721 722 723 724 720 Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, this->targetPosition_); 721 722 this->getControllableEntity()->rotateYaw(-2.0f * sgn(coord.x) * coord.x*coord.x); 723 this->getControllableEntity()->rotatePitch(2.0f * sgn(coord.y) * coord.y*coord.y); 724 725 this->getControllableEntity()->moveFrontBack(SPEED_MASTER); 725 726 } 726 727 … … 740 741 void FormationController::spin() 741 742 { 742 743 743 this->moveToTargetPosition(); 744 this->getControllableEntity()->rotateRoll(0.8f); 744 745 } 745 746 … … 779 780 if((humanPawn != NULL) && (allMasters.size() != 0)) 780 781 { 781 float posHuman = humanPawn->getPosition().length(); 782 float distance = 0.0f; 783 float minDistance = FLT_MAX; 784 int index = 0; 785 int i = 0; 786 787 for(std::vector<FormationController*>::iterator it = allMasters.begin(); it != allMasters.end(); it++, i++) 788 { 789 if (!FormationController::sameTeam((*it)->getControllableEntity(), humanPawn, (*it)->getGametype())) continue; 790 distance = posHuman - (*it)->getControllableEntity()->getPosition().length(); 791 if(distance < minDistance) index = i; 792 } 793 allMasters[index]->followInit(humanPawn); 794 } 795 796 } 797 798 799 800 782 float posHuman = humanPawn->getPosition().length(); 783 float distance = 0.0f; 784 float minDistance = FLT_MAX; 785 int index = 0; 786 int i = 0; 787 788 for(std::vector<FormationController*>::iterator it = allMasters.begin(); it != allMasters.end(); it++, i++) 789 { 790 if (!FormationController::sameTeam((*it)->getControllableEntity(), humanPawn, (*it)->getGametype())) continue; 791 distance = posHuman - (*it)->getControllableEntity()->getPosition().length(); 792 if(distance < minDistance) index = i; 793 } 794 allMasters[index]->followInit(humanPawn); 795 } 796 } 801 797 802 798 /** … … 820 816 } 821 817 822 /**818 /** 823 819 @brief Master begins to follow a randomly chosen human player of the same team. Is a "specific master action". 824 820 */ … … 848 844 849 845 850 /**846 /** 851 847 @brief Master follows target with adjusted speed. Called within tick. 852 848 */ … … 860 856 861 857 862 void FormationController::setTargetPosition(const Vector3& target)858 void FormationController::setTargetPosition(const Vector3& target) 863 859 { 864 860 this->targetPosition_ = target; … … 924 920 } 925 921 926 void FormationController::forgetTarget()922 void FormationController::forgetTarget() 927 923 { 928 924 this->target_ = 0; … … 930 926 } 931 927 932 void FormationController::targetDied()928 void FormationController::targetDied() 933 929 { 934 930 this->forgetTarget(); … … 936 932 } 937 933 938 bool FormationController::sameTeam(ControllableEntity* entity1, ControllableEntity* entity2, Gametype* gametype)934 bool FormationController::sameTeam(ControllableEntity* entity1, ControllableEntity* entity2, Gametype* gametype) 939 935 { 940 936 if (entity1 == entity2) -
code/branches/presentation2012merge/src/orxonox/gametypes/Mission.cc
r9271 r9272 63 63 { 64 64 this->missionAccomplished_ = false; 65 65 this->end(); 66 66 } 67 67 } … … 78 78 { 79 79 Gametype::end(); 80 /*if (this->missionAccomplished_) 80 /*if (this->missionAccomplished_) 81 81 this->gtinfo_->sendAnnounceMessage("Mission accomplished!"); 82 82 else 83 83 this->gtinfo_->sendAnnounceMessage("Mission failed!"); 84 **/84 */ 85 85 } 86 86 -
code/branches/presentation2012merge/src/orxonox/infos/PlayerInfo.cc
r9257 r9272 173 173 this->changedControllableEntity(); 174 174 175 175 RadarViewable* radarviewable = orxonox_cast<RadarViewable*>(entity); 176 176 if (radarviewable != NULL) 177 177 radarviewable->setRadarName(this->getName()); -
code/branches/presentation2012merge/src/orxonox/interfaces/RadarViewable.h
r9257 r9272 61 61 virtual ~RadarViewable(); 62 62 63 64 65 66 67 68 69 70 71 72 63 virtual void setRadarName(const std::string& name) 64 { 65 if (this->radarName_ != name) 66 { 67 this->radarName_ = name; 68 this->settingsChanged(); 69 } 70 } 71 const std::string& getRadarName() const 72 { return this->radarName_; } 73 73 74 74 inline void setRadarObjectCamouflage(float camouflage) … … 163 163 ColourValue radarObjectColour_; 164 164 float scale_; 165 165 std::string radarName_; 166 166 }; 167 167 } -
code/branches/presentation2012merge/src/orxonox/worldentities/ControllableEntity.cc
r9016 r9272 87 87 this->setPriority( Priority::VeryHigh ); 88 88 this->registerVariables(); 89 89 this->team_ = -1; 90 90 } 91 91 -
code/branches/presentation2012merge/src/orxonox/worldentities/ControllableEntity.h
r9255 r9272 164 164 void setTargetInternal( uint32_t targetID ); 165 165 166 167 168 169 166 inline void setTeam(int team) 167 { this->team_ = team; } 168 inline int getTeam() const 169 { return this->team_; } 170 170 171 171 protected: … … 243 243 WeakPtr<WorldEntity> target_; 244 244 245 245 int team_ ; //<! teamnumber 246 246 }; 247 247 } -
code/branches/presentation2012merge/src/orxonox/worldentities/pawns/Pawn.cc
r9269 r9272 232 232 { 233 233 //Applies multiplier given by the DamageBoost Pickup. 234 235 236 237 238 239 240 234 Pawn *test = dynamic_cast<Pawn *>(originator); 235 if( test != NULL ) 236 { 237 damage *= originator->getDamageMultiplier(); 238 } 239 240 if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator)) 241 241 { 242 242 if (shielddamage >= this->getShieldHealth()) -
code/branches/presentation2012merge/src/orxonox/worldentities/pawns/SpaceShip.cc
r8892 r9272 133 133 { 134 134 SetConfigValue(bInvertYAxis_, false).description("Set this to true for joystick-like mouse behaviour (mouse up = ship down)."); 135 135 136 136 SetConfigValueExternal(bEnableMotionBlur_, "GraphicsSettings", "enableMotionBlur", true) 137 137 .description("Enable or disable the motion blur effect when moving very fast") … … 503 503 void SpaceShip::resetCamera() 504 504 { 505 506 505 if(this->hasLocalController() && this->hasHumanController()) 506 { 507 507 Camera *camera = this->getCamera(); 508 508 if (camera == 0) … … 514 514 camera->setPosition(this->cameraOriginalPosition_); 515 515 camera->setOrientation(this->cameraOriginalOrientation_); 516 516 } 517 517 } 518 518
Note: See TracChangeset
for help on using the changeset viewer.