Files
archived-ATCS/src/com/gpl/rpg/atcontentstudio/model/maps/MapObject.java

172 lines
4.7 KiB
Java

package com.gpl.rpg.atcontentstudio.model.maps;
import java.awt.Image;
import com.gpl.rpg.atcontentstudio.Notification;
import com.gpl.rpg.atcontentstudio.model.GameDataElement;
public abstract class MapObject {
public int x, y, w, h;
public String name;
public TMXMap parentMap;
public Types type;
protected static enum Types {
mapchange,
spawn,
rest,
key,
replace,
script,
container,
sign
}
public static MapObject buildObject(tiled.core.MapObject obj, TMXMap parentMap) {
MapObject result = null;
if (obj.getType() != null && !obj.getType().equals("") && Types.valueOf(obj.getType()) != null) {
switch (Types.valueOf(obj.getType())) {
case key:
result = new KeyArea(obj);
result.type = Types.key;
break;
case mapchange:
result = new MapChange(obj);
result.type = Types.mapchange;
break;
case replace:
result = new ReplaceArea(obj);
result.type = Types.replace;
break;
case rest:
result = new RestArea(obj);
result.type = Types.rest;
break;
case script:
result = new ScriptArea(obj);
result.type = Types.script;
break;
case sign:
result = new SignArea(obj);
result.type = Types.sign;
break;
case spawn:
result = new SpawnArea(obj);
result.type = Types.spawn;
break;
case container:
result = new ContainerArea(obj);
result.type = Types.container;
break;
}
} else {
Notification.addWarn("Unknown map object type: "+obj.getType()+"with name "+obj.getName()+" in map "+parentMap.id);
}
if (result != null) {
result.x = obj.getX();
result.y = obj.getY();
result.w = obj.getWidth();
result.h = obj.getHeight();
result.name = obj.getName();
result.parentMap = parentMap;
}
return result;
}
public abstract void link();
public abstract Image getIcon();
public abstract void elementChanged(GameDataElement oldOne, GameDataElement newOne);
public tiled.core.MapObject toTmxObject() {
tiled.core.MapObject tmxObject = new tiled.core.MapObject(x, y, w, h);
tmxObject.setName(name);
tmxObject.setType(type.toString());
savePropertiesInTmxObject(tmxObject);
return tmxObject;
}
public abstract void savePropertiesInTmxObject(tiled.core.MapObject tmxObject);
public static MapObject newMapchange(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Mapchange");
MapObject result = new MapChange(obj);
result.type = Types.mapchange;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newSpawnArea(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Spawnarea");
MapObject result = new SpawnArea(obj);
result.type = Types.spawn;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newRest(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Rest");
MapObject result = new RestArea(obj);
result.type = Types.rest;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newKey(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Key");
MapObject result = new KeyArea(obj);
result.type = Types.key;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newReplace(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Replace");
MapObject result = new ReplaceArea(obj);
result.type = Types.replace;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newScript(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Script");
MapObject result = new ScriptArea(obj);
result.type = Types.script;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newContainer(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Container");
MapObject result = new ContainerArea(obj);
result.type = Types.container;
initObj(result, obj, parentMap);
return result;
}
public static MapObject newSign(tiled.core.MapObject obj, TMXMap parentMap) {
if (obj.getName() == null) obj.setName("Sign");
MapObject result = new SignArea(obj);
result.type = Types.sign;
initObj(result, obj, parentMap);
return result;
}
private static MapObject initObj(MapObject result, tiled.core.MapObject obj, TMXMap parentMap) {
result.x = obj.getX();
result.y = obj.getY();
result.w = obj.getWidth();
result.h = obj.getHeight();
result.name = obj.getName();
result.parentMap = parentMap;
return result;
}
}