Exemplo n.º 1
0
        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 ();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        //次の命令へ
        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();
            }
        }
Exemplo n.º 4
0
 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();
     }
 }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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 ();
        }
Exemplo n.º 9
0
        //文字列から即時タグを実行することができます。
        public void startTag(string tag)
        {
            AbstractComponent cmp = this.parser.makeTag(tag);

            cmp.start();
        }
Exemplo n.º 10
0
        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();
                }
            }
        }