Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 9319 for code/branches


Ignore:
Timestamp:
Jul 21, 2012, 3:34:45 PM (12 years ago)
Author:
landauf
Message:

refactored PickupSpawner - it doesn't clone a sample-pickup anymore, it creates new pickups from a template.
removed DroppedPickup because it is not needed anymore, PickupSpawner has now the same functionality.
the representation of the pickup spawner is now destroyed if the pickup is taken and re-created if it spawns again (instead of changing the visibility). makes it easier to change the pickup in a spawner during the game.
adjusted all level files accordingly

Location:
code/branches/presentation2012merge
Files:
2 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation2012merge/data/levels/SurfaceRacePresentation.oxw

    r9272 r9319  
    324324
    325325
    326  <PickupSpawner position="4000,8050,0" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8">
    327       <pickup>
    328         <SpeedPickup template=smallspeedpickup />
    329       </pickup>
    330     </PickupSpawner>
    331 
    332    <PickupSpawner position="5500,8100,2000" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8">
    333       <pickup>
    334         <SpeedPickup template=mediumspeedpickup />
    335       </pickup>
    336     </PickupSpawner>
    337 
    338     <PickupSpawner position="3000,8050,-4000" triggerDistance="40" respawnTime="60"  maxSpawnedItems="5" scale="8">
    339       <pickup>
    340         <ShrinkPickup template ="mediumshrinkpickup"/>
    341       </pickup>
    342     </PickupSpawner>>
     326   <PickupSpawner pickup=smallspeedpickup position="4000,8050,0" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
     327   <PickupSpawner pickup=mediumspeedpickup position="5500,8100,2000" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
     328   <PickupSpawner pickup="mediumshrinkpickup" position="3000,8050,-4000" triggerDistance="40" respawnTime="60"  maxSpawnedItems="5" scale="8" />
    343329
    344330
  • code/branches/presentation2012merge/data/levels/lastManStanding.oxw

    r9272 r9319  
    5050                    <Model position="0,0,0" scale=140 mesh="asteroid_UV.mesh" shadow=true />
    5151                    <Model position="-160,40,28.4" scale=1 mesh="sphere.mesh" /><!--EasterEgg indicator-->
    52                     <PickupSpawner position="-160,40,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="15"><!--EasterEgg : invisible pickup is hidden inside the asteroid -->
    53                         <pickup>
    54                             <InvisiblePickup template=hugeinvisiblepickup />
    55                         </pickup>
    56                     </PickupSpawner>
     52                    <PickupSpawner pickup=hugeinvisiblepickup position="-160,40,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="15" /><!--EasterEgg : invisible pickup is hidden inside the asteroid -->
    5753                </attached>
    5854            </MovableEntity>
  • code/branches/presentation2012merge/data/levels/lastTeamStanding.oxw

    r9316 r9319  
    4848    </StaticEntity>
    4949
    50     <PickupSpawner position="-160,60,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="10"><!--EasterEgg-->
    51       <pickup>
    52         <InvisiblePickup template=hugeinvisiblepickup />
    53       </pickup>
    54     </PickupSpawner>
     50    <PickupSpawner pickup=hugeinvisiblepickup position="-160,60,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="10" /><!--EasterEgg-->
    5551    <StaticEntity position="-160,60,28.4"><!--EasterEgg-Indicator-->
    5652      <attached>
  • code/branches/presentation2012merge/data/levels/missionOne.oxw

    r9271 r9319  
    11531153
    11541154<!-- @Objects: Pickup - find better place !! -->
    1155     <PickupSpawner position="-48650,700,100" triggerDistance="70" respawnTime="30" maxSpawnedItems="1">
    1156       <pickup>
    1157         <ShieldPickup template=hugeshieldpickup />
    1158       </pickup>
    1159     </PickupSpawner>
     1155    <PickupSpawner pickup=hugeshieldpickup position="-48650,700,100" triggerDistance="70" respawnTime="30" maxSpawnedItems="1" />
    11601156
    11611157
  • code/branches/presentation2012merge/data/levels/pickups.oxw

    r9318 r9319  
    3737    <!-- Shield pickups -->
    3838
    39     <PickupSpawner position="-25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    40       <pickup>
    41         <ShieldPickup template=smallshieldpickup />
    42       </pickup>
    43     </PickupSpawner>
    44 
    45     <PickupSpawner position="0,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    46       <pickup>
    47         <ShieldPickup template=mediumshieldpickup />
    48       </pickup>
    49     </PickupSpawner>
    50 
    51     <PickupSpawner position="25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    52       <pickup>
    53         <ShieldPickup template=hugeshieldpickup />
    54       </pickup>
    55     </PickupSpawner>
     39    <PickupSpawner pickup=smallshieldpickup position="-25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     40    <PickupSpawner pickup=mediumshieldpickup position="0,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     41    <PickupSpawner pickup=hugeshieldpickup position="25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    5642
    5743    <!-- Health pickups -->
    5844
    59     <PickupSpawner position="-25,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    60       <pickup>
    61         <HealthPickup template=smallhealthpickup />
    62       </pickup>
    63     </PickupSpawner>
    64 
    65     <PickupSpawner position="0,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    66       <pickup>
    67         <HealthPickup template=mediumhealthpickup />
    68       </pickup>
    69     </PickupSpawner>
    70 
    71     <PickupSpawner position="25,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    72       <pickup>
    73         <HealthPickup template=hugehealthpickup />
    74       </pickup>
    75     </PickupSpawner>
    76 
    77     <PickupSpawner position="50,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    78       <pickup>
    79         <HealthPickup template=crazyhealthpickup />
    80       </pickup>
    81     </PickupSpawner>
     45    <PickupSpawner pickup=smallhealthpickup position="-25,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     46    <PickupSpawner pickup=mediumhealthpickup position="0,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     47    <PickupSpawner pickup=hugehealthpickup position="25,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     48    <PickupSpawner pickup=crazyhealthpickup position="50,0,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    8249
    8350    <!-- Speed pickups -->
    8451
    85     <PickupSpawner position="-25,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    86       <pickup>
    87         <SpeedPickup template=smallspeedpickup />
    88       </pickup>
    89     </PickupSpawner>
    90 
    91     <PickupSpawner position="0,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    92       <pickup>
    93         <SpeedPickup template=mediumspeedpickup />
    94       </pickup>
    95     </PickupSpawner>
    96 
    97     <PickupSpawner position="25,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    98       <pickup>
    99         <SpeedPickup template=hugespeedpickup />
    100       </pickup>
    101     </PickupSpawner>
    102 
    103     <PickupSpawner position="50,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    104       <pickup>
    105         <SpeedPickup template=smalljumppickup />
    106       </pickup>
    107     </PickupSpawner>
     52    <PickupSpawner pickup=smallspeedpickup position="-25,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
     53    <PickupSpawner pickup=mediumspeedpickup position="0,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
     54    <PickupSpawner pickup=hugespeedpickup position="25,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
     55    <PickupSpawner pickup=smalljumppickup position="50,25,-125" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
    10856
    10957    <!-- Invisible pickups -->
    11058
    111     <PickupSpawner position="-25,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    112       <pickup>
    113         <InvisiblePickup template=smallinvisiblepickup />
    114       </pickup>
    115     </PickupSpawner>
    116 
    117     <PickupSpawner position="0,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    118       <pickup>
    119         <InvisiblePickup template=mediuminvisiblepickup />
    120       </pickup>
    121     </PickupSpawner>
    122 
    123     <PickupSpawner position="25,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    124       <pickup>
    125         <InvisiblePickup template=hugeinvisiblepickup />
    126       </pickup>
    127     </PickupSpawner>
     59    <PickupSpawner pickup=smallinvisiblepickup position="-25,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     60    <PickupSpawner pickup=mediuminvisiblepickup position="0,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     61    <PickupSpawner pickup=hugeinvisiblepickup position="25,50,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    12862
    12963    <!-- Meta pickups -->
    13064
    131     <PickupSpawner position="-25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    132       <pickup>
    133         <MetaPickup representation="use" metaType="use" />
    134       </pickup>
    135     </PickupSpawner>
    136 
    137     <PickupSpawner position="0,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    138       <pickup>
    139         <MetaPickup representation="drop" metaType="drop" />
    140       </pickup>
    141     </PickupSpawner>
    142 
    143     <PickupSpawner position="25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    144       <pickup>
    145         <MetaPickup metaType="destroy" />
    146       </pickup>
    147     </PickupSpawner>
    148 
    149     <PickupSpawner position="50,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    150       <pickup>
    151         <MetaPickup metaType="destroyCarrier" />
    152       </pickup>
    153     </PickupSpawner>
     65    <Template name=usemetapickup baseclass=MetaPickup>
     66      <MetaPickup representation="use" metaType="use" />
     67    </Template>
     68   
     69    <Template name=dropmetapickup baseclass=MetaPickup>
     70      <MetaPickup representation="drop" metaType="drop" />
     71    </Template>
     72   
     73    <Template name=destroymetapickup baseclass=MetaPickup>
     74      <MetaPickup metaType="destroy" />
     75    </Template>
     76   
     77    <Template name=destroycarriermetapickup baseclass=MetaPickup>
     78      <MetaPickup metaType="destroyCarrier" />
     79    </Template>
     80   
     81    <PickupSpawner pickup=usemetapickup position="-25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     82    <PickupSpawner pickup=dropmetapickup position="0,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     83    <PickupSpawner pickup=destroymetapickup position="25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     84    <PickupSpawner pickup=destroycarriermetapickup position="50,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    15485
    15586    <!-- Pickup Collection pickups -->
    15687
    157     <PickupSpawner position="-50,25,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    158       <pickup>
    159         <PickupCollection template=triplehealthspeedinvisibilitypickup />
    160       </pickup>
    161     </PickupSpawner>
     88    <PickupSpawner pickup=triplehealthspeedinvisibilitypickup position="-50,25,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    16289   
    16390    <!-- Drone pickup -->
    16491   
    165     <PickupSpawner position="-50,50,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    166       <pickup>
    167         <DronePickup template=dronepickup />
    168       </pickup>
    169     </PickupSpawner>
     92    <PickupSpawner pickup=dronepickup position="-50,50,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    17093   
    17194    <!-- DamageBoost pickup -->
    17295   
    173     <PickupSpawner position="-50,75,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    174       <pickup>
    175         <DamageBoostPickup template=smalldamageboostpickup />
    176       </pickup>
    177     </PickupSpawner>
    178    
    179       <PickupSpawner position="-50,100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    180       <pickup>
    181         <DamageBoostPickup template=mediumdamageboostpickup />
    182       </pickup>
    183     </PickupSpawner>
    184    
    185       <PickupSpawner position="-50,125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    186       <pickup>
    187         <DamageBoostPickup template=largedamageboostpickup />
    188       </pickup>
    189     </PickupSpawner>
    190    
     96    <PickupSpawner pickup=smalldamageboostpickup position="-50,75,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     97    <PickupSpawner pickup=mediumdamageboostpickup position="-50,100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     98    <PickupSpawner pickup=largedamageboostpickup position="-50,125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    19199   
    192100    <!-- Other pickups -->
     
    201109    />
    202110
    203     <PickupSpawner position="-50,0,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    204       <pickup>
    205         <HealthPickup representation="MediumHealth" health=500 activationType=immediate healthRate=10 durationType=continuous />
    206       </pickup>
    207     </PickupSpawner>
     111    <Template name=continuoushealthpickup baseclass=HealthPickup>
     112      <HealthPickup representation="MediumHealth" health=500 activationType=immediate healthRate=10 durationType=continuous />
     113    </Template>
     114   
     115    <PickupSpawner pickup=continuoushealthpickup position="-50,0,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    208116
    209     <PickupSpawner position="-25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    210       <pickup>
    211         <ShrinkPickup template ="smallshrinkpickup"/>
    212       </pickup>
    213     </PickupSpawner>
    214 
    215     <PickupSpawner position="0,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    216       <pickup>
    217         <ShrinkPickup template ="mediumshrinkpickup"/>
    218       </pickup>
    219     </PickupSpawner>
    220 
    221     <PickupSpawner position="25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    222       <pickup>
    223         <ShrinkPickup template ="hugeshrinkpickup"/>
    224       </pickup>
    225     </PickupSpawner>
     117    <PickupSpawner pickup="smallshrinkpickup" position="-25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
     118    <PickupSpawner pickup="mediumshrinkpickup" position="0,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
     119    <PickupSpawner pickup="hugeshrinkpickup" position="25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    226120   
    227121    <!-- @Objects: 4 boxes (uncontrolled pawns) -->
  • code/branches/presentation2012merge/data/levels/portals.oxw

    r9316 r9319  
    3939    <PortalLink fromID="2" toID="1" />
    4040
    41     <!--PickupSpawner position="-200,0,0" triggerDistance="10" respawnTime="10" maxSpawnedItems="10">
    42       <pickup>
    43         <DronePickup template=dronepickup />
    44       </pickup>
    45     </PickupSpawner-->
     41    <!--PickupSpawner pickup=dronepickup position="-200,0,0" triggerDistance="10" respawnTime="10" maxSpawnedItems="10" /-->
    4642
    4743    <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" />
  • code/branches/presentation2012merge/data/levels/presentation09b.oxw

    r9318 r9319  
    9494    </SpaceShip>
    9595
    96     <PickupSpawner position="-3800, 2500, 1500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    97       <pickup>
    98         <SpeedPickup template=smalljumppickup />
    99       </pickup>
    100     </PickupSpawner>
     96    <PickupSpawner pickup=smalljumppickup position="-3800, 2500, 1500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    10197
    10298    <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     
    109105    />
    110106
    111     <PickupSpawner position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    112       <pickup>
    113         <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
    114       </pickup>
    115     </PickupSpawner>
    116 
    117     <PickupSpawner position="2300, 4300, 2400" respawnTime="5" triggerDistance="20">
    118       <pickup>
    119         <HealthPickup template=mediumhealthpickup />
    120       </pickup>
    121     </PickupSpawner>
     107    <Template name=onusehealthpickup baseclass=HealthPickup>
     108      <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
     109    </Template>
     110
     111    <PickupSpawner pickup=onusehealthpickup position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
     112
     113    <PickupSpawner pickup=mediumhealthpickup position="2300, 4300, 2400" respawnTime="5" triggerDistance="20" />
    122114
    123115    <Billboard position="-2500, 2400, 1500" material="Examples/Flare" />
  • code/branches/presentation2012merge/data/levels/presentationFS10.oxw

    r9318 r9319  
    102102    <?lua end ?>
    103103
    104     <PickupSpawner position="500,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    105       <pickup>
    106         <DronePickup template=dronepickup />
    107       </pickup>
    108     </PickupSpawner>
     104    <PickupSpawner pickup=dronepickup position="500,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    109105
    110106    <!-- Shield pickups -->
    111107
    112     <PickupSpawner position="-25,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    113       <pickup>
    114         <ShieldPickup template=hugeshieldpickup />
    115       </pickup>
    116     </PickupSpawner>
     108    <PickupSpawner pickup=hugeshieldpickup position="-25,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    117109
    118110    <!-- Health pickups -->
    119111
    120     <PickupSpawner position="0,-75,-500" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
    121       <pickup>
    122         <HealthPickup template=hugehealthpickup />
    123       </pickup>
    124     </PickupSpawner>
     112    <PickupSpawner pickup=hugehealthpickup position="0,-75,-500" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    125113
    126114    <!-- Speed pickups -->
    127115
    128     <PickupSpawner position="25,-50,-500" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    129       <pickup>
    130         <SpeedPickup template=hugespeedpickup />
    131       </pickup>
    132     </PickupSpawner>
    133 
    134     <PickupSpawner position="50,-50,-500" triggerDistance="10" respawnTime="10" maxSpawnedItems="99">
    135       <pickup>
    136         <SpeedPickup template=smalljumppickup />
    137       </pickup>
    138     </PickupSpawner>
     116    <PickupSpawner pickup=hugespeedpickup position="25,-50,-500" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
     117    <PickupSpawner pickup=smalljumppickup position="50,-50,-500" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" />
    139118
    140119    <!-- Invisible pickups -->
    141120
    142     <PickupSpawner position="0,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
    143       <pickup>
    144         <InvisiblePickup template=hugeinvisiblepickup />
    145       </pickup>
    146     </PickupSpawner>
     121    <PickupSpawner pickup=hugeinvisiblepickup position="0,-50,-500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
    147122
    148123    <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     
    155130    />
    156131
    157     <PickupSpawner position="25,-75,-500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    158       <pickup>
    159         <HealthPickup representation="MediumHealth" health=50 activationType=onUse durationType=once />
    160       </pickup>
    161     </PickupSpawner>
     132    <Template name=onusehealthpickup baseclass=HealthPickup>
     133      <HealthPickup representation="MediumHealth" health=50 activationType=onUse durationType=once />
     134    </Template>
     135
     136    <PickupSpawner pickup=onusehealthpickup position="25,-75,-500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    162137
    163138  </Scene>
  • code/branches/presentation2012merge/data/levels/presentationFS11.oxw

    r9016 r9319  
    422422    </SimpleNotification>
    423423
    424     <PickupSpawner position="-72487,420,-63" respawnTime="10" triggerDistance="20" maxSpawnedItems="5" active="false">
    425       <pickup>
    426         <ShrinkPickup template ="smallshrinkpickup"/>
    427       </pickup>
     424    <PickupSpawner pickup="smallshrinkpickup" position="-72487,420,-63" respawnTime="10" triggerDistance="20" maxSpawnedItems="5" active="false">
    428425      <events>
    429426        <activity>
  • code/branches/presentation2012merge/data/levels/presentationHS09.oxw

    r9318 r9319  
    9797    <Billboard material="Test/Fog" position="-3800, 2500, 1500" alpha="0.1" color="1, 1, 1, 0.1" scale="0.5" />
    9898
    99     <PickupSpawner position="-3800, 2500, 1500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    100       <pickup>
    101         <SpeedPickup template=smalljumppickup />
    102       </pickup>
    103     </PickupSpawner>
     99    <PickupSpawner pickup=smalljumppickup position="-3800, 2500, 1500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    104100
    105101    <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     
    112108    />
    113109
    114     <PickupSpawner position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
    115       <pickup>
    116         <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
    117       </pickup>
    118     </PickupSpawner>
    119 
    120     <PickupSpawner position="2300, 4300, 2400" respawnTime="5" triggerDistance="20">
    121       <pickup>
    122         <HealthPickup template=mediumhealthpickup />
    123       </pickup>
    124     </PickupSpawner>
     110    <Template name=onusehealthpickup baseclass=HealthPickup>
     111      <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
     112    </Template>
     113
     114    <PickupSpawner pickup=onusehealthpickup position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
     115
     116    <PickupSpawner pickup=mediumhealthpickup position="2300, 4300, 2400" respawnTime="5" triggerDistance="20" />
    125117
    126118    <Billboard position="-2500, 2400, 1500" material="Examples/Flare" />
  • code/branches/presentation2012merge/data/levels/surfaceRace.oxw

    r9301 r9319  
    399399
    400400
    401  <PickupSpawner position="4000,8050,0" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8">
    402       <pickup>
    403         <SpeedPickup template=smallspeedpickup />
    404       </pickup>
    405     </PickupSpawner>
    406 
    407    <PickupSpawner position="5500,8100,2000" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8">
    408       <pickup>
    409         <SpeedPickup template=mediumspeedpickup />
    410       </pickup>
    411     </PickupSpawner>
    412 
    413     <PickupSpawner position="3000,8050,-4000" triggerDistance="40" respawnTime="60"  maxSpawnedItems="5" scale="8">
    414       <pickup>
    415         <ShrinkPickup template ="mediumshrinkpickup"/>
    416       </pickup>
    417     </PickupSpawner>>
     401   <PickupSpawner pickup=smallspeedpickup position="4000,8050,0" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
     402   <PickupSpawner pickup=mediumspeedpickup position="5500,8100,2000" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
     403   <PickupSpawner pickup="mediumshrinkpickup" position="3000,8050,-4000" triggerDistance="40" respawnTime="60"  maxSpawnedItems="5" scale="8" />
    418404
    419405
  • code/branches/presentation2012merge/data/levels/templates/pickupRepresentationTemplates.oxt

    r9318 r9319  
    1717</Template>
    1818
    19 <Template name=smallshieldpickup>
     19<Template name=smallshieldpickup baseclass=ShieldPickup>
    2020  <ShieldPickup
    2121    representation = "smallshieldpickup"
     
    4444</Template>
    4545
    46 <Template name=mediumshieldpickup>
     46<Template name=mediumshieldpickup baseclass=ShieldPickup>
    4747  <ShieldPickup
    4848    representation = "mediumshieldpickup"
     
    7272</Template>
    7373
    74 <Template name=hugeshieldpickup>
     74<Template name=hugeshieldpickup baseclass=ShieldPickup>
    7575  <ShieldPickup
    7676    representation = "hugeshieldpickup"
     
    101101</Template>
    102102
    103 <Template name=smallhealthpickup>
     103<Template name=smallhealthpickup baseclass=HealthPickup>
    104104  <HealthPickup
    105105    representation = "smallhealthpickup"
     
    127127</Template>
    128128
    129 <Template name=mediumhealthpickup>
     129<Template name=mediumhealthpickup baseclass=HealthPickup>
    130130  <HealthPickup
    131131    representation = "mediumhealthpickup"
     
    153153</Template>
    154154
    155 <Template name=hugehealthpickup>
     155<Template name=hugehealthpickup baseclass=HealthPickup>
    156156  <HealthPickup
    157157    representation = "hugehealthpickup"
     
    179179</Template>
    180180
    181 <Template name=crazyhealthpickup>
     181<Template name=crazyhealthpickup baseclass=HealthPickup>
    182182  <HealthPickup
    183183    representation = "crazyhealthpickup"
     
    241241</Template>
    242242
    243 <Template name=smalldamageboostpickup>
     243<Template name=smalldamageboostpickup baseclass=DamageBoostPickup>
    244244  <DamageBoostPickup
    245245    representation = "smalldamageboostpickup"
     
    267267</Template>
    268268
    269 <Template name=mediumdamageboostpickup>
     269<Template name=mediumdamageboostpickup baseclass=DamageBoostPickup>
    270270  <DamageBoostPickup
    271271    representation = "mediumdamageboostpickup"
     
    293293</Template>
    294294
    295 <Template name=largedamageboostpickup>
     295<Template name=largedamageboostpickup baseclass=DamageBoostPickup>
    296296  <DamageBoostPickup
    297297    representation = "largedamageboostpickup"
     
    322322</Template>
    323323
    324 <Template name=smallspeedpickup>
     324<Template name=smallspeedpickup baseclass=SpeedPickup>
    325325  <SpeedPickup
    326326    representation = "smallspeedpickup"
     
    349349</Template>
    350350
    351 <Template name=mediumspeedpickup>
     351<Template name=mediumspeedpickup baseclass=SpeedPickup>
    352352  <SpeedPickup
    353353    representation = "mediumspeedpickup"
     
    376376</Template>
    377377
    378 <Template name=hugespeedpickup>
     378<Template name=hugespeedpickup baseclass=SpeedPickup>
    379379  <SpeedPickup
    380380    representation = "hugespeedpickup"
     
    403403</Template>
    404404
    405 <Template name=smalljumppickup>
     405<Template name=smalljumppickup baseclass=SpeedPickup>
    406406  <SpeedPickup
    407407    representation = "smalljumppickup"
     
    432432</Template>
    433433
    434 <Template name=smallinvisiblepickup>
     434<Template name=smallinvisiblepickup baseclass=InvisiblePickup>
    435435  <InvisiblePickup
    436436    representation = "smallinvisiblepickup"
     
    457457</Template>
    458458
    459 <Template name=mediuminvisiblepickup>
     459<Template name=mediuminvisiblepickup baseclass=InvisiblePickup>
    460460  <InvisiblePickup
    461461    representation = "mediuminvisiblepickup"
     
    482482</Template>
    483483
    484 <Template name=hugeinvisiblepickup>
     484<Template name=hugeinvisiblepickup baseclass=InvisiblePickup>
    485485  <InvisiblePickup
    486486    representation = "hugeinvisiblepickup"
     
    507507</Template>
    508508
    509 <Template name=smallshrinkpickup>
     509<Template name=smallshrinkpickup baseclass=ShrinkPickup>
    510510  <ShrinkPickup
    511511    representation = "smallshrinkpickup"
     
    533533</Template>
    534534
    535 <Template name=mediumshrinkpickup>
     535<Template name=mediumshrinkpickup baseclass=ShrinkPickup>
    536536  <ShrinkPickup
    537537    representation = "mediumshrinkpickup"
     
    559559</Template>
    560560
    561 <Template name=hugeshrinkpickup>
     561<Template name=hugeshrinkpickup baseclass=ShrinkPickup>
    562562  <ShrinkPickup
    563563    representation = "hugeshrinkpickup"
     
    589589</Template>
    590590
    591 <Template name=triplehealthspeedinvisibilitypickup>
     591<Template name=triplehealthspeedinvisibilitypickup baseclass=PickupCollection>
    592592    <PickupCollection
    593593        representation = "triplehealthspeedinvisibilitypickup"
     
    651651</Template>
    652652
    653 <Template name=dronepickup>
     653<Template name=dronepickup baseclass=DronePickup>
    654654    <DronePickup representation=dronepickup droneTemplate=droneTemplate />
    655655</Template>
  • code/branches/presentation2012merge/src/modules/pickup/CMakeLists.txt

    r9318 r9319  
    11SET_SOURCE_FILES(PICKUP_SRC_FILES
    22  CollectiblePickup.cc
    3   DroppedPickup.cc
    43  Pickup.cc
    54  PickupCollection.cc
  • code/branches/presentation2012merge/src/modules/pickup/Pickup.cc

    r9318 r9319  
    3737#include "util/StringUtils.h"
    3838
    39 #include "DroppedPickup.h"
     39#include "PickupSpawner.h"
    4040
    4141namespace orxonox
     
    201201    @brief
    202202        Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
    203         This method must be implemented by any class directly inheriting from Pickupable. It is most easily done by just creating a new DroppedPickup, e.g.:
    204         DroppedPickup(BaseObject* creator, Pickupable* pickup, const Vector3& position);
    205203    @return
    206204        Returns true if a spawner was created, false if not.
     
    208206    bool Pickup::createSpawner(void)
    209207    {
    210         new DroppedPickup(this, this, this->getCarrier());
     208        PickupSpawner::createDroppedPickup(this, this, this->getCarrier());
    211209        return true;
    212210    }
  • code/branches/presentation2012merge/src/modules/pickup/PickupCollection.cc

    r9318 r9319  
    3838
    3939#include "CollectiblePickup.h"
    40 #include "DroppedPickup.h"
     40#include "PickupSpawner.h"
    4141
    4242#include "PickupCollection.h"
     
    348348    @brief
    349349        Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
    350         This method must be implemented by any class directly inheriting from Pickupable. It is most easily done by just creating a new DroppedPickup, e.g.:
    351         DroppedPickup(BaseObject* creator, Pickupable* pickup, const Vector3& position);
    352350    @return
    353351        Returns true if a spawner was created, false if not.
     
    355353    bool PickupCollection::createSpawner(void)
    356354    {
    357         new DroppedPickup(this, this, this->getCarrier());
     355        PickupSpawner::createDroppedPickup(this, this, this->getCarrier());
    358356        return true;
    359357    }
  • code/branches/presentation2012merge/src/modules/pickup/PickupPrereqs.h

    r9318 r9319  
    7070
    7171    class CollectiblePickup;
    72     class DroppedPickup;
    7372    class Pickup;
    7473    class PickupCollection;
  • code/branches/presentation2012merge/src/modules/pickup/PickupSpawner.cc

    r9318 r9319  
    5555        Pointer to the object which created this item.
    5656    */
    57     PickupSpawner::PickupSpawner(BaseObject* creator) : StaticEntity(creator), pickup_(NULL)
     57    PickupSpawner::PickupSpawner(BaseObject* creator) : StaticEntity(creator), pickup_(NULL), representation_(NULL), pickupTemplate_(NULL)
    5858    {
    5959        RegisterObject(PickupSpawner);
    6060
    6161        this->initialize();
    62     }
    63 
    64     /**
    65     @brief
    66         Constructor, Creates a fully functional PickupSpawner.
    67     @param creator
    68         The creator of this PickupSpawner.
    69     @param pickup
    70         The Pickupable to be spawned by this PickupSpawner.
    71     @param triggerDistance
    72         The distance at which the PickupSpawner will trigger.
    73     @param respawnTime
    74         The minimum time between two spawns.
    75     @param maxSpawnedItems
    76         The maximum number of items spawned by this PickupSpawner.
    77     */
    78     PickupSpawner::PickupSpawner(BaseObject* creator, Pickupable* pickup, float triggerDistance, float respawnTime, int maxSpawnedItems) : StaticEntity(creator), pickup_(NULL)
    79     {
    80         RegisterObject(PickupSpawner);
    81 
    82         this->initialize();
    83 
    84         this->pickup_ = pickup;
    85 
    86         this->triggerDistance_ = triggerDistance;
    87         this->respawnTime_ = respawnTime;
    88         this->setMaxSpawnedItems(maxSpawnedItems);
    89 
    90         if(this->pickup_ == NULL)
    91         {
    92             orxout(internal_warning, context::pickups) << "A PickupSpawner was created without a valid Pickupable. This won't work." << endl;
    93             this->setActive(false);
    94         }
    95         else
    96         {
    97             PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getRepresentationName());
    98             this->attach(representation->createSpawnerRepresentation(this));
    99             this->setActive(true);
    100         }
    10162    }
    10263
     
    11273        this->spawnsRemaining_ = INF;
    11374        this->selfDestruct_ = false;
     75
     76        this->setPickupable(NULL);
    11477    }
    11578
     
    12285        if(this->isInitialized() && this->selfDestruct_ && this->pickup_ != NULL)
    12386            this->pickup_->destroy();
     87    }
     88
     89    /**
     90    @brief
     91        Factory method, Creates a fully functional PickupSpawner.
     92    @param creator
     93        The creator of this PickupSpawner.
     94    @param pickup
     95        The Pickupable to be spawned by this PickupSpawner.
     96    @param carrier
     97        The PickupCarrier that carried the input pickup before it was dropped.
     98    @param triggerDistance
     99        The distance at which the PickupSpawner will trigger.
     100    */
     101    /*static*/ PickupSpawner* PickupSpawner::createDroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance)
     102    {
     103        PickupSpawner* spawner = new PickupSpawner(creator);
     104
     105        spawner->setPickupable(pickup);
     106        spawner->setTriggerDistance(triggerDistance);
     107        spawner->setMaxSpawnedItems(1);
     108
     109        spawner->setPosition(carrier->getCarrierPosition());
     110        spawner->block(carrier);
     111
     112        return spawner;
    124113    }
    125114
     
    136125        SUPER(PickupSpawner, XMLPort, xmlelement, mode);
    137126
    138         XMLPortObject(PickupSpawner, Pickupable, "pickup", setPickupable, getPickupable, xmlelement, mode);
    139 
     127        XMLPortParam(PickupSpawner, "pickup", setPickupTemplateName, getPickupTemplateName, xmlelement, mode);
    140128        XMLPortParam(PickupSpawner, "triggerDistance", setTriggerDistance, getTriggerDistance, xmlelement, mode);
    141129        XMLPortParam(PickupSpawner, "respawnTime", setRespawnTime, getRespawnTime, xmlelement, mode);
    142130        XMLPortParam(PickupSpawner, "maxSpawnedItems", setMaxSpawnedItems, getMaxSpawnedItems, xmlelement, mode);
    143 
    144         if(this->pickup_ == NULL)
    145         {
    146             orxout(internal_warning, context::pickups) << "A PickupSpawner was created without a valid Pickupable. This won't work." << endl;
    147             this->setActive(false);
    148         }
    149         else
    150         {
    151             PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getRepresentationName());
    152             this->attach(representation->createSpawnerRepresentation(this));
    153             this->setActive(true);
    154         }
    155     }
    156 
    157     /**
    158     @brief
    159         Invoked when the activity has changed. Sets visibility of attached objects.
    160     */
    161     void PickupSpawner::changedActivity()
    162     {
    163         SUPER(PickupSpawner, changedActivity);
    164 
    165         if(GameMode::isMaster())
    166             this->setVisible(this->isActive());
    167131    }
    168132
     
    199163
    200164                Vector3 distance = it->getWorldPosition() - this->getWorldPosition();
    201                 PickupCarrier* carrier = orxonox_cast<PickupCarrier*>(*it);
     165                PickupCarrier* carrier = static_cast<PickupCarrier*>(*it);
    202166                // If a PickupCarrier, that fits the target-range of the Pickupable spawned by this PickupSpawner, is in trigger-distance and the carrier is not blocked.
    203167                if(distance.length() < this->triggerDistance_ && carrier != NULL && this->blocked_.find(carrier) == this->blocked_.end())
     
    212176    /**
    213177    @brief
     178        Trigger the PickupSpawner.
     179        Adds the pickup to the Pawn that triggered, sets the timer to re-activate and deactives the PickupSpawner.
     180    @param carrier
     181        Carrier which triggered the PickupSpawner.
     182    */
     183    void PickupSpawner::trigger(PickupCarrier* carrier)
     184    {
     185        orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") triggered and active." << endl;
     186
     187        PickupCarrier* target = carrier->getTarget(this->pickup_);
     188
     189        this->block(carrier);
     190
     191        assert(target);
     192        bool pickedUp = this->pickup_->pickup(target);
     193        assert(pickedUp);
     194        pickedUp = false; // To avoid compiler warning.
     195
     196        this->setPickupable(NULL);
     197        this->decrementSpawnsRemaining();
     198    }
     199
     200    void PickupSpawner::setPickupTemplateName(const std::string& name)
     201    {
     202        Template* temp = Template::getTemplate(name);
     203        if (temp)
     204            this->setPickupTemplate(temp);
     205    }
     206
     207    void PickupSpawner::setPickupTemplate(Template* temp)
     208    {
     209        this->pickupTemplate_ = temp;
     210        this->pickupTemplateName_ = temp->getName();
     211
     212        this->setPickupable(this->createPickup());
     213    }
     214
     215    /**
     216    @brief
    214217        Sets the maximum number of spawned items.
    215218    @param items
     
    233236            this->spawnsRemaining_--;
    234237
     238        this->setActive(false);
     239
    235240        if(this->spawnsRemaining_ != 0 && this->respawnTime_ > 0)
    236241        {
    237242            this->startRespawnTimer();
    238 
    239             this->setActive(false);
    240243            this->fireEvent();
    241244        }
     
    243246        {
    244247            orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") empty, selfdestruct initialized." << endl;
    245             this->setActive(false);
    246248            this->destroy();
    247249        }
     
    255257    {
    256258        this->respawnTimer_.setTimer(this->respawnTime_, false, createExecutor(createFunctor(&PickupSpawner::respawnTimerCallback, this)));
     259    }
     260
     261    /**
     262    @brief
     263        Invoked by the timer, re-activates the PickupSpawner.
     264    */
     265    void PickupSpawner::respawnTimerCallback()
     266    {
     267        orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") reactivated." << endl;
     268
     269        this->setPickupable(this->createPickup());
     270    }
     271
     272    /**
     273    @brief
     274        Creates a new Pickupable.
     275    @return
     276        The Pickupable created.
     277    */
     278    Pickupable* PickupSpawner::createPickup(void)
     279    {
     280        if(this->spawnsRemaining_ == 0)
     281        {
     282            orxout(internal_error, context::pickups) << "Massive Error: PickupSpawner still alive until having spawned last item." << endl;
     283            return NULL;
     284        }
     285
     286        if (this->pickupTemplate_ != NULL)
     287        {
     288            Identifier* identifier = this->pickupTemplate_->getBaseclassIdentifier();
     289            if (identifier != NULL)
     290            {
     291                Pickupable* pickup = orxonox_cast<Pickupable*>(identifier->fabricate(this));
     292                orxonox_cast<BaseObject*>(pickup)->addTemplate(this->pickupTemplate_);
     293                return pickup;
     294            }
     295            else
     296                orxout(internal_error, context::pickups) << "No base class defined in pickup-template " << this->pickupTemplateName_ << endl;
     297        }
     298
     299        return NULL;
    257300    }
    258301
     
    265308    void PickupSpawner::setPickupable(Pickupable* pickup)
    266309    {
    267         if(this->pickup_ != NULL)
    268         {
    269             orxout(internal_error, context::pickups) << "In PickupSpawner (&" << this << "): setPickupable called, with this->pickup_ already set." << endl;
    270             return;
    271         }
    272         if(pickup == NULL)
    273         {
    274             orxout(internal_error, context::pickups) << "In PickupSpawner (&" << this << "): Argument of setPickupable is NULL." << endl;
    275             return;
     310        if (this->representation_ != NULL)
     311        {
     312            this->representation_->destroy();
     313            this->representation_ = NULL;
     314        }
     315
     316        if (pickup != NULL)
     317        {
     318            if (this->pickup_ != NULL)
     319                this->pickup_->destroy();
     320
     321            PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(pickup->getRepresentationName());
     322            this->representation_ = representation->createSpawnerRepresentation(this);
     323            this->attach(this->representation_);
     324            this->setActive(true);
     325        }
     326        else
     327        {
     328            this->setActive(false);
    276329        }
    277330
    278331        this->pickup_ = pickup;
    279332    }
    280 
    281     /**
    282     @brief
    283         Get the Pickupable that is spawned by this PickupSpawner.
    284     @return
    285         Returns the Pickupable that is spawned by this PickupSpawner.
    286     */
    287     const Pickupable* PickupSpawner::getPickupable(void) const
    288     {
    289         return this->pickup_;
    290     }
    291 
    292     /**
    293     @brief
    294         Trigger the PickupSpawner.
    295         Adds the pickup to the Pawn that triggered, sets the timer to re-activate and deactives the PickupSpawner.
    296     @param pawn
    297         Pawn which triggered the PickupSpawner.
    298     */
    299     void PickupSpawner::trigger(Pawn* pawn)
    300     {
    301         if(this->isActive()) // Checks whether PickupSpawner is active.
    302         {
    303             orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") triggered and active." << endl;
    304 
    305             PickupCarrier* carrier = orxonox_cast<PickupCarrier*>(pawn);
    306             assert(carrier);
    307 
    308             // If the Pawn isn't a target of the Pickupable.
    309             if(!carrier->isTarget(this->pickup_))
    310             {
    311                 orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") triggered but Pawn wasn't a target of the Pickupable." << endl;
    312                 return;
    313             }
    314 
    315             PickupCarrier* target = carrier->getTarget(this->pickup_);
    316             Pickupable* pickup = this->getPickup();
    317 
    318             this->block(carrier);
    319 
    320             assert(pickup);
    321             assert(target);
    322             bool pickedUp = pickup->pickup(target);
    323             assert(pickedUp);
    324             pickedUp = false; // To avoid compiler warning.
    325 
    326             this->decrementSpawnsRemaining();
    327         }
    328     }
    329 
    330     /**
    331     @brief
    332         Creates a new Pickupable.
    333     @return
    334         The Pickupable created.
    335     */
    336     Pickupable* PickupSpawner::getPickup(void)
    337     {
    338         if(this->spawnsRemaining_ == 0)
    339         {
    340             orxout(internal_error, context::pickups) << "Massive Error: PickupSpawner still alive until having spawned last item." << endl;
    341             return NULL;
    342         }
    343 
    344         Pickupable* pickup = this->pickup_->clone();
    345         return pickup;
    346     }
    347 
    348     /**
    349     @brief
    350         Invoked by the timer, re-activates the PickupSpawner.
    351     */
    352     void PickupSpawner::respawnTimerCallback()
    353     {
    354         orxout(verbose, context::pickups) << "PickupSpawner (&" << this << ") reactivated." << endl;
    355 
    356         this->setActive(true);
    357     }
    358333}
  • code/branches/presentation2012merge/src/modules/pickup/PickupSpawner.h

    r7549 r9319  
    7878        public:
    7979            PickupSpawner(BaseObject* creator); //!< Default Constructor.
    80             PickupSpawner(BaseObject* creator, Pickupable* pickup, float triggerDistance, float respawnTime, int maxSpawnedItems); //!< Constructor.
    8180            virtual ~PickupSpawner(); //!< Destructor.
    8281
     82            static PickupSpawner* createDroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance = 10.0);
     83
    8384            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);  //!< Method for creating a PickupSpawner through XML.
    84             virtual void changedActivity(); //!< Invoked when activity has changed (set visibilty).
    8585            virtual void tick(float dt); //!< Tick, checks if any Pawn is close enough to trigger.
    8686
     
    103103            inline int getMaxSpawnedItems(void) const
    104104                { return this->maxSpawnedItems_; }
     105            /**
     106            @brief Returns the name of the template which is used to create a pickup for this spawner.
     107            */
     108            inline const std::string& getPickupTemplateName() const
     109                { return this->pickupTemplateName_; }
     110            /**
     111            @brief Returns the template which is used to create a pickup for this spawner.
     112            */
     113            inline Template* getPickupTemplate() const
     114                {return this->pickupTemplate_; }
    105115
    106         protected:
     116        private:
     117            void initialize(void);
     118
     119            void trigger(PickupCarrier* carrier); //!< Method called when a carrier is close enough.
     120            void respawnTimerCallback(); //!< Method called when the timer runs out.
     121
    107122            void decrementSpawnsRemaining(void); //!< Decrements the number of remaining spawns.
    108123            void startRespawnTimer(void); //!< Invoked by the timer, re-activates the PickupSpawner.
     
    128143            inline void setRespawnTime(float time)
    129144                { this->respawnTime_ = time; }
     145
    130146            void setMaxSpawnedItems(int items); //!< Sets the maximum number of spawned items.
    131147
    132             virtual Pickupable* getPickup(void); //!< Creates a new Pickupable.
     148            void setPickupTemplateName(const std::string& name);
     149            void setPickupTemplate(Template* temp);
    133150
     151            Pickupable* createPickup(void); //!< Creates a new Pickupable.
    134152            void setPickupable(Pickupable* pickup); //!< Sets a Pickupable for the PickupSpawner to spawn.
    135             const Pickupable* getPickupable(void) const; //!< Get the Pickupable that is spawned by this PickupSpawner.
    136153
    137154            Pickupable* pickup_; //!< The pickup to be spawned.
    138 
    139         private:
    140             void initialize(void);
    141 
    142             void trigger(Pawn* pawn); //!< Method called when a Pawn is close enough.
    143             void respawnTimerCallback(); //!< Method called when the timer runs out.
     155            StaticEntity* representation_; //!< The active representation of the spawner.
     156            std::string pickupTemplateName_; //!< The name of the pickup template.
     157            Template* pickupTemplate_; //!< The template to be used to create a pickupable.
    144158
    145159            int maxSpawnedItems_; //!< Maximum number of items spawned by this PickupSpawner.
  • code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.h

    r9318 r9319  
    171171            /**
    172172            @brief Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
    173                    This method must be implemented by any class directly inheriting from Pickupable. It is most easily done by just creating a new DroppedPickup, e.g.:
    174                    DroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance);
     173                   This method must be implemented by any class directly inheriting from Pickupable.
    175174            @return Returns true if a spawner was created, false if not.
    176175            */
Note: See TracChangeset for help on using the changeset viewer.