use of main.entity.obj.Obj in project Eidolons by IDemiurge.
the class Saver method getObjNodeXml.
private static String getObjNodeXml(DC_GameState state) {
StringBuilder builder = new StringBuilder(80000);
builder.append(XML_Converter.openXml(OBJ_NODE));
for (OBJ_TYPE TYPE : state.getObjMaps().keySet()) {
if (state.getObjMaps().get(TYPE).isEmpty())
continue;
builder.append(XML_Converter.openXml(TYPE.getName()));
for (Integer id : state.getObjMaps().get(TYPE).keySet()) {
Obj obj = state.getObjMaps().get(TYPE).get(id);
obj.setProperty(G_PROPS.ID, id + "");
builder.append(XML_Converter.openXmlFormatted(obj.getName()));
builder.append(XML_Converter.openXml(PROPS_NODE));
for (PROPERTY property : obj.getPropMap().keySet()) {
if (property.isDynamic() || !obj.getProperty(property).equals(obj.getType().getProperty(property))) {
// only write values that aren't at base
builder.append(XML_Formatter.getValueNode(obj, property));
}
}
builder.append(XML_Converter.closeXml(PROPS_NODE));
builder.append(XML_Converter.openXml(PARAMS_NODE));
for (PARAMETER parameter : obj.getParamMap().keySet()) {
if (parameter.isDynamic() || !obj.getParam(parameter).equals(obj.getType().getParam(parameter))) {
// only write values that aren't at base
builder.append(XML_Formatter.getValueNode(obj, parameter));
}
}
builder.append(XML_Converter.closeXml(PARAMS_NODE));
// REF !
builder.append(XML_Converter.closeXmlFormatted(obj.getName()));
}
builder.append(XML_Converter.closeXml(TYPE.getName()));
}
builder.append(XML_Converter.closeXml(OBJ_NODE));
return builder.toString();
}
use of main.entity.obj.Obj in project Eidolons by IDemiurge.
the class StateCloner method cloneMaps.
private void cloneMaps(DC_GameState state, DC_GameState clone) {
for (OBJ_TYPE TYPE : state.getObjMaps().keySet()) {
Map<Integer, Obj> cloneMap = getObjMap();
Map<Integer, Obj> map = state.getObjMaps().get(TYPE);
if (map == null) {
continue;
}
for (Obj e : map.values()) {
Obj cloneObj = cloneObj(e);
cloneMap.put(cloneObj.getId(), cloneObj);
}
clone.getObjMaps().put(TYPE, cloneMap);
}
}
use of main.entity.obj.Obj in project Eidolons by IDemiurge.
the class StateCloner method cloneObj.
private Obj cloneObj(Obj e) {
// TODO only modified values? compare with type? ONLY DYNAMIC!
Obj clone = getInstance(e);
clone.setId(e.getId());
clone.reset();
copyDynamicValues(e, clone);
return clone;
}
use of main.entity.obj.Obj in project Eidolons by IDemiurge.
the class StateCloner method cloneAttachments.
private void cloneAttachments(DC_GameState state, DC_GameState clone) {
state.getAttachments().forEach(attachment -> {
Attachment a = cloneAttachment(attachment);
clone.getAttachments().add(a);
Obj basis = a.getBasis();
if (basis != null) {
MapMaster.addToListMap(clone.getAttachmentsMap(), basis, a);
}
});
}
use of main.entity.obj.Obj in project Eidolons by IDemiurge.
the class DC_Game method exit.
public void exit(boolean mainMenu) throws InterruptedException {
// TODO review this! only for arcade-game, btw!
stop();
// dungeonMaster.setDungeon(null);
getManager().setSelectedInfoObj(null);
WaitRule.reset();
for (Obj obj : getObjects(DC_TYPE.BUFFS)) {
BuffObj buff = (BuffObj) obj;
if (buff.isDispelable() || !buff.isPermanent()) {
buff.kill();
}
}
state.reset();
logManager.clear();
for (Obj obj : getUnits()) {
if (!obj.getOriginalOwner().isMe()) {
obj.kill(obj, false, true);
}
if (!mainMenu && obj.getOwner().isMe()) {
continue;
}
state.removeObject(obj.getId());
}
if (mainMenu) {
getMaster().clear();
}
for (Obj obj : getCells()) {
obj.kill(obj, false, true);
state.removeObject(obj.getId());
}
}
Aggregations