Example #1
0
    public static object F_FromHexColor(bool bHelp, object[] ol, StateBuffer sb)
    {
        if (bHelp)
        {
            return("16進カラー文字列をColorへ変換する" + NL +
                   "フォーマット) var col = FromHexColor(\"16進6桁または8桁\");" + NL +
                   "例)var col = FromColor(\"ffc0cb\"); //ピンク");
        }

        kit.check_num_of_args(ol, 1);

        var s = kit.get_string_at(ol, 0);

        if (s == null || (s.Length != 6 && s.Length != 8))
        {
            util._error("FromHexColor:6桁または8桁の16進文字列を指定してください");
        }
        var v = s.ToUpper().ToCharArray();

        if (!Array.TrueForAll(v, n => ((n >= '0' && n <= '9') || (n >= 'A' && n <= 'F'))))
        {
            util._error("FromHexColor:16進文字を指定してください");
        }

        byte r, g, b, a;

        r = (byte)Convert.ToInt32(s.Substring(0, 2), 16);
        g = (byte)Convert.ToInt32(s.Substring(2, 2), 16);
        b = (byte)Convert.ToInt32(s.Substring(4, 2), 16);
        a = (s.Length == 8) ? (byte)Convert.ToInt32(s.Substring(5, 2), 16) : (byte)255;

        return((Color)(new Color32(r, g, b, a)));
    }
Example #2
0
        private static StateBuffer _callFunction(YVALUE fv, List <object> ol, StateBuffer sb)
        {
            var nsb = sb;

            YDEF_DEBUG.funcCntSmp++;
            nsb.set_funcwork();
            {
                var fvbk = util.normalize_func_bracket(fv.list_at(1).list_at(1)); //ファンクション定義部の引数部分
                if (
                    ((fvbk != null && ol != null) && (((fvbk.list.Count + 1) / 2) != ol.Count))
                    )
                {
                    util._error("number of arguments in valid.");
                }
                int n = 0;
                if (fvbk != null)
                {
                    for (int i = 0; i < fvbk.list.Count; i += 2)
                    {
                        var    varname = fvbk.list_at(i).GetString();//定義側の変数名
                        object o       = ol != null && n < ol.Count ? ol[n] : null;
                        nsb.define(varname, o);
                        n++;
                    }
                }
                nsb = runtime.run_script.run(fv.list_at(2), nsb);
                nsb.breaknone();
            }
            nsb.reset_funcwork();
            YDEF_DEBUG.funcCntSmp--;

            return(nsb);
        }
Example #3
0
    public static object F_SendMsg(bool bHelp, object[] ol, StateBuffer sb)
    {
        if (bHelp)
        {
            return("GameObjectにメッセージを送る。メッセージ受信先が存在すれば指定関数を実行。" + NL +
                   "フォーマット) SendMsg(GameObject,名前[,パラメータ・・・])" + NL +
                   "slagunity_monoehaviourクラス内に詳細あり ");
        }
        GameObject go = null;

        if (ol.Length > 0)
        {
            go = (GameObject)ol[0];
        }
        List <object> plist = null;

        if (ol.Length > 1)
        {
            plist = new List <object>();
            for (int i = 1; i < ol.Length; i++)
            {
                plist.Add(ol[i]);
            }
        }
        if (plist == null)
        {
            util._error("SendMsgの引数が正しくありません");
        }
        go.SendMessage("SendMessageSocket", plist, SendMessageOptions.DontRequireReceiver);

        return(null);
    }
Example #4
0
        public static object F_Cast(bool bHelp, object[] ol, StateBuffer sb = null)
        {
            if (bHelp)
            {
                return("値を指定タイプへキャスト。 例)var i = Cast(\"System.Int16\",j);  または Cast(type,j); ");
            }

            kit.check_num_of_args(ol, 2);

            var  p0   = ol[0];
            Type type = null;

            if (p0 is Type)
            {
                type = (Type)p0;
            }
            if (type == null)
            {
                var s = kit.get_string_at(ol, 0); //.ToUpper();
                type = kit.FindType(s);           // slagtool.runtime.sub_pointervar_clause.find_typeinfo(s);
            }

            var o = ol[1];

            return(Convert.ChangeType(o, type));
        }
Example #5
0
    public static object F_AddBehaviour(bool bHelp, object[] ol, StateBuffer sb)
    {
        if (bHelp)
        {
            return("slagunity_monobehaviourコンポネントを追加" + NL +
                   "フォーマット) var bhv = AddBehaviour([GameObject]);" + NL +
                   "       GameObject指定がない場合、slag実行メインのGameObjectに追加");
        }
        GameObject go = null;

        if (ol.Length == 0)
        {
            if (sb.m_slag != null && sb.m_slag.m_owner != null && sb.m_slag.m_owner is slagunity && ((slagunity)sb.m_slag.m_owner).m_root != null)
            {
                go = ((slagunity)sb.m_slag.m_owner).m_root.gameObject;
            }
            else        //slagunity_root.V.gameObject;
            {
                throw new SystemException("slagの初期化時のownerを確認せよ");
            }
        }
        else if (ol[0] is GameObject)
        {
            go = (GameObject)ol[0];
        }
        var mono = go.AddComponent <slagunity_monobehaviour>();

        mono.Init(sb.m_slag);

        return(mono);
    }
Example #6
0
        public void LoadAppFile(string filename)
        {
            if (currentState == null)
            {
                try
                {
                    using (FileStream fs = new FileStream(filename, FileMode.Open))
                    {
                        BinaryFormatter format = new BinaryFormatter();
                        currentState = (State)format.Deserialize(fs);
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Не удалось загрузить файл.");
                    EmptyLaunch();
                }
            }
            else
            {
                currentState.LoadFromFile(filename);
            }
            int step = currentState.Step;

            Predict();
            StateBuffer.Seek(0, SeekOrigin.Begin);
            for (int i = 0; i < step; i++)
            {
                fileFormat.Deserialize(StateBuffer);
            }
            NextStep();
            CurrentStateLabel.Text = "Нажмите \"Запуск\", чтобы начать исполнение.";
        }
Example #7
0
        private void JSONSaveDialog_Select(object sender, System.ComponentModel.CancelEventArgs e)
        {
            SaveFileDialog             ofd  = sender as SaveFileDialog;
            DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(List <State>));
            List <State> states             = new List <State>();

            StateBuffer.Seek(0, SeekOrigin.Begin);
            for (int i = 0; i < currentState.TotalSteps + 1; i++)
            {
                State fullState = fileFormat.Deserialize(StateBuffer) as State;
                if (i != 0)
                {
                    fullState.Instructions = null;
                    fullState.StartData    = null;
                }
                states.Add(fullState);
            }
            try
            {
                using (FileStream fs = new FileStream(ofd.FileName, FileMode.Create))
                    json.WriteObject(fs, states);
            }
            catch (Exception)
            {
                MessageBox.Show("Не удалось сохранить файл.");
            }
        }
Example #8
0
        private void RunAlgorithmButton_Click(object sender, EventArgs e)
        {
            Button button = RunAlgorithmButton;

            if (button.Tag == null || button.Tag.ToString() == "play")
            {
                ExecTimer.Start();
                button.Image = Properties.Resources.pause;
                button.Tag   = "pause";
            }
            else if (button.Tag.ToString() == "pause")
            {
                ExecTimer.Stop();
                button.Image = Properties.Resources.play;
                button.Tag   = "play";
            }
            else if (button.Tag.ToString() == "restart")
            {
                ExecTimer.Stop();
                button.Image = Properties.Resources.play;
                StateBuffer.Seek(0, SeekOrigin.Begin);
                currentState = (State)fileFormat.Deserialize(StateBuffer);
                UpdateTable();
                InputUpdate();
                CurrentStepLabel.Text = $"Шаг: {currentState.Step}/{currentState.TotalSteps}";
                HighlightCurrentStep();
                button.Tag             = "play";
                CurrentStateLabel.Text = "Нажмите \"Запуск\", чтобы начать исполнение.";
            }
        }
Example #9
0
        public void Start()
        {
            Console.WriteLine($"Starting Server");
            var state = new StateBuffer(8 * 1024);

            socket.Bind(endpointReceive);
            Receive(state);
        }
Example #10
0
 public static object F_Hashtable(bool bHelp, object[] ol, StateBuffer sb)
 {
     if (bHelp)
     {
         return("新規ハッシュテーブルの作成。" + NL + "例) var t = hashtable();  t.a = 123; t.b=234;");
     }
     return(new System.Collections.Hashtable());
 }
        public static StateBuffer run_runtype(YVALUE v, StateBuffer sb)
        {
            var nsb  = sb;
            var item = nsb.m_pvitem;

            item.o       = v.o;
            nsb.m_pvitem = item;
            return(nsb);
        }
        public static StateBuffer run_qstr(YVALUE v, StateBuffer sb)
        {
            var nsb  = sb;
            var item = nsb.m_pvitem;

            item.o       = v.GetString();
            nsb.m_pvitem = item;
            return(nsb);
        }
        public static StateBuffer run_num(YVALUE v, StateBuffer sb)
        {
            var nsb  = sb;
            var item = nsb.m_pvitem;

            item.o       = v.GetNumber();
            nsb.m_pvitem = item;
            return(nsb);
        }
Example #14
0
    public static object F_ReadLineDone(bool bHelp, object[] ol, StateBuffer sb)
    {
        if (bHelp)
        {
            return("GUI入力取得");
        }

        return(m_readtext);
    }
Example #15
0
 private void NextStepButton_Click(object sender, EventArgs e)
 {
     StateBuffer.Seek(0, SeekOrigin.Begin);
     for (int i = 0; i < currentState.Step + 1; i++)
     {
         fileFormat.Deserialize(StateBuffer);
     }
     NextStep();
 }
Example #16
0
        public static object F_HashtableKeys(bool bHelp, object[] ol, StateBuffer sb)
        {
            if (bHelp)
            {
                return("ハッシュテーブルのキー取得" + NL + "format: hashtabeKeys(ハッシュテーブル);");
            }
            var ht = (Hashtable)ol[0];

            return(ht.Keys);
        }
Example #17
0
        void ProcessBuffer(int bytes)
        {
            byte[] mTemp = new byte[1024];
            _receiveBuffer = StateBuffer.Init();
            _receiveBuffer.BeginWriting(false).Write(buffer, 0, bytes);
            _temp         = _receiveBuffer.buffer;
            _packetLenght = _receiveBuffer.PeekInt(0);
            Header ReceivedPacket = Header.CreateBuilder().MergeFrom(_receiveBuffer.ReadBytes(_packetLenght)).Build();

            PacketQueue.Enqueue(ReceivedPacket);
        }
Example #18
0
        public static object Run(string name, object[] ol, StateBuffer sb)
        {
            var i = (item)m_hash[name]; //.ToUpper()];

            if (i == null)
            {
                return(null);
            }

            return(i.Exec(ol, sb));
        }
Example #19
0
        public static object F_GetHelp(bool bHelp, object[] ol, StateBuffer sb)
        {
            if (bHelp)
            {
                return("ビルトインの全関数ヘルプ取得");
            }

            var s = slagtool.runtime.builtin.builtin_func.Help();

            return(s);
        }
Example #20
0
        public object CallFunc(YVALUE func, object[] param = null)
        {
            if (func != null)
            {
                //m_curslag = this;
                List <object> ol = param != null ? new List <object>(param) : null;
                m_statebuf = runtime.util.CallFunction(func, ol, m_statebuf);
                return(m_statebuf.m_cur);
            }

            throw new SystemException("CallFunc : ファンクションがありません : " + func.GetFunctionName());
        }
        public static StateBuffer run_array_value(StateBuffer sb, YVALUE v, object index_o)
        {
            var nsb = sb;

            nsb = run_script.run(v, nsb);
            var item = nsb.m_pvitem;

            if (item.getter != null)
            {
                item.o = item.getter();
            }
            if (item.o != null)
            {
                if (item.o.GetType().IsArray)
                {
                    var i = (int)util.ToNumber(index_o);
                    var a = (Array)item.o;
                    item.o = a.GetValue(i);

                    nsb.m_pvitem = item;
                    return(nsb);
                }
                if (item.o.GetType() == typeof(LIST))
                {
                    var i = (int)util.ToNumber(index_o);
                    var l = (LIST)item.o;
                    item.o = l[i];

                    nsb.m_pvitem = item;
                    return(nsb);
                }
                if (item.o.GetType() == typeof(Hashtable))
                {
                    var ht = (Hashtable)item.o;
                    item.o = ht[index_o];

                    nsb.m_pvitem = item;
                    return(nsb);
                }
                if (item.o is string)
                {
                    var i = (int)util.ToNumber(index_o);
                    var s = (string)item.o;
                    item.o = s[i];

                    nsb.m_pvitem = item;
                    return(nsb);
                }
            }
            util._error("unexpected");
            return(null);
        }
Example #22
0
        public void Receive(StateBuffer stateBuffer)
        {
            var offset = 0;

            socket.BeginReceiveFrom(
                stateBuffer.Buffer,
                offset,
                stateBuffer.Buffer.Length,
                SocketFlags.None,
                ref endpointReceive,
                new AsyncCallback(ReceiveDataCallback),
                stateBuffer);
        }
Example #23
0
        public static object F_Exit(bool bHelp, object[] ol, StateBuffer sb)
        {
            if (bHelp)
            {
                return("スクリプト実行終了");
            }

            sb.m_bExit = true;

            sys.logline("Exit!", true);

            return(null);
        }
Example #24
0
    public static object F_ReadLineStart(bool bHelp, object[] ol, StateBuffer sb)
    {
        if (bHelp)
        {
            return("GUI入力開始");
        }

        m_readtext = null;
        var label = kit.get_string_at(ol, 0);

        guiDisplay.GetInput(label, "", (s) => m_readtext = s);
        return(null);
    }
Example #25
0
        public static object F_Typeof(bool bHelp, object[] ol, StateBuffer sb = null)
        {
            if (bHelp)
            {
                return("タイプ型を取得。例)var t = typeof(System.Int32);");
            }

            kit.check_num_of_args(ol, 1);

            var s    = kit.get_string_at(ol, 0); //.ToUpper();
            var type = slagtool.runtime.sub_pointervar_clause.find_typeinfo(s);

            return(type);
        }
        public static StateBuffer run_name(YVALUE v, StateBuffer sb)
        {
            var            nsb    = sb;
            var            name   = v.GetString();
            PointervarItem item   = nsb.m_pvitem;
            var            preobj = item.o; //先行ロケーションアイテムの値

            if (preobj == null)             //先行値がないのでNAMEとしてバッファを検索し、なければリテラルとして処理を以降に任せる
            {
                if (nsb.exist(name))
                {
                    item.o = nsb.get(name);
                }
                else
                {
                    var literal = new Literal();
                    literal.s = name;
                    item.o    = literal;
                }
                nsb.m_pvitem = item;

                return(nsb);
            }
            var pretype = preobj.GetType();

            if (pretype == typeof(Literal))
            {
                var literal = (Literal)preobj;
                item         = GetObj(literal.s, name, item);
                nsb.m_pvitem = item;
                return(nsb);
            }

            if (pretype == typeof(Hashtable))
            {
                var ht    = (Hashtable)preobj;
                var nameo = name.ToUpper();
                item.o      = ht[nameo];
                item.getter = () => ht[nameo];
                item.setter_parametertype = null;
                item.setter  = (x) => ht[nameo] = x;
                nsb.m_pvitem = item;
                return(nsb);
            }

            item         = GetObj(preobj, name, item);
            nsb.m_pvitem = item;
            return(nsb);
        }
Example #27
0
        public static object F_Print(bool bHelp, object[] ol, StateBuffer sb)
        {
            if (bHelp)
            {
                return("表示。 例) Print(\"hoge!\");");
            }
            kit.check_num_of_args(ol, 1);
            var o = kit.get_ol_at(ol, 0);
            var s = kit.convert_escape(o);

            //Debug.Log(s);
            //guiDisplay.Write(s);
            m_printFunc(s);

            return(null);
        }
        public static StateBuffer run_new_func(YVALUE v, StateBuffer sb)
        {
            var nsb  = sb;
            var item = new PointervarItem(); //先行アイテム。中身なし

            item.mode = PointervarMode.NEW;

            nsb.m_pvitem = item;

            nsb = run_script.run(v, nsb.curnull());

            nsb.m_cur = nsb.m_pvitem.o;
            nsb.pvitemnull();

            return(nsb);
        }
Example #29
0
        public static object F_ToNumber(bool bHelp, object[] ol, StateBuffer sb = null)
        {
            if (bHelp)
            {
                return("文字列またはNumber以外数値型の値をNumber型の数値に変換。" + NL + "例)var a = ToNumber(\"123\");");
            }

            kit.check_num_of_args(ol, 1);

            var x = kit.get_number_at(ol, 0);

            if (!number.IsNaN(x))
            {
                return(x);
            }
            return((number)0);
        }
Example #30
0
 internal static StateBuffer CallFunction(YVALUE fv, List <object> ol, StateBuffer sb)
 {
     if (sb.m_bExit)
     {
         return(sb);
     }
     try {
         sb = _callFunction(fv, ol, sb);
     } catch (SystemException e)
     {
         if (e.Message == "EXIT" && sb.m_bExit)
         {
             //OK!
         }
         else
         {
             throw new SystemException(e.Message);
         }
     }
     return(sb);
 }