Diese Funktion löscht eine gewünschte Art von Entity im angegebenen Radius. Die Anzahl ist dabei auf 16 pro angegebener Entity beschränkt. Ggf. muss dann mittels einer Schleife das Gebiet entsprechend „gesäubert“ werden.
Die Parameter (_position, _range,_entity)
_position: Ist die Position auf der man Entities entfernen will. _range : Ist die Entfernung von der Position. Praktisch das Gebiet im Umkreis von _position. _entity : Die Entity die verschwinden soll.
Rückgabe keine. Siehe Anwendungsbeispiel.
function _OP_CleanUp(_position, _range,_entity) local Data = { Logic.GetEntitiesInArea( _entity, _position.X, _position.Y, _range, 20)}; local i; for i=2, Data[1]+1 do DestroyEntity(Data[i]); end end
In einer bestimmten Region (ausgehend von tPunkt) sollen alle Orangenbäume verschwinden.
_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree1)
Jetzt verschwinden alle Orangenbäume der Sorte XD_OrangeTree1. Da es zwei Sorten gibt müßte man noch
_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree2)
Dann sind alle weg. opeter
Bei einer größeren Anzahl von unterschiedlichen Entities, lässt sich der zu überprüfende Entity-Typ auch in einen Table packen.
Danach müssen wir die Funktion, die wir oben kennen gelernt haben entsprechend umstricken. Es muss Entity für Entity überprüft werden, welche davon in einem entsprechenden Bereich ( _range ) vorhanden ist:
function _OP_CleanUp( _position, _range, _entityTable ) for i = 1, table.getn( _entityTable ) do local Data = { Logic.GetEntitiesInArea( _entityTable[i], _position.X, _position.Y, _range, 20 )}; for k=2, Data[1]+1 do DestroyEntity( Data[k] ); end end end
Beispiel für Entity-Table:
myEntityTable = { Enities.XD_OrangeTree1, Enities.XD_OrangeTree2, Enities.XD_CherryTree, Enities.XD_Flower1, Enities.XD_Flower4, }
Aufruf mit:
_OP_CleanUp(tPunkt, 5000, myEntityTable)