/**
* Copyright 2008 Matthew Corby-Eaglen
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package std.game.behaviours
import org.groovymud.object.MudObject
import org.groovymud.object.Container
/**
* Behaviour that spawns items into a container
*
* if "checkExists" is set on the object, if the object already exists in the registry it
* is not spawned
*
* if "checkInRoom" is set on the object, the object only spawns if not in the room already
*
* @author corbym
*
*/
class SpawnBehaviour extends Behaviour{
Map spawnItems = [:]
def doBehaviour(container, ... args) {
def reg = container.inventoryHandler.registry
spawnItems.each{ k,v ->
boolean add = true
switch(k){
case SpawnChecks.CHECK_EXISTS:
def items = reg.getMudObjects(v.name) as List
def vsContainer = null
if(items?.size() > 0){
vsContainer = items[0]?.currentContainer
}
add = (vsContainer == null)
break;
case SpawnChecks.CHECK_IN_ROOM:
add = (container.getMudObjects(v.name) == null)
break;
}
if(add){
container.addMudObject(v)
}
}
}
}