mirror of
https://github.com/AndorsTrailRelease/ATCS.git
synced 2025-10-27 18:44:03 +01:00
172 lines
4.7 KiB
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;
|
|
}
|
|
|
|
|
|
}
|