groovy/mudspace/domains/minnovar/
groovy/mudspace/domains/minnovar/objects/containers/
groovy/mudspace/domains/minnovar/objects/mobs/
groovy/mudspace/domains/minnovar/objects/mobs/scripts/
groovy/mudspace/domains/minnovar/objects/weapons/
groovy/mudspace/domains/minnovar/town/
groovy/mudspace/resources/
groovy/mudspace/std/
groovy/mudspace/std/game/
groovy/mudspace/std/game/guild/
groovy/mudspace/std/game/guild/skill/
groovy/mudspace/std/game/objects/
groovy/mudspace/std/game/objects/alive/
groovy/mudspace/std/game/objects/bodyparts/
groovy/mudspace/std/game/objects/containers/
groovy/mudspace/std/game/objects/exits/
groovy/mudspace/std/game/objects/exits/events/
groovy/mudspace/std/game/objects/trappings/
groovy/mudspace/std/game/objects/views/
groovy/mudspace/std/game/races/
groovy/scripts/
groovy/scripts/commands/creator/
groovy/scripts/commands/god/
scripts/
/**
 * 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.objects.views

import org.groovymud.object.views.ContentsHelper
import org.groovymud.shell.telnetd.ExtendedTerminalIO
import org.groovymud.object.alive.Alive
import org.groovymud.object.MudObject

import org.groovymud.object.views.ContainerView
import org.groovymud.object.registry.InventoryHandler
/**
 * view object for a MOB
 * 
 * @author matt
 *
 */
public class MOBView extends ContainerView{
	private static final String CARRYING_DESC = "carrying";
	private static final String HOLDING_DESC = "holding";
	private static final String WEARING_DESC = "wearing";
	
	public void writeLookHeader(Alive looker, MudObject object) {
	    ExtendedTerminalIO stream = looker.getTerminalOutput();
		if (object.equals(looker)) {
			stream.writeln("Looking at yourself? How vain!");
			stream.writeln("You look like:");
		} else {
			stream.writeln("You see ${object.getName()}") //+ " the " + object.getGuildBehaviour().getGuildTitle());
		}
		writeDynamicText(looker, object, object.description)
	}
	
	public void writeLookInventory(Alive looker){
		writeLookInventory(CARRYING_DESC, looker.getInventoryHandler(), looker, looker);
	}
	 
	public void writeLookInventory(String invTypeAction, InventoryHandler handler, Alive looker, MudObject obj) {
	    ExtendedTerminalIO stream = looker.getTerminalOutput();
		if (looker.equals(obj)) {
			stream.writeln("You are $invTypeAction: ");
		} else {
			stream.writeln("${obj.getName()} is $invTypeAction: ");
		}
		ContentsHelper helper = new ContentsHelper();
		String wearing = helper.getContentsDescription(handler.getMudObjectsMap(), obj, false);
		stream.writeln(wearing.equals("") ? "Nothing." : wearing);
	}
	
	void writeLookFooter(ExtendedTerminalIO stream) throws IOException {
	}
	
	void writeLookBody(Alive looker, MudObject object){
		//writeLookInventory(WEARING_DESC, obj.getRaceBehaviour().getWearingInventory(),  obj, looker);
		//writeLookInventory(HOLDING_DESC, obj.getRaceBehaviour().getHoldingInventory(), obj, looker);
		writeLookInventory(CARRYING_DESC, object.getInventoryHandler(), looker, object);
	}
	
}