Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Version 1 and Version 2 of code/doc/Pickups


Ignore:
Timestamp:
Mar 18, 2010, 4:08:30 PM (14 years ago)
Author:
dafrick
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • code/doc/Pickups

    v1 v2  
    22
    33== Description ==
    4 Pickups, or more precisely Pickupables (in the following refereed to as pickups), are items that can be picked up by other entities (which are derived from the PickupCarrier class and I will in the following simply refer to as carriers) and have some effect on the carrier.
     4Pickups, or more precisely Pickupables (in the following referred to as pickups), are items that can be picked up by other entities (which are derived from the PickupCarrier class and I will in the following simply refer to as carriers) and have some effect on the carrier.
    55
    66== HowTo's ==
     
    1010I wanted to make including pickups in level as simple as possible, while also ensuring a division between the pickup itself and how it looks. For you to be able to use pickups in your level you need to understand a few concepts.
    1111-  Pickups (Pickupables) are entities which have no physical (or graphical) dimension. The simply represent the effect they will have on a carrier, when used.
    12 - The physical (or graphical) dimension of a pickup is called a PickupRepresentation (or in the following refereed to as representation).
     12- The physical (or graphical) dimension of a pickup is called a PickupRepresentation (or in the following referred to as representation).
    1313- The representation of a pickup and the pickup itself are linked to each other, meaning a representation can only represent one type of pickup.
    1414- The entity that actually gives a pickup to a carrier is called a PickupSpawner (in the following called spawner). A spawner creates (based on some parameters) pickups which can be picked up and how the spawner looks in the game is defined by the representation of the pickup it spawns.
     15- A type of pickup is a specific pickup class with values for all its relevant parameters. This means, that a pickup of the same class with the same values for all parameters except for one is a different type of pickup and will therefore have a different representation.
    1516
    1617==== Using predefined pickups ====
     
    5758}}}
    5859
    59 work in progress...
     60==== Using not-predefined pickups ====
     61
     62Now let's assume you're not satisfied with the pickups that are provided by the two before mentioned file, but you're not much of a coder as well. Luckily there is a way for you. Pickups were created with a broad range of use in mind, which means that the pickups provided by the files are not all there is.
     63
     64There is no minimum requirement to use pickups in your level files, as long as they have been coded in C++. e.g.
     65
     66{{{
     67<PickupSpawner position="-100,0,-100" respawnTime="30" maxSpawnedItems="10">
     68   <pickup>
     69       <HealthPickup
     70         health = 33
     71         healthType = "limited"
     72         activationType = "immediate"
     73         durationType = "once"
     74       />
     75   </pickup>
     76</PickupSpawner>
     77}}}
     78
     79As you can see in the pickup_representation_templates.oxt file and the pickups.oxi file there is no representation defined for this pickup, so the default representation will be used.
     80
     81Now let us assume you want to create a representation for the inserted pickup above. This is done by creating a representation within the scene.
     82
     83{{{
     84<PickupRepresentation
     85    name = "My new health pickup"
     86    description = "This is an awesome new health pickup."
     87    spawnerTemplate = "newhealthpickupRepresentation"
     88>
     89    <pickup>
     90        <HealthPickup
     91         health = 33
     92         healthType = "limited"
     93         activationType = "immediate"
     94         durationType = "once"
     95       />
     96    </pickup>
     97</PickupRepresentation>
     98}}}
     99
     100As you maybe have noticed by now, we also have to define the template for the representation which is used in
     101
     102{{{
     103    spawnerTemplate = "newhealthpickupRepresentation"
     104}}}
     105
     106the template you need to create defines how the pickup (or actually the spawner) is displayed in your level.
     107
     108{{{
     109<Template name=newhealthpickupRepresentation>
     110    <PickupRepresentation>
     111        <spawner-representation>
     112            <StaticEntity>
     113                <attached>
     114                    -- Here you can put all the objects which define the look of the spawner. --
     115                </attached>
     116            </StaticEntity>
     117        </spawner-representation>
     118    </PickupRepresentation>
     119</Template>
     120}}}
     121
     122Your done. Now you have a new pickup type with an appropriate representation for your use. If you feel that it is useful in general please don't hesitate create a template for the pickup and add your pickup to the pickup_representation_templates.oxt file and the pickups.oxi file, so that anyone who wants to use kit can do so quite easily.
     123
     124Let's assume you're still not satisfied. I mean, come on, we just used a pickup that already existed and created a new type by changing some parameter values and adding a representation, that's not really anything new now, is it?
     125
     126Well I've got something for you. It's called a PickupCollection (in the following just referred to as collection). A collection is comprised of many different types of pickups and behaves just as if it were one pickup itself. This is how you create one:
     127
     128{{{
     129<PickupCollection>
     130    <pickupables>
     131        -- some pickups you want th have in your collection, e.g. --
     132        <HealthPickup template=smallhealthpickup />
     133        <HealthPickup health=50 healthRate=5 durationType=continuous activationType=immediate healthType=limited />
     134    </pickupables>
     135</PickupCollection>
     136}}}
     137
     138That's it, there's nothing more to it. However if you have questions regarding any of the above please feel free to contact [wiki:DamianFrick|me].
     139
     140=== Creating a new pickup ===
     141