Tags¶
Gamma uses tags
to control the behaviour and other attributes of entities.
Every entity, (i.e. anything that is a descendant of gma.shapes.rectangle
),
has a property gma.shapes.rectangle.tags
which is a hash.
An entity is considered to have a particular tag if the tag-name can be found in
the gma.shapes.rectangle.tags
property and it has a truthy value.
if (myEntity.tags.fast) {
// This entity has the 'fast' tag.
}
Gamma provides and knows about many tags which control the behaviour of enemies and platforms such as deathtouch, jumping, and weakhead.
Note
When we refer to behaviour here, we mean both movement rules/behaviour, what happens when collisions occur and other attributes of entities.
Setting tags¶
There are two ways you can set tags on an entity:
Adding a tag to the created entity¶
When we have already created an entity, then to give it a tag, we set it to
true
on the gma.shapes.rectangle.tags
property:
var myShape = gma.shapes.rectangle({x:0, y:0, width:1, height:1});
//Give the entity "deathly", "scared" and "psycho" tags.
myShape.tags.deathly = true;
myShape.tags.scared = true;
myShape.tags.psycho = true;
Listing tags when instantiating the entity¶
You can also give an entity some tags when you create it. Specify tags by
providing the tag as an array of strings. The entity will set each listed tag
to true
in the gma.shapes.rectangle.tags
list.
var myShape = gma.shapes.rectangle({
x:0, y:0, width:1, height:1,
tags : ['deathly', 'scared', 'psycho']
});
// Print tags to the console
console.log(myShape.tags);
// The console will output:
// {deathly : true, scared : true, psycho : true, shape : true}
// ::NOTE:: gma.shapes.rectangle will set a tag of "shape" on the entity
Removing tags¶
You can remove tags by using the javascript delete keyword.
var myShape = gma.shapes.rectangle({
x:0, y:0, width:1, height:1,
tags : ['deathly', 'scared', 'psycho']
});
// Checking it exists at all before deleting it is good practise
if (myShape.tags.deathly) {
delete myShape.tags.deathly;
}
// Print tags to the console
console.log(myShape.tags);
// The console will output:
// {scared : true, psycho : true, shape : true}