Пример #1
0
        protected override int ExecInternal()
        {
            var msg = GeneralLib.ListTail(EventData.Data, 2);

            if (GeneralLib.ListLength(msg) == 1)
            {
                msg = Expression.GetValueAsString(msg);
            }

            Expression.FormatMessage(ref msg);
            var BGM = Sound.SearchMidiFile(Sound.BGMName("Subtitle"));

            if (Strings.Len(BGM) > 0)
            {
                Sound.StartBGM(BGM, false);
                if (!GUI.IsRButtonPressed())
                {
                    GUI.Sleep(1000);
                }

                GUI.DisplayTelop(msg);
                if (!GUI.IsRButtonPressed())
                {
                    GUI.Sleep(2000);
                }
            }
            else
            {
                GUI.DisplayTelop(msg);
            }

            return(EventData.NextID);
        }
Пример #2
0
        protected override int ExecInternal()
        {
            string fname = GeneralLib.ToList(EventData.Data).Skip(1).FirstOrDefault();

            if (GeneralLib.ListLength(fname) == 1)
            {
                fname = Expression.GetValueAsString(fname);
            }

            Sound.PlayWave(fname);

            return(EventData.NextID);
        }
Пример #3
0
Файл: List.cs Проект: 7474/SRC
        protected override ValueType InvokeInternal(SRC SRC, ValueType etype, string[] @params, int pcount, bool[] is_term, out string str_result, out double num_result)
        {
            str_result = "";

            num_result = GeneralLib.ListLength(SRC.Expression.GetValueAsString(@params[1], is_term[1]));

            if (etype == ValueType.StringType)
            {
                str_result = GeneralLib.FormatNum(num_result);
                return(ValueType.StringType);
            }
            else
            {
                return(ValueType.NumericType);
            }
        }
Пример #4
0
        // Flashファイルからイベントを取得
        // Flashのアクションの「GetURL」で
        // 1.「URL」に"FSCommand:"
        // 2.「ターゲット」に「サブルーチン名 [引数1 [引数2 […]]」
        // を指定すると、そのアクションが実行されたときに
        // ターゲットのサブルーチンが実行される。
        // サブルーチンを実行している間、Flashの再生は停止する。
        public static void GetEvent(string fpara)
        {
            var    buf = default(string);
            short  i, j;
            string funcname, funcpara;
            var    etype      = default(Expression.ValueType);
            var    str_result = default(string);
            var    num_result = default(double);

            // 再生を一時停止
            // UPGRADE_WARNING: オブジェクト frmMain.FlashObject.StopMovie の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
            My.MyProject.Forms.frmMain.FlashObject.StopMovie();
            funcname = "";
            funcpara = "";

            // 念のためにFlashから渡されたパラメータ全てを解析
            // 一番最初に見つかった文字列を、呼び出すサブルーチン名とする
            if (string.IsNullOrEmpty(funcname))
            {
                funcname = GeneralLib.ListIndex(ref fpara, 1);
                buf      = GeneralLib.ListTail(ref fpara, 2);
            }
            // サブルーチンの引数を記録
            var loopTo = GeneralLib.ListLength(ref buf);

            for (j = 1; j <= loopTo; j++)
            {
                funcpara = funcpara + ", " + GeneralLib.ListIndex(ref buf, j);
            }

            // サブルーチン名と引数から、Call関数の呼び出しの文字列を生成
            buf = "Call(" + funcname + funcpara + ")";
            // 式として生成した文字列を実行
            Expression.CallFunction(ref buf, ref etype, ref str_result, ref num_result);

            // 再生を再開
            // UPGRADE_WARNING: オブジェクト frmMain.FlashObject.PlayMovie の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
            My.MyProject.Forms.frmMain.FlashObject.PlayMovie();
        }
Пример #5
0
Файл: List.cs Проект: 7474/SRC
        protected override ValueType InvokeInternal(SRC SRC, ValueType etype, string[] @params, int pcount, bool[] is_term, out string str_result, out double num_result)
        {
            str_result = "";
            num_result = 0d;

            var buf  = SRC.Expression.GetValueAsString(@params[1], is_term[1]);
            var buf2 = SRC.Expression.GetValueAsString(@params[2], is_term[2]);
            var num  = pcount < 3 ? 1 : SRC.Expression.GetValueAsLong(@params[3], is_term[3]);
            var num2 = GeneralLib.ListLength(buf);

            for (var i = num; i <= num2; i++)
            {
                if (GeneralLib.ListIndex(buf, i) == buf2)
                {
                    if (etype == ValueType.StringType)
                    {
                        str_result = SrcFormatter.Format(i);
                        return(ValueType.StringType);
                    }
                    else
                    {
                        num_result = i;
                        return(ValueType.NumericType);
                    }
                }
            }

            if (etype == ValueType.StringType)
            {
                str_result = "0";
                return(ValueType.StringType);
            }
            else
            {
                num_result = 0d;
                return(ValueType.NumericType);
            }
        }
Пример #6
0
        // アビリティに効果を追加
        public void SetEffect(ref string elist)
        {
            short         j, i, k;
            string        buf;
            AbilityEffect dat;
            string        elevel, etype, edata;

            GeneralLib.TrimString(ref elist);
            var loopTo = GeneralLib.ListLength(ref elist);

            for (i = 1; i <= loopTo; i++)
            {
                dat = NewAbilityEffect();
                buf = GeneralLib.ListIndex(ref elist, i);
                j   = (short)Strings.InStr(buf, "Lv");
                k   = (short)Strings.InStr(buf, "=");
                if (j > 0 & (k == 0 | j < k))
                {
                    // レベル指定のある効果(データ指定があるものを含む)
                    dat.Name = Strings.Left(buf, j - 1);
                    if (k > 0)
                    {
                        // データ指定があるもの
                        dat.Level = Conversions.ToDouble(Strings.Mid(buf, j + 2, k - (j + 2)));
                        buf       = Strings.Mid(buf, k + 1);
                        if (Strings.Left(buf, 1) == "\"")
                        {
                            buf = Strings.Mid(buf, 2, Strings.Len(buf) - 2);
                        }

                        j = (short)Strings.InStr(buf, "Lv");
                        k = (short)Strings.InStr(buf, "=");
                        if (j > 0 & (k == 0 | j < k))
                        {
                            // データ指定内にレベル指定がある
                            etype = Strings.Left(buf, j - 1);
                            if (k > 0)
                            {
                                elevel = Strings.Mid(buf, j + 2, k - (j + 2));
                                edata  = Strings.Mid(buf, k + 1);
                            }
                            else
                            {
                                elevel = Strings.Mid(buf, j + 2);
                                edata  = "";
                            }
                        }
                        else if (k > 0)
                        {
                            // データ指定内にデータ指定がある
                            etype  = Strings.Left(buf, k - 1);
                            elevel = "";
                            edata  = Strings.Mid(buf, k + 1);
                        }
                        else
                        {
                            // 単純なデータ指定
                            etype  = buf;
                            elevel = "";
                            edata  = "";
                        }

                        if (dat.Name == "付加" & string.IsNullOrEmpty(elevel))
                        {
                            elevel = Microsoft.VisualBasic.Compatibility.VB6.Support.Format(SRC.DEFAULT_LEVEL);
                        }

                        dat.Data = Strings.Trim(etype + " " + elevel + " " + edata);
                    }
                    else
                    {
                        // データ指定がないもの
                        dat.Level = Conversions.ToDouble(Strings.Mid(buf, j + 2));
                    }
                }
                else if (k > 0)
                {
                    // データ指定を含む効果
                    dat.Name = Strings.Left(buf, k - 1);
                    buf      = Strings.Mid(buf, k + 1);
                    if (Strings.Asc(buf) == 34) // "
                    {
                        buf = Strings.Mid(buf, 2, Strings.Len(buf) - 2);
                    }

                    j = (short)Strings.InStr(buf, "Lv");
                    k = (short)Strings.InStr(buf, "=");
                    if (dat.Name == "解説")
                    {
                        // 解説の指定
                        etype  = buf;
                        elevel = "";
                        edata  = "";
                    }
                    else if (j > 0)
                    {
                        // データ指定内にレベル指定がある
                        etype = Strings.Left(buf, j - 1);
                        if (k > 0)
                        {
                            elevel = Strings.Mid(buf, j + 2, k - (j + 2));
                            edata  = Strings.Mid(buf, k + 1);
                        }
                        else
                        {
                            elevel = Strings.Mid(buf, j + 2);
                            edata  = "";
                        }
                    }
                    else if (k > 0)
                    {
                        // データ指定内にデータ指定がある
                        etype  = Strings.Left(buf, k - 1);
                        elevel = "";
                        edata  = Strings.Mid(buf, k + 1);
                    }
                    else
                    {
                        // 単純なデータ指定
                        etype  = buf;
                        elevel = "";
                        edata  = "";
                    }

                    if (dat.Name == "付加" & string.IsNullOrEmpty(elevel))
                    {
                        elevel = Microsoft.VisualBasic.Compatibility.VB6.Support.Format(SRC.DEFAULT_LEVEL);
                    }

                    dat.Data = Strings.Trim(etype + " " + elevel + " " + edata);
                }
                else
                {
                    // 効果名のみ
                    dat.Name = buf;
                }

                j = 1;
                foreach (AbilityEffect dat2 in colEffects)
                {
                    if ((dat.Name ?? "") == (dat2.Name ?? ""))
                    {
                        j = (short)(j + 1);
                    }
                }

                if (j == 1)
                {
                    colEffects.Add(dat, dat.Name);
                }
                else
                {
                    colEffects.Add(dat, dat.Name + Microsoft.VisualBasic.Compatibility.VB6.Support.Format(j));
                }
            }
        }
Пример #7
0
        protected override int ExecInternal()
        {
            if (ArgNum == 1)
            {
                throw new EventErrorException(this, "Printコマンドの引数の数が違います");
            }

            // TODO ファイル出力例外処理
            var f   = SRC.FileHandleManager.Get(GetArgAsLong(2));
            var msg = GeneralLib.ListTail(EventData.Data, 3);

            if (Strings.Right(msg, 1) != ";")
            {
                if (Strings.Left(msg, 1) != "`" || Strings.Right(msg, 1) != "`")
                {
                    if (Strings.Left(msg, 2) == "$(")
                    {
                        if (Strings.Right(msg, 1) == ")")
                        {
                            msg = Expression.GetValueAsString(Strings.Mid(msg, 3, Strings.Len(msg) - 3));
                        }
                    }
                    else if (GeneralLib.ListLength(msg) == 1)
                    {
                        msg = Expression.GetValueAsString(msg);
                    }

                    Expression.ReplaceSubExpression(ref msg);
                }
                else
                {
                    msg = Strings.Mid(msg, 2, Strings.Len(msg) - 2);
                }

                f.Writer.WriteLine(msg);
            }
            else
            {
                msg = Strings.Left(msg, Strings.Len(msg) - 1);
                if (Strings.Left(msg, 1) != "`" || Strings.Right(msg, 1) != "`")
                {
                    if (Strings.Left(msg, 2) == "$(")
                    {
                        if (Strings.Right(msg, 1) == ")")
                        {
                            msg = Expression.GetValueAsString(Strings.Mid(msg, 3, Strings.Len(msg) - 3));
                        }
                    }
                    else if (GeneralLib.ListLength(msg) == 1)
                    {
                        msg = Expression.GetValueAsString(msg);
                    }

                    Expression.ReplaceSubExpression(ref msg);
                }
                else
                {
                    msg = Strings.Mid(msg, 2, Strings.Len(msg) - 2);
                }

                f.Writer.WriteLine(msg);
            }

            return(EventData.NextID);
        }