public static bool AddPlan(string p, long id) { try { if (TaskDictionary.GetInstance().find(0) == null) { Model.Elements.Task task = new Model.Elements.Task(); task.name = "DEFAULT"; task.id = 0; task.scale = 31; TaskDictionary.GetInstance().Add(task); STask st = new STask(); st.name = "DEFAULT_STASK"; st.id = 0; st.order = 0; STaskDictionary.GetInstance().Add(st); SubTask subt = new SubTask(); subt.name = p; subt.id = id; subt.showT = DateTime.Now; SubTaskDictionary.GetInstance().Add(subt); EPlan plan = new EPlan(); plan.name = p; plan.id = id; plan.showT = DateTime.Now; EPlanDictionary.GetInstance().Add(plan); st.subtaskID.Add(subt.id); task.staskID.Add(st.id); } else { Model.Elements.Task task = TaskDictionary.GetInstance().find(0); SubTask subt = new SubTask(); subt.name = p; subt.id = id; subt.showT = DateTime.Now; SubTaskDictionary.GetInstance().Add(subt); EPlan plan = new EPlan(); plan.name = p; plan.id = id; plan.showT = DateTime.Now; EPlanDictionary.GetInstance().Add(plan); STaskDictionary.GetInstance().find(0).subtaskID.Add(subt.id); } return(true); } catch (Exception ex) { Logger.WriteLogs("MainFormController/AddPlan Error: " + ex.Message); return(false); } }
private void Start() { _currentLives = _startLives; _canExecuteHealingAbility = true; // Start losing lives when the game starts _loseLivesTask = STasks.DoUntil(LoseOneLife, () => _currentLives == 0, 1.0f).OnComplete(OnGameOver); }
internal ClientRequestInfo(string typeName, string[] args) { TaskExecutionRequest = new STask() { Id = Guid.NewGuid().ToString(), STaskTypeName = typeName, STaskParameters = args }; CompletionSource = new TaskCompletionSource <TResult>(); }
public void Remove(STask t) { if (taskDictionary.ContainsKey(t.id)) { lock (_lock) { if (taskDictionary.ContainsKey(t.id)) { taskDictionary.Remove(t.id); } } } }
public void Add(STask t) { if (!taskDictionary.ContainsKey(t.id)) { lock (_lock) { if (!taskDictionary.ContainsKey(t.id)) { taskDictionary.Add(t.id, t); } } } }
private void RandomizeCameraColorThreeTimes() { // Randomizes the color of the camera three times, with a 1.5 seconds wait between changes. _startColor = _camera.backgroundColor; int timesRandomized = 0; // If we already have a task doing this, kill it _randomizeCameraColorTask?.Kill(); _randomizeCameraColorTask = STasks.DoUntil( action: () => { timesRandomized++; _camera.backgroundColor = new Color(Random.value, Random.value, Random.value); }, condition: () => timesRandomized > 3, every: 1.5f); // Reset the color on complete _randomizeCameraColorTask.OnComplete(() => _camera.backgroundColor = _startColor); }
public bool Upgrade(STask oldt, STask newt) { try { lock (_lock) { if (taskDictionary.ContainsKey(oldt.id)) { taskDictionary.Remove(oldt.id); } taskDictionary.Add(newt.id, newt); return(true); } } catch (Exception ex) { //MessageBox.Show(ex.Message); return(false); } }
private void GainOneLife() { _canExecuteHealingAbility = false; _currentLives++; _livesUI.SetLives(_currentLives); // Show the cooldown UI _cooldownUI.Show(); _healingAbilityCooldownTask?.Kill(); // Reenable the healing ability after the cooldown _healingAbilityCooldownTask = STasks.Do(() => _canExecuteHealingAbility = true, _healingCooldown); // Update the cooldown UI every frame _healingAbilityCooldownTask.OnUpdate(() => _cooldownUI.SetProgress(_healingAbilityCooldownTask.Progress)); // Hide the cooldown UI when the task is complete _healingAbilityCooldownTask.OnComplete(() => _cooldownUI.Hide()); }
/// <summary> /// Insert a task using STask to house the data /// </summary> /// <param name="Task">A STask collection of task data</param> /// <returns>The resulting task id or null on failure, checks for existing item first</returns> public uint? insertTask(STask Task) { if (Task.OtherDesc.Length > TEXT_FIELD_MAX) throw new TextTooLargeException(String.Format("OtherDescription is too large({0}) max {1}!", Task.OtherDesc.Length, TEXT_FIELD_MAX)); uint? key = (uint?)getExistingTaskID(Task);//Check for task, get index or if (key == null) { key = (uint?)getNewKey("VolunteerTask", "TaskID"); try { return new MySQLCommand( String.Format("INSERT INTO VolunteerTask VALUES({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},'{11}');", key, Task.Did_Class, Task.Office_Work, Task.Maintenance, Task.Conditioning, Task.Horse_Care, Task.Committee, Task.Board, Task.Jr_Volunteer, Task.Special_Olympics, Task.Other, filterEscape(Task.OtherDesc)), vlcon) .ExecuteNonQuery() == 1 ? key : null; } catch (MySQLException) { throw new DatabaseNotOpenException(); } } else return key; }
/// <summary> /// Gets the TaskID of a task if it exists /// </summary> /// <param name="Task">The STask object containing the individual task data</param> /// <returns>The TaskID or null if the task doesn't exist. A new task can then be made with that STask</returns> private int? getExistingTaskID(STask Task){ MySQLCommand mc = new MySQLCommand( String.Format( "SELECT TaskID FROM VolunteerTask WHERE {0}={1} AND {2}={3} AND {4}={5} AND {6}={7} AND {8}={9} AND {10}={11} AND {12}={13} AND {14}={15} AND {16}={17} AND {18}={19} AND {20}='{21}' LIMIT 1;" ,"Class",Task.Did_Class,"Office",Task.Office_Work,"Maintenance",Task.Maintenance,"Conditioning",Task.Conditioning,"HorseCare",Task.Horse_Care,"Committee",Task.Committee ,"Board",Task.Board,"JrVolunteer",Task.Jr_Volunteer,"SpecialOlympics",Task.Special_Olympics,"Other",Task.Other,"OtherDescription",filterEscape(Task.OtherDesc) ), vlcon); MySQLDataReader dr; try { dr = mc.ExecuteReaderEx(); } catch (MySQLException) { throw new DatabaseNotOpenException(); } int? rval=null; if (dr.Read()) { rval = dr.GetInt32(0); } mc.Dispose(); dr.Dispose(); return rval; }
private AsyncSTaskMethodBuilder(STask <T> sTask) { _sTask = sTask; }
public static AsyncSTaskMethodBuilder <T> Create() => new AsyncSTaskMethodBuilder <T>(STask <T> .Create());
public static void ReadXML(string filePath, XmlDocument xmlDoc) { xmlDoc.Load(filePath); //try //{ // //load plan // XmlNodeList planNodeList = xmlDoc.SelectSingleNode("Information/Plans").ChildNodes; // foreach (XmlNode xnode in planNodeList) // { // EPlan plan = new EPlan(); // XmlElement xe = (XmlElement)xnode; // plan.name = xe.GetElementsByTagName("name")[0].InnerText; // plan.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); // plan.progress = int.Parse(xe.GetElementsByTagName("progress")[0].InnerText); // if (xe.GetElementsByTagName("state")[0].InnerText == "activated") plan.state = true; // else if (xe.GetElementsByTagName("state")[0].InnerText == "inactivated") plan.state = false; // plan.showT = Convert.ToDateTime(xe.GetElementsByTagName("appeared_time")[0].InnerText); // plan.startT = Convert.ToDateTime(xe.GetElementsByTagName("started_time")[0].InnerText); // plan.endT = Convert.ToDateTime(xe.GetElementsByTagName("end_time")[0].InnerText); // plan.finalT = Convert.ToDateTime(xe.GetElementsByTagName("expected_end_time")[0].InnerText); // plan.startF = int.Parse(xe.GetElementsByTagName("started_frequency")[0].InnerText); // plan.stopF = int.Parse(xe.GetElementsByTagName("stopped_frequency")[0].InnerText); // if (xe.GetElementsByTagName("end_state")[0].InnerText == "done") plan.endState = true; // else if (xe.GetElementsByTagName("end_state")[0].InnerText == "gave_up") plan.endState = false; // plan.lastT = TimeSpan.Parse(xe.GetElementsByTagName("last_time")[0].InnerText); // for (int i = 0; i < xe.GetElementsByTagName("steps")[0].ChildNodes.Count; i++) // { // Step s = new Step(); // s.name = xe.GetElementsByTagName("steps")[0].ChildNodes[i].InnerText; // plan.steps.Add(s); // } // EPlanDictionary.GetInstance().Add(plan); // } //} //catch(Exception ex) //{ // Logger.WriteLogs("Loading eplan XML error: " + ex.Message); //} try { //load lplan XmlNodeList lplanNodeList = xmlDoc.SelectSingleNode("Information/LPlans").ChildNodes; foreach (XmlNode xnode in lplanNodeList) { LPlan lplan = new LPlan(); XmlElement xe = (XmlElement)xnode; lplan.name = xe.GetElementsByTagName("name")[0].InnerText; lplan.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); LPlanDictionary.GetInstance().Add(lplan); } } catch (Exception ex) { Logger.WriteLogs("Loading lplan XML error: " + ex.Message); } try { //load allsub XmlNodeList subNodeList = xmlDoc.SelectSingleNode("Information/AllSub").ChildNodes; foreach (XmlNode xnode in subNodeList) { AllSub alls = new AllSub(); XmlElement xe = (XmlElement)xnode; alls.name = xe.GetElementsByTagName("name")[0].InnerText; alls.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); AllSubDictionary.GetInstance().Add(alls); } } catch (Exception ex) { Logger.WriteLogs("Loading lplan XML error: " + ex.Message); } try { //load task XmlNodeList taskNodeList = xmlDoc.SelectSingleNode("Information/Tasks").ChildNodes; foreach (XmlNode xnode in taskNodeList) { Task task = new Task(); XmlElement xe = (XmlElement)xnode; task.name = xe.GetElementsByTagName("name")[0].InnerText; task.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); task.progress = int.Parse(xe.GetElementsByTagName("progress")[0].InnerText); task.goalID = long.Parse(xe.GetElementsByTagName("goalID")[0].InnerText); for (int i = 0; i < xe.GetElementsByTagName("staskIDs")[0].ChildNodes.Count; i++) { long l = long.Parse(xe.GetElementsByTagName("staskIDs")[0].ChildNodes[i].InnerText); task.staskID.Add(l); } for (int i = 0; i < xe.GetElementsByTagName("allSubIDs")[0].ChildNodes.Count; i++) { long l = long.Parse(xe.GetElementsByTagName("allSubIDs")[0].ChildNodes[i].InnerText); task.allSubID.Add(l); } task.expecT = Convert.ToDateTime(xe.GetElementsByTagName("expecT")[0].InnerText); task.creatT = Convert.ToDateTime(xe.GetElementsByTagName("creatT")[0].InnerText); task.totalT = TimeSpan.Parse(xe.GetElementsByTagName("totalT")[0].InnerText); for (int i = 0; i < xe.GetElementsByTagName("dailyDoneCount")[0].ChildNodes.Count; i++) { int l = int.Parse(xe.GetElementsByTagName("dailyDoneCount")[0].ChildNodes[i].InnerText); task.dailyDoneCount.Add(l); } task.totalSubtaskNum = int.Parse(xe.GetElementsByTagName("totalSubtaskNum")[0].InnerText); task.doneSubtaskNum = int.Parse(xe.GetElementsByTagName("doneSubtaskNum")[0].InnerText); task.popularity = int.Parse(xe.GetElementsByTagName("popularity")[0].InnerText); task.reward = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText); if (xe.GetElementsByTagName("state")[0].InnerText == "closed") { task.state = true; } else if (xe.GetElementsByTagName("state")[0].InnerText == "open") { task.state = false; } TaskDictionary.GetInstance().Add(task); } } catch (Exception ex) { Logger.WriteLogs("Loading task XML error: " + ex.Message); } try { //load goal XmlNodeList goalNodeList = xmlDoc.SelectSingleNode("Information/Goals").ChildNodes; foreach (XmlNode xnode in goalNodeList) { Goal goal = new Goal(); XmlElement xe = (XmlElement)xnode; goal.name = xe.GetElementsByTagName("name")[0].InnerText; goal.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); GoalDictionary.GetInstance().Add(goal); } } catch (Exception ex) { Logger.WriteLogs("Loading goal XML error: " + ex.Message); } try { //load thought XmlNodeList thoughtNodeList = xmlDoc.SelectSingleNode("Information/Thoughts").ChildNodes; foreach (XmlNode xnode in thoughtNodeList) { Thought thought = new Thought(); XmlElement xe = (XmlElement)xnode; thought.name = xe.GetElementsByTagName("name")[0].InnerText; thought.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); ThoughtDictionary.GetInstance().Add(thought); } } catch (Exception ex) { Logger.WriteLogs("Loading thought XML error: " + ex.Message); } try { //load stask XmlNodeList sTaskNodeList = xmlDoc.SelectSingleNode("Information/STasks").ChildNodes; foreach (XmlNode xnode in sTaskNodeList) { STask sTask = new STask(); XmlElement xe = (XmlElement)xnode; sTask.name = xe.GetElementsByTagName("name")[0].InnerText; sTask.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); sTask.taskID = long.Parse(xe.GetElementsByTagName("taskID")[0].InnerText); sTask.order = int.Parse(xe.GetElementsByTagName("order")[0].InnerText); sTask.lplanID = int.Parse(xe.GetElementsByTagName("lplanID")[0].InnerText); sTask.totalSubtaskNum = int.Parse(xe.GetElementsByTagName("totalSubtaskNum")[0].InnerText); sTask.doneSubtaskNum = int.Parse(xe.GetElementsByTagName("doneSubtaskNum")[0].InnerText); sTask.reward = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText); for (int i = 0; i < xe.GetElementsByTagName("subtaskIDs")[0].ChildNodes.Count; i++) { long l = long.Parse(xe.GetElementsByTagName("subtaskIDs")[0].ChildNodes[i].InnerText); sTask.subtaskID.Add(l); } if (xe.GetElementsByTagName("state")[0].InnerText == "closed") { sTask.state = true; } else if (xe.GetElementsByTagName("state")[0].InnerText == "open") { sTask.state = false; } if (xe.GetElementsByTagName("procedure")[0].InnerText == "procedure") { sTask.procedure = true; } else if (xe.GetElementsByTagName("procedure")[0].InnerText == "nprocedure") { sTask.procedure = false; } if (xe.GetElementsByTagName("structure")[0].InnerText == "structure") { sTask.structure = true; } else if (xe.GetElementsByTagName("structure")[0].InnerText == "nstructure") { sTask.structure = false; } sTask.totalT = TimeSpan.Parse(xe.GetElementsByTagName("totalT")[0].InnerText); STaskDictionary.GetInstance().Add(sTask); } } catch (Exception ex) { Logger.WriteLogs("Loading stask XML error: " + ex.Message); } try { //load subtask XmlNodeList subTaskNodeList = xmlDoc.SelectSingleNode("Information/SubTasks").ChildNodes; foreach (XmlNode xnode in subTaskNodeList) { SubTask subTask = new SubTask(); XmlElement xe = (XmlElement)xnode; subTask.name = xe.GetElementsByTagName("name")[0].InnerText; subTask.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText); subTask.staskID = long.Parse(xe.GetElementsByTagName("staskID")[0].InnerText); subTask.order = int.Parse(xe.GetElementsByTagName("order")[0].InnerText); subTask.eplanID = long.Parse(xe.GetElementsByTagName("eplanID")[0].InnerText); subTask.difficulty = int.Parse(xe.GetElementsByTagName("difficulty")[0].InnerText); subTask.reward = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText); if (xe.GetElementsByTagName("state")[0].InnerText == "closed") { subTask.state = true; } else if (xe.GetElementsByTagName("state")[0].InnerText == "open") { subTask.state = false; } if (xe.GetElementsByTagName("ready")[0].InnerText == "is_ready") { subTask.ready = true; } else if (xe.GetElementsByTagName("ready")[0].InnerText == "not_ready") { subTask.ready = false; } if (xe.GetElementsByTagName("inout")[0].InnerText == "in") { subTask.inout = true; } else if (xe.GetElementsByTagName("inout")[0].InnerText == "out") { subTask.inout = false; } SubTaskDictionary.GetInstance().Add(subTask); } } catch (Exception ex) { Logger.WriteLogs("Loading subtask XML error: " + ex.Message); } }
private void TaskBook_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("Are you sure to quit", "Quit", MessageBoxButtons.OKCancel) == DialogResult.OK) { try { AllSubDictionary.GetInstance().RemoveAll(); STaskDictionary.GetInstance().RemoveAll(); SubTaskDictionary.GetInstance().RemoveAll(); TaskDictionary.GetInstance().find(taskID).allSubID = new List <long>(); TaskDictionary.GetInstance().find(taskID).staskID = new List <long>(); foreach (KeyValuePair <long, names> kvp in asDic) { if (kvp.Value.inall && !kvp.Value.isfather) { AllSub ast = new AllSub(); ast.name = kvp.Value.name; ast.id = kvp.Key; AllSubDictionary.GetInstance().Add(ast); if (TaskDictionary.GetInstance().find(taskID) != null) { if (!TaskDictionary.GetInstance().find(taskID).allSubID.Contains(ast.id)) { TaskDictionary.GetInstance().find(taskID).allSubID.Add(ast.id); } } } else if (kvp.Value.isfather && !kvp.Value.inall) { STask st = new STask(); st.name = kvp.Value.name; st.id = kvp.Key; st.taskID = taskID; st.order = sTaskList.FindStringExact(kvp.Value.name); foreach (idn i in fsRel[st.id]) { st.subtaskID.Add(i.id); SubTask subt = new SubTask(); subt.name = asDic[i.id].name; subt.id = i.id; subt.order = i.order; subt.staskID = st.id; SubTaskDictionary.GetInstance().Add(subt); } STaskDictionary.GetInstance().Add(st); if (TaskDictionary.GetInstance().find(taskID) != null) { if (!TaskDictionary.GetInstance().find(taskID).staskID.Contains(st.id)) { TaskDictionary.GetInstance().find(taskID).staskID.Add(st.id); } } } //else if(!kvp.Value.isfather && !kvp.Value.inall) //{ // SubTask subt = new SubTask(); // subt.name = kvp.Value.name; // subt.id = kvp.Key; // SubTaskDictionary.GetInstance().Add(subt); //} } } catch (Exception ex) { Logger.WriteLogs("TaskBook FormClosing Error: " + ex.Message); } } else { e.Cancel = true; } }
public void Run() { var game_main = GameMain.GetInstance(); var g3d_map = game_main.g3d_map; // まず移動させよう // 移動範囲を表示、算出して move_area.Check(select_unit.map_x, select_unit.map_y, select_unit.bt.status["MOVE"].now, select_unit.bt.status["JUMP"].now); // 移動できる場所をリストアップ var move_point_list = new List <MovePoint>(); for (var mx = 0; mx < move_area.map_w; mx++) { for (var my = 0; my < move_area.map_h; my++) { if (move_area.IsInside(mx, my)) { var mp = new MovePoint(); mp.map_x = mx; mp.map_y = my; mp.evaluation = 0; //とりあえず初期値 move_point_list.Add(mp); } } } { // 移動しない場合 var mp = new MovePoint(); mp.map_x = select_unit.map_x; mp.map_y = select_unit.map_y; move_point_list.Add(mp); } // 移動できる場所を判定 MovePoint max_mp = null; var max_evalution = 0.0; foreach (var mp in move_point_list) { var evalution = 0.0; CalcMoveEvalution(mp); evalution = mp.evaluation * 3; var rs = CalcRangeStatus(mp.map_x, mp.map_y, false); evalution += (-rs.evaluation_min) / 5 + (-rs.evaluation_avg) / 10; //Console.WriteLine("{0},{1} ({2}) {3} {4}", mp.map_x,mp.map_y, mp.evaluation, rs.evaluation_min, rs.evaluation_avg); if (max_mp == null || max_evalution < evalution) { max_evalution = evalution; max_mp = mp; } } Thread.Sleep(100); // 移動を実行 if (max_mp.map_x != select_unit.map_x || max_mp.map_y != select_unit.map_y) { var t = new STask((param) => { select_unit.Move(max_mp.map_x, max_mp.map_y, true); GameMain.GetInstance().g3d_map.ClearRangeAreaEffect(); }, null); STaskManager.Add(t); t.WaitEnd(); } Console.WriteLine("pos " + select_unit.map_x + "," + select_unit.map_y); Thread.Sleep(100); // 行動を決める { var action_datas = new ActionDatas(); int num, effective_point_avg, effective_point_max; if (IsExistActionTarget(max_mp.map_x, max_mp.map_y, out num, out effective_point_avg, out effective_point_max, action_datas)) { Console.WriteLine("----A"); Console.WriteLine("pos " + select_unit.map_x + "," + select_unit.map_y); var t = new STask((param) => { var a = action_datas.actions[0]; var ad = ActionDataManager.GetActionData(a.command); var target_unit = game_main.unit_manager.GetUnit(a.target_map_x, a.target_map_y); if (target_unit != null) { game_main.user_interface.SetStatusUnit(target_unit); } Console.WriteLine("DoAction {0} {1} {2} {3}", a.command, ad.range_type, select_unit.name, a.target.name); scene_battle.DoAction(a.command, ad.range_type, select_unit, a.target_map_x, a.target_map_y, false); }, null); Console.WriteLine("----B"); Console.WriteLine("pos " + select_unit.map_x + "," + select_unit.map_y); STaskManager.Add(t); Console.WriteLine("----C"); Console.WriteLine("pos " + select_unit.map_x + "," + select_unit.map_y); t.WaitEnd(); } } Thread.Sleep(100); g3d_map.ClearRangeAreaEffect(); //Thread.Sleep(1000); //scene_battle.NextUnitTurn(); is_thread_end = true; Console.WriteLine("BattleAI Run End"); }