use of com.bladecoder.engine.model.Scene in project bladecoder-adventure-engine by bladecoder.
the class SetPlayerAction method run.
@Override
public boolean run(VerbRunner cb) {
Scene s = actor.getScene();
BaseActor a = s.getActor(actor.getActorId(), true);
s.setPlayer((CharacterActor) a);
if (inventory != null) {
World w = World.getInstance();
w.getInventory().dispose();
w.setInventory(inventory);
w.getInventory().loadAssets();
EngineAssetManager.getInstance().finishLoading();
w.getInventory().retrieveAssets();
}
return false;
}
use of com.bladecoder.engine.model.Scene in project bladecoder-adventure-engine by bladecoder.
the class SetStateAction method run.
@Override
public boolean run(VerbRunner cb) {
final Scene s = actor.getScene();
String actorId = actor.getActorId();
if (actorId == null) {
// if called in a scene verb and no actor is specified, set the state of the scene
s.setState(state);
return false;
}
InteractiveActor a = (InteractiveActor) s.getActor(actorId, false);
if (a == null) {
// search in inventory
a = World.getInstance().getInventory().get(actorId);
}
if (a != null)
a.setState(state);
else
EngineLogger.error("SetState - Actor not found: " + actorId);
return false;
}
use of com.bladecoder.engine.model.Scene in project bladecoder-adventure-engine by bladecoder.
the class ModelTools method fixSaySubtitleActor.
public static final void fixSaySubtitleActor() {
Map<String, Scene> scenes = World.getInstance().getScenes();
for (Scene scn : scenes.values()) {
Map<String, BaseActor> actors = scn.getActors();
HashMap<String, Verb> verbs = scn.getVerbManager().getVerbs();
for (Verb v : verbs.values()) {
ArrayList<Action> actions = v.getActions();
for (Action act : actions) {
if (act instanceof SayAction) {
try {
String stringValue = ActionUtils.getStringValue(act, "type");
if (stringValue.equals("SUBTITLE"))
ActionUtils.setParam(act, "actor", "$PLAYER");
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
EditorLogger.printStackTrace(e);
return;
}
}
}
}
for (BaseActor a : actors.values()) {
if (a instanceof InteractiveActor) {
InteractiveActor ia = (InteractiveActor) a;
verbs = ia.getVerbManager().getVerbs();
for (Verb v : verbs.values()) {
ArrayList<Action> actions = v.getActions();
for (Action act : actions) {
if (act instanceof SayAction) {
try {
String stringValue = ActionUtils.getStringValue(act, "type");
if (stringValue.equals("SUBTITLE"))
ActionUtils.setParam(act, "actor", "$PLAYER");
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
EditorLogger.printStackTrace(e);
return;
}
}
}
}
}
}
}
Ctx.project.setModified();
}
use of com.bladecoder.engine.model.Scene in project bladecoder-adventure-engine by bladecoder.
the class ModelTools method extractDialogs.
public static final void extractDialogs() {
Map<String, Scene> scenes = World.getInstance().getScenes();
BufferedWriter writer = null;
try {
// create a temporary file
File dFile = new File(Ctx.project.getProjectPath() + "/" + "DIALOGS.md");
writer = new BufferedWriter(new FileWriter(dFile));
writer.write("# DIALOGS - " + (Ctx.project.getTitle() != null ? Ctx.project.getTitle().toUpperCase() : "") + "\n\n");
for (Scene scn : scenes.values()) {
Map<String, BaseActor> actors = scn.getActors();
writer.write("\n## SCENE: " + scn.getId() + "\n\n");
HashMap<String, Verb> verbs = scn.getVerbManager().getVerbs();
// Process SayAction of TALK type
for (Verb v : verbs.values()) {
ArrayList<Action> actions = v.getActions();
for (Action act : actions) {
if (act instanceof SayAction) {
String type = ActionUtils.getStringValue(act, "type");
if ("TALK".equals(type)) {
String actor = ActionUtils.getStringValue(act, "actor").toUpperCase();
String rawText = ActionUtils.getStringValue(act, "text");
String text = Ctx.project.translate(rawText).replace("\\n\\n", "\n").replace("\\n", "\n");
writer.write(actor + ": " + text + "\n");
}
}
}
}
for (BaseActor a : actors.values()) {
if (a instanceof InteractiveActor) {
InteractiveActor ia = (InteractiveActor) a;
verbs = ia.getVerbManager().getVerbs();
// Process SayAction of TALK type
for (Verb v : verbs.values()) {
ArrayList<Action> actions = v.getActions();
for (Action act : actions) {
if (act instanceof SayAction) {
String type = ActionUtils.getStringValue(act, "type");
if ("TALK".equals(type)) {
String actor = ActionUtils.getStringValue(act, "actor").toUpperCase();
String rawText = ActionUtils.getStringValue(act, "text");
String text = Ctx.project.translate(rawText).replace("\\n\\n", "\n").replace("\\n", "\n");
writer.write(actor + ": " + text + "\n");
}
}
}
}
}
if (a instanceof CharacterActor) {
CharacterActor ca = (CharacterActor) a;
HashMap<String, Dialog> dialogs = ca.getDialogs();
if (dialogs == null)
continue;
// Process SayAction of TALK type
for (Dialog d : dialogs.values()) {
ArrayList<DialogOption> options = d.getOptions();
if (options.size() > 0)
writer.write("\n**" + ca.getId().toUpperCase() + " - " + d.getId() + "**\n\n");
for (DialogOption o : options) {
String text = o.getText();
String response = o.getResponseText();
writer.write(scn.getPlayer().getId().toUpperCase() + ": " + Ctx.project.translate(text).replace("\\n\\n", "\n").replace("\\n", "\n") + "\n");
if (response != null)
writer.write(ca.getId().toUpperCase() + ": " + Ctx.project.translate(response).replace("\\n\\n", "\n").replace("\\n", "\n") + "\n\n");
}
}
}
}
}
} catch (Exception e) {
EditorLogger.printStackTrace(e);
} finally {
try {
// Close the writer regardless of what happens...
writer.close();
} catch (Exception e) {
}
}
}
use of com.bladecoder.engine.model.Scene in project bladecoder-adventure-engine by bladecoder.
the class I18NHandler method deleteUnusedKeys.
private void deleteUnusedKeys() {
ArrayList<String> usedKeys = new ArrayList<String>();
// SCENES
for (Scene s : World.getInstance().getScenes().values()) getUsedKeys(s, usedKeys);
Enumeration<Object> keys = i18nChapter.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
// Doesn't remove ui and ink keys
if (!usedKeys.contains(key) && !key.startsWith("ui.") && !key.startsWith("ink.")) {
EditorLogger.debug("Removing translation key: " + key);
i18nChapter.remove(key);
}
}
usedKeys.clear();
// WORLD VERBS
for (Verb v : World.getInstance().getVerbManager().getVerbs().values()) getUsedKeys(v, usedKeys);
keys = i18nWorld.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
// Doesn't remove ui keys
if (!usedKeys.contains(key) && !key.startsWith("ui.")) {
EditorLogger.debug("Removing translation key: " + key);
i18nWorld.remove(key);
}
}
}
Aggregations