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))); }
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); }
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); }
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)); }
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); }
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 = "Нажмите \"Запуск\", чтобы начать исполнение."; }
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("Не удалось сохранить файл."); } }
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 = "Нажмите \"Запуск\", чтобы начать исполнение."; } }
public void Start() { Console.WriteLine($"Starting Server"); var state = new StateBuffer(8 * 1024); socket.Bind(endpointReceive); Receive(state); }
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); }
public static object F_ReadLineDone(bool bHelp, object[] ol, StateBuffer sb) { if (bHelp) { return("GUI入力取得"); } return(m_readtext); }
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(); }
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); }
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); }
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)); }
public static object F_GetHelp(bool bHelp, object[] ol, StateBuffer sb) { if (bHelp) { return("ビルトインの全関数ヘルプ取得"); } var s = slagtool.runtime.builtin.builtin_func.Help(); return(s); }
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); }
public void Receive(StateBuffer stateBuffer) { var offset = 0; socket.BeginReceiveFrom( stateBuffer.Buffer, offset, stateBuffer.Buffer.Length, SocketFlags.None, ref endpointReceive, new AsyncCallback(ReceiveDataCallback), stateBuffer); }
public static object F_Exit(bool bHelp, object[] ol, StateBuffer sb) { if (bHelp) { return("スクリプト実行終了"); } sb.m_bExit = true; sys.logline("Exit!", true); return(null); }
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); }
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); }
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); }
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); }
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); }