public override void start() { string target = this.param ["target"].Replace("*", "").Trim(); string file = this.param ["file"]; string index = ""; if (this.param.ContainsKey("index")) { index = this.param ["index"]; } string tag_str = "[jump file='" + file + "' target='" + target + "' index=" + index + " ]"; this.gameManager.scenarioManager.addStack(StatusManager.currentScenario, this.gameManager.CurrentComponentIndex, this.param); //タグを実行 AbstractComponent cmp = this.gameManager.parser.makeTag(tag_str); cmp.start(); //ゲームマネージャーの現在の位置をそこに書き換えてnextOrderでどうだ。 //macro もひとつのcomponent_array みたいにしていいんじゃないかしら。ラベルじゃないけど //StackManager に 呼び出し状態を保持させる macro の中で別ファイルへのjumpは禁止したいね。 //現在の位置をスタックとして保持させる //this.gameManager.nextOrder (); }
public override void start() { int index = int.Parse(StatusManager.variable.get("save.index")); int max_num = int.Parse(StatusManager.variable.get("save.max_num")); //int max_index = int.Parse (StatusManager.variable.get("save.max_index")); index++; //上限に来た場合は表示を止める if (max_num <= index || max_num <= index) { NovelSingleton.GameManager.nextOrder(); return; } StatusManager.variable.set("save.index", "" + index); NovelSingleton.SaveManager.applySaveVariable("save_" + index); //ジャンプする。[saveloop]タグの次のところへ string loop_back_index = StatusManager.variable.get("save.loop_start_component_index"); string tag_str = "[jump index='" + loop_back_index + "' ]"; //タグを実行 AbstractComponent cmp = this.gameManager.parser.makeTag(tag_str); cmp.start(); }
//次の命令へ public void nextOrder() { if (StatusManager.isMessageShowing == true) { return; } //nextOrder を指定されたなら、クリックは有効になる StatusManager.enableClickOrder = true; this.currentComponentIndex++; //シナリオファイルの最後まで来た時。スタックが存在するならreturn する if (this.currentComponentIndex >= this.arrayComponents.Count) { if (this.scenarioManager.countStack() > 0) { //スタックがあるならreturn する this.startTag("[return]"); } else { //this.showError ("シナリオファイルの終端まで到達しました"); } return; } AbstractComponent cmp = this.arrayComponents [this.currentComponentIndex]; cmp.before(); if (StatusManager.skipOrder == false) { cmp.calcVariable(); cmp.validate(); string p = ""; foreach (KeyValuePair <string, string> kvp in cmp.param) { p += kvp.Key + "=" + kvp.Value + " "; } this.showLog("[" + cmp.tagName + " " + p + " ]"); cmp.start(); cmp.after(); } else { this.nextOrder(); } }
public override void start() { if (this.gameManager.scenarioManager.macroNum > 0) { this.gameManager.scenarioManager.macroNum--; //ココに来た場合はreturn を実行する AbstractComponent cmp = this.gameManager.parser.makeTag("[return]"); cmp.start(); } else { this.gameManager.nextOrder(); } }
public override void start() { string exp = this.param ["exp"]; string val = this.param ["exp"]; //変数なら素直に代入 if (val.IndexOf(".") != -1) { val = StatusManager.variable.get(exp); } string tag_str = "[story val='" + val + "' ]"; AbstractComponent cmp = this.gameManager.parser.makeTag(tag_str); cmp.start(); }
public override void start() { //skip start //skip start GameManager gameManager = NovelSingleton.GameManager; gameManager.saveManager.save("gametmp", true); //一時領域に退避させる。これはawakeのタイミングで戻ってくるために使う。 gameManager.saveManager.save("savesnap", true); //セーブ用のスナップも同じタイミングで作る Debug.Log("Save success"); //ジャンプする シーンをnew状態で string tag_str = "[jump file='" + this.param["file"] + "' target='" + this.param["target"] + "' scene=new ]"; Debug.Log(tag_str); //タグを実行 AbstractComponent cmp = this.gameManager.parser.makeTag(tag_str); cmp.start(); }
public override void start() { this.param ["name"] = this.tagName; Macro macro = this.gameManager.scenarioManager.getMacro(this.param ["name"]); if (macro == null) { this.gameManager.showError("マクロ「" + this.param["name"] + "」は存在しません。"); return; } this.param ["index"] = "" + macro.index; this.param ["file"] = macro.file_name; this.gameManager.scenarioManager.macroNum++; //this.gameManager.scenarioManager.addMacroStack (macro.name, this.param); AbstractComponent cmp = this.gameManager.parser.makeTag("call", this.param); cmp.start(); }
public override void start() { CallStack stack = this.gameManager.scenarioManager.popStack(); string tag_str = ""; //return 時の戻り場所を指定できます if (this.param ["file"] != "" || this.param ["target"] != "") { tag_str = "[jump file='" + this.param["file"] + "' target='" + this.param["target"] + "' ]"; } else { tag_str = "[jump file='" + stack.scenarioNname + "' index='" + stack.index + "' ]"; } //タグを実行 AbstractComponent cmp = this.gameManager.parser.makeTag(tag_str); cmp.start(); //this.gameManager.nextOrder (); }
//文字列から即時タグを実行することができます。 public void startTag(string tag) { AbstractComponent cmp = this.parser.makeTag(tag); cmp.start(); }
public void checkEvent(string name, string act) { if (StatusManager.enableEventClick == true && name == "_sp_button_close") { //StatusManager.inUiClick = false; StatusManager.enableClickOrder = false; StatusManager.nextClickShowMessage = true; NovelSingleton.GameView.hideMessageWithoutNextOrder(0.2f); return; } //指定したイベントが存在する場合、その場所にジャンプする if (this.dicEvent.ContainsKey(name)) { EventObject obj = this.dicEvent [name]; //Debug.Log ("check:"+name); //Debug.Log ("StatusManager.isEventStop:" + StatusManager.isEventStop); //イベントが停止中の場合、特定の許可されたイベントしか実行できない if (StatusManager.isEventStop == true) { if (!StatusManager.variable.hasKey("_evt_name_permission." + name)) { return; } //クリックも停止中の時は、、、 } else if (StatusManager.enableEventClick != true) { //Debug.Log (name); //停止中とか関係ない /* * if (!StatusManager.variable.hasKey ("_evt_name_permission." + name)) { * return; * } */ return; } if (obj.act == act) { //イベントを実施中の場合は、次に検知する画面クリックは無効にしてもらう //StatusManager.inUiClick = true; GameManager gm = NovelSingleton.GameManager; //ジャンプを実行する時に呼び出した位置情報を保持する StatusManager.variable.set("evt.caller_file", StatusManager.currentScenario); int current_index = NovelSingleton.GameManager.CurrentComponentIndex; if (NovelSingleton.GameManager.getComponent(current_index).tagName == "s") { current_index = current_index - 1; } StatusManager.variable.set("evt.caller_index", "" + (current_index)); //paramの内容をevt変数に入れていく foreach (KeyValuePair <string, string> kvp in obj.param) { StatusManager.variable.set("evt." + kvp.Key, obj.param[kvp.Key]); } //イベントの名前はクリックされたオブジェクトの名前 StatusManager.variable.set("evt.caller_name", name); string tag_str = "[jump file='" + obj.file + "' target='" + obj.target + "' ]"; AbstractComponent cmp = gm.parser.makeTag(tag_str); cmp.start(); } } }