Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        private void Start()
        {
            _currentLives             = _startLives;
            _canExecuteHealingAbility = true;

            // Start losing lives when the game starts
            _loseLivesTask = STasks.DoUntil(LoseOneLife, () => _currentLives == 0, 1.0f).OnComplete(OnGameOver);
        }
Esempio n. 3
0
 internal ClientRequestInfo(string typeName, string[] args)
 {
     TaskExecutionRequest = new STask()
     {
         Id              = Guid.NewGuid().ToString(),
         STaskTypeName   = typeName,
         STaskParameters = args
     };
     CompletionSource = new TaskCompletionSource <TResult>();
 }
Esempio n. 4
0
 public void Remove(STask t)
 {
     if (taskDictionary.ContainsKey(t.id))
     {
         lock (_lock)
         {
             if (taskDictionary.ContainsKey(t.id))
             {
                 taskDictionary.Remove(t.id);
             }
         }
     }
 }
Esempio n. 5
0
 public void Add(STask t)
 {
     if (!taskDictionary.ContainsKey(t.id))
     {
         lock (_lock)
         {
             if (!taskDictionary.ContainsKey(t.id))
             {
                 taskDictionary.Add(t.id, t);
             }
         }
     }
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 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);
     }
 }
Esempio n. 8
0
        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());
        }
Esempio n. 9
0
    /// <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;
    }
Esempio n. 10
0
 /// <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;
 }
Esempio n. 11
0
 private AsyncSTaskMethodBuilder(STask <T> sTask)
 {
     _sTask = sTask;
 }
Esempio n. 12
0
 public static AsyncSTaskMethodBuilder <T> Create() => new AsyncSTaskMethodBuilder <T>(STask <T> .Create());
Esempio n. 13
0
        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);
            }
        }
Esempio n. 14
0
        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;
            }
        }
Esempio n. 15
0
        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");
        }