Exemple #1
0
        public IHttpActionResult PutTimeTasks(int id, TimeTask timeTasks)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != timeTasks.TaskId)
            {
                return(BadRequest());
            }

            db.Entry(timeTasks).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!db.TimeTaskExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
    void OnTimeLeftToComplete(TimeTask task, int secondLeft)
    {
        Debug.Log("finish training time left: " + TimeConverter.GetHours(secondLeft) + ":"
                  + TimeConverter.GetMinutes(secondLeft) + ":" + TimeConverter.GetSeconds(secondLeft));

        UITimePopupController.Instance.GetTimePopup(transform).DisplayTime(secondLeft, task.TaskDuration, ImageManager.Instance.CombatUnitSpriteNameForHead(((ProduceUnitTask)task).UnitType));
    }
Exemple #3
0
        public async Task Post(string Title, string Description, string StartDate, string EndDate)
        {
            TimeTask tb = new TimeTask();

            tb.Title       = Title;
            tb.Description = Description;

            if (StartDate.Equals("null") && EndDate.Equals("null"))
            {
                await this.timeTaskProvider.AddTask(tb);
            }
            else
            {
                //if (StartDate.Equals("null") || EndDate.Equals("null"))
                //{
                //    return "when using dates, both need to be sent";
                //}
                tb.StartDate = Convert.ToDateTime(StartDate);
                tb.EndDate   = Convert.ToDateTime(EndDate);
            }

            if (tb.StartDate > tb.EndDate)
            {
                // TODO: throw exception
                //throw new UriFormatException("start date cannot be after end date");
            }
            else
            {
                await this.timeTaskProvider.AddTask(tb);
            }
        }
        public async Task <IActionResult> Index(int id)
        {
            Socket socket = _socketRepository.GetSocketById(id);

            if (socket == null)
            {
                return(new NotFoundResult());
            }

            TimeTask timeTask = new TimeTask {
                Socket = socket
            };

            AuthorizationResult authorizationResult = await _authorizationService
                                                      .AuthorizeAsync(User, timeTask, Operations.Read);

            if (!authorizationResult.Succeeded)
            {
                return(new ForbidResult());
            }

            ViewData["SocketName"] = socket.Name;
            ViewData["RoomName"]   = socket.Room.Name;

            IEnumerable <TimeTaskListViewModel> timeTaskViewModel = _mapper
                                                                    .Map <IEnumerable <TimeTask>, IEnumerable <TimeTaskListViewModel> >(socket.TimeTasks.OrderBy(tt => tt.TimeStamp).ToList());

            return(View(timeTaskViewModel));
        }
        public async Task <IActionResult> Create(int id)
        {
            Socket socket = _socketRepository.GetSocketById(id);

            if (socket == null)
            {
                return(new NotFoundResult());
            }

            TimeTask timeTask = new TimeTask {
                Socket = socket, SocketId = id, TimeStamp = DateTime.Today
            };

            AuthorizationResult authorizationResult = await _authorizationService
                                                      .AuthorizeAsync(User, timeTask, Operations.Create);

            if (!authorizationResult.Succeeded)
            {
                return(new ForbidResult());
            }

            TimeTaskCreateViewModel timeTaskViewModel = _mapper.Map <TimeTaskCreateViewModel>(timeTask);

            return(View(timeTaskViewModel));
        }
Exemple #6
0
    protected override void SetUpSchedules()
    {
        Task detectPlayer = new Task(new WaitTillPlayerCloseState(this, ref player));

        TimeTask moveToForest = new TimeTask(50f, new MoveState(this, MapLocations.MiddleOfHauntedForestMiddle));
        TimeTask moveToBridge = new TimeTask(50f, new MoveState(this, MapLocations.BridgeMiddle));
        TimeTask moveToLightHouse = new TimeTask(50f, new MoveState(this, MapLocations.LightHouseMiddle));
        TimeTask moveToReflectionTree = new TimeTask(50f, new MoveState(this, MapLocations.ReflectionTreeMiddle));
        TimeTask moveToCliff = new TimeTask(50f, new MoveState(this, MapLocations.TopOfFirstFloorStairsRightMiddle));
        TimeTask moveToWindmill = new TimeTask(50f, new MoveState(this, MapLocations.WindmillMiddle));

        runAway = new ScheduleLoop(this);
        runAway.Add (moveToForest);
        runAway.Add (detectPlayer);
        runAway.Add (moveToBridge);
        runAway.Add (detectPlayer);
        runAway.Add (moveToLightHouse);
        runAway.Add (detectPlayer);
        runAway.Add (moveToReflectionTree);

        runAway.Add (detectPlayer);
        runAway.Add (moveToCliff);
        runAway.Add (detectPlayer);
        runAway.Add (moveToWindmill);

        wanderAndPlayMusic = new ScheduleLoop(this);
        wanderAndPlayMusic.Add (moveToForest);
        wanderAndPlayMusic.Add (moveToBridge);
        wanderAndPlayMusic.Add (moveToLightHouse);
        wanderAndPlayMusic.Add (moveToReflectionTree);
        wanderAndPlayMusic.Add (moveToCliff);
        wanderAndPlayMusic.Add (moveToWindmill);

        SetupInstrumentSchedules ();
    }
Exemple #7
0
    //替换定时任务
    public bool ReplaceTimeTask(int tID, Action callBack, double delay, ETimeUnit type = ETimeUnit.Millisecond, int count = 1)
    {
        delay *= (int)type;
        bool     find     = false;
        TimeTask timeTask = new TimeTask(callBack, GetNowUTCTime() + delay, count, delay, tID);

        //替换
        for (int i = 0; i < timeTaskList.Count; i++)
        {
            if (tID == timeTaskList[i].tID)
            {
                timeTaskList[i] = timeTask;
                find            = true;
                break;
            }
        }
        for (int i = 0; i < tempTimeTaskList.Count; i++)
        {
            if (tID == tempTimeTaskList[i].tID)
            {
                tempTimeTaskList[i] = timeTask;
                find = true;
                break;
            }
        }
        return(find);
    }
Exemple #8
0
    protected override void Init()
    {
        Add(new TimeTask(.05f, new IdleState(_toManage)));

            Task activateStoryIntroPartOne = (new Task(new MoveThenDoState(_toManage, new Vector3(14f, Y_COORDINATE, .3f), new MarkTaskDone(_toManage))));
            activateStoryIntroPartOne.AddFlagToSet(FlagStrings.oldSiblingIntroStoryOnePartOneFlag);
            Add(activateStoryIntroPartOne);

            Add(new TimeTask(3.5f, new IdleState(_toManage)));

            Add(new Task(new MoveThenDoState(_toManage, new Vector3(24f, Y_COORDINATE, .3f), new MarkTaskDone(_toManage))));

            //Task activateStoryIntroPartTwo = (new Task(new MoveThenDoState(_toManage, new Vector3(22f, Y_COORDINATE, .3f), new MarkTaskDone(_toManage))));
            //activateStoryIntroPartTwo.AddFlagToSet(FlagStrings.oldSiblingIntroStoryOnePartTwoFlag);
            //Add(activateStoryIntroPartTwo);

            //Add(new TimeTask(3f, new IdleState(_toManage)));
            Add(new TimeTask(10f, new WaitTillPlayerCloseState(_toManage, ref _toManage.player,2f)));

            Add(new Task(new MoveThenDoState(_toManage, new Vector3(30f, Y_COORDINATE, .3f), new MarkTaskDone(_toManage))));

        Task siblingOldReachedCarpenterSonTask = new TimeTask(.05f, new IdleState(_toManage)); // at top staircase
            siblingOldReachedCarpenterSonTask.AddFlagToSet(FlagStrings.siblingOldReachedCarpenterSonFlag);
            Add(siblingOldReachedCarpenterSonTask);
            Add(new TimeTask(12.5f, new IdleState(_toManage)));

            Task siblingChatWithCarpenterPartOne = new Task(new MoveThenDoState(_toManage, new Vector3 (32f, Y_COORDINATE, .3f), new MarkTaskDone(_toManage))); // at top staircase
            siblingChatWithCarpenterPartOne.AddFlagToSet(FlagStrings.siblingOldGreetCarpenterSonOldPartOneFlag);
            Add(siblingChatWithCarpenterPartOne);

            Add(new TimeTask(6f, new IdleState(_toManage)));
    }
Exemple #9
0
 public bool AddTimeTask(Controller controller, TimeTask task)
 {
     try
     {
         WGPacket packet = new WGPacket(0xA8);
         packet.SetDevSn(controller.sn);
         packet.SetTimeTask(task);
         bool ret = true;
         foreach (var item in task.doorIndexs)
         {
             if (item < 1 || item > 4)
             {
                 continue;
             }
             packet.SetTimeTaskDoorIndex(item);
             DoSend(packet, controller.ip, controller.port);
             List <WGPacket> packets = WGRecievePacket(1);
             if (packets.Count == 1)
             {
                 ret = ret && (packets[0].data[0] == 1);
             }
         }
         return(ret);
     }
     finally
     {
         this.Close();
     }
 }
Exemple #10
0
        public bool ReplaceTask(int taskId, Action callBack, float delay,
                                TimeUnitEnum timeUnitEnum = TimeUnitEnum.Millisecond,
                                int count = 1)
        {
            if (timeUnitEnum != TimeUnitEnum.Millisecond)
            {
                switch (timeUnitEnum)
                {
                case TimeUnitEnum.Second:
                    delay = delay * 1000;
                    break;

                case TimeUnitEnum.Minute:
                    delay = delay * 1000 * 60;
                    break;

                case TimeUnitEnum.Hour:
                    delay = delay * 1000 * 60 * 60;
                    break;

                case TimeUnitEnum.Day:
                    delay = delay * 1000 * 60 * 60 * 24;
                    break;

                default:
                    Debug.Log("Add Task TimeUnit Type Error...");
                    break;
                }
            }

            float    destTime = Time.realtimeSinceStartup * 1000 + delay;
            TimeTask task     = new TimeTask(taskId, destTime, callBack, count, delay);
            bool     isRep    = false;

            for (int i = 0; i < taskTimeList.Count; i++)
            {
                if (taskTimeList[i].id == taskId)
                {
                    taskTimeList[i] = task;
                    isRep           = true;
                    break;
                }
            }

            if (!isRep)
            {
                for (int i = 0; i < tmpTimeList.Count; i++)
                {
                    if (tmpTimeList[i].id == taskId)
                    {
                        tmpTimeList[i] = task;
                        isRep          = true;
                        break;
                    }
                }
            }

            return(isRep);
        }
 public static double GetElapsed(TimeTask task)
 {
     System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
     timer.Start();
     task();
     timer.Stop();
     return(timer.Elapsed.TotalSeconds);
 }
Exemple #12
0
        public void EditTimeTask(TimeTask timeTask)
        {
            TimeTask editedTimeTask = _applicationDbContext.TimeTasks.First(tt => tt.TimeTaskId == timeTask.TimeTaskId);

            editedTimeTask.Action          = timeTask.Action;
            editedTimeTask.TimeStamp       = timeTask.TimeStamp;
            editedTimeTask.BackgroundJobId = timeTask.BackgroundJobId;
        }
    /// <summary> 检测计时任务 </summary>
    private void CheckTimeTask()
    {
        if (tmpTimeList.Count > 0)
        {
            lock (lockTime)
            {
                //获取缓存区的定时任务到计时列表
                for (int i = 0; i < tmpTimeList.Count; i++)
                {
                    taskTimeList.Add(tmpTimeList[i]);
                }
                tmpTimeList.Clear();
            }
        }
        currentTime = GetUTCMillisecond();//获取当前时间
        //遍历检测任务是否达到条件
        for (int i = 0; i < taskTimeList.Count; i++)
        {
            TimeTask timeTask = taskTimeList[i];
            if (currentTime.CompareTo(timeTask.endTime) < 0)
            {
                continue;
            }
            else
            {
                try
                {
                    if (taskHandle != null)
                    {
                        taskHandle(timeTask.action, timeTask.id);
                    }
                    else
                    {
                        timeTask.action?.Invoke();//Action不为空进行调用
                    }
                }
                catch (Exception e)
                {
                    Debug.Log(e.ToString());
                }

                if (timeTask.count == 1)
                {
                    taskTimeList.RemoveAt(i); //移除完成的任务
                    i--;                      //当前索引-1
                    tmpIdList.Add(timeTask.id);
                }
                else
                {
                    if (timeTask.count != 0)
                    {
                        timeTask.count -= 1;
                    }
                    timeTask.endTime += timeTask.delayTime;//设置下一次任务的最终时间
                }
            }
        }
    }
Exemple #14
0
    /// <summary>
    /// 替换任务
    /// </summary>
    /// <param name="tid"></param>
    /// <returns></returns>
    public bool ReplaceTimeTask(int tid, Action <int> callback, float delay, PETimeUnit PETimeUnit = PETimeUnit.Millisecond, int count = 1)
    {
        if (PETimeUnit != PETimeUnit.Millisecond)
        {
            switch (PETimeUnit)
            {
            case PETimeUnit.Second:
                delay = delay * 1000;
                break;

            case PETimeUnit.Minute:
                delay = delay * 1000 * 60;
                break;

            case PETimeUnit.Hour:
                delay = delay * 1000 * 60 * 60;
                break;

            case PETimeUnit.Day:
                delay = delay * 1000 * 60 * 60 * 24;
                break;

            default:
                LogInfo("Add Task PETimeUnit Type Error...");
                break;
            }
        }
        nowTime = GetUTCMilliseconds();
        TimeTask newTask = new TimeTask(tid, callback, nowTime + delay, delay, count);

        bool isRep = false; // 是否替换成功

        // 尝试在任务列表里寻找替换
        for (int i = 0; i < taskTimeLst.Count; i++)
        {
            if (taskTimeLst[i].tid == tid)
            {
                taskTimeLst[i] = newTask;
                isRep          = true;
                break;
            }
        }
        // 任务列表里没有,尝试去缓存找
        if (!isRep)
        {
            for (int i = 0; i < tmpTimeLst.Count; i++)
            {
                if (tmpTimeLst[i].tid == tid)
                {
                    tmpTimeLst[i] = newTask;
                    isRep         = true;
                    break;
                }
            }
        }

        return(isRep);
    }
Exemple #15
0
 protected override Schedule GetSchedule()
 {
     Schedule schedule = new DefaultSchedule(this);
     Task initialSchedule = new TimeTask(.25f , new IdleState(this));
     Task moveToBridge = new Task(new MoveThenDoState(this, new Vector3(5, .2f + LevelManager.levelYOffSetFromCenter, .3f), new MarkTaskDone(this)));
     schedule.Add(initialSchedule);
     schedule.Add (moveToBridge);
     return (schedule);
 }
Exemple #16
0
    private void TickTimeTask()
    {
        for (int i = 0; i < tmpTaskList.Count; i++)
        {
            taskList.Add(tmpTaskList[i]);
        }
        tmpTaskList.Clear();


        for (int i = 0; i < taskList.Count; i++)
        {
            TimeTask task = taskList[i];
            if (task.count == 0 || task.count < -1)
            {
                RemoveUniqueId(task.taskId);
                taskList.RemoveAt(i);
                i -= 1;
                continue;
            }
            if (Time.realtimeSinceStartup * 1000 >= task.destTime)
            {
                try
                {
                    if (task.taskCB != null)
                    {
                        task.taskCB();
                    }
                    if (task.count != -1)
                    {
                        task.count -= 1;
                        if (task.count == 0)
                        {
                            RemoveUniqueId(task.taskId);
                            taskList.RemoveAt(i);
                            i -= 1;
                        }
                        else
                        {
                            task.destTime = Time.realtimeSinceStartup * 1000 + task.intervalTime;
                        }
                    }
                    else
                    {
                        task.destTime = Time.realtimeSinceStartup * 1000 + task.intervalTime;
                    }
                }
                catch (Exception e)
                {
                    Debug.LogError(e.Message);
                }
            }
            else
            {
                continue;
            }
        }
    }
Exemple #17
0
    //添加定时任务
    public int AddTimeTask(Action callBack, double delay, ETimeUnit type = ETimeUnit.Millisecond, int count = 1)
    {
        delay *= (int)type;
        int      tID      = GetTID();
        TimeTask timeTask = new TimeTask(callBack, GetNowUTCTime() + delay, count, delay, tID);

        tempTimeTaskList.Add(timeTask);
        tIDList.Add(tID);
        return(tID);
    }
Exemple #18
0
 protected override Schedule GetSchedule()
 {
     Schedule schedule = new Schedule(this, Schedule.priorityEnum.DoNow);
     Task initialSchedule = new TimeTask(1f, new IdleState(this));
     schedule.Add(initialSchedule);
     //TimeTask exploringNearHome = new TimeTask(10, new IdleState(this));
     //Task moveToBridge = new Task(new MoveThenDoState(this, new Vector3(5, .2f, .3f), new MarkTaskDone(this)));
     //schedule.Add(exploringNearHome);
     //schedule.Add(moveToBridge);
     return (schedule);
 }
Exemple #19
0
        public IHttpActionResult GetTimeTask(int id)
        {
            TimeTask timeTask = db.TimeTasks.Find(id);

            if (timeTask == null)
            {
                return(NotFound());
            }

            return(Ok(timeTask));
        }
Exemple #20
0
    public void AddTimeTask(Action <int> cb, double interval, int count = 1, TimeUnit unit = TimeUnit.Millisecond)
    {
        if (unit != TimeUnit.Millisecond)
        {
            interval = GetMillisecond(interval, unit);
        }
        int      id   = GetUniqueId();
        TimeTask task = new TimeTask(id, cb, GetUTCMillisecondTime() + interval, interval, count);

        tmpTimeTaskList.Add(task);
    }
Exemple #21
0
        public IHttpActionResult PostSeverityTask(Task task, TimeTask timeTask)
        {
            if (!ModelState.IsValid || task.Id != timeTask.TaskId || db.TaskExists(task.Id))
            {
                return(BadRequest(ModelState));
            }

            db.Tasks.Add(task);
            db.TimeTasks.Add(timeTask);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = timeTask.TaskId }, timeTask));
        }
        public void ExecuteTimeTask(TimeTask timeTask)
        {
            DateTime startTime = DateTime.Now;

            if (startTime.Subtract(timeTask.TimeStamp).Duration().Minutes == 0)
            {
                Socket socket = _socketRepository.GetSocketById(timeTask.SocketId);
                _mqttAppClientSingleton.Publish(socket.DeviceId, timeTask.Action.ToString());
            }

            _timeTaskRepository.DeleteTimeTask(timeTask.TimeTaskId);
            _timeTaskRepository.Savechanges();
        }
Exemple #23
0
 /// <summary>
 /// 添加一个计时器任务
 /// </summary>
 /// <param name="task">将执行的任务</param>
 /// <param name="time">任务执行时间 ms</param>
 public int AddSchedule(TimeTask task, long time)
 {
     lock (task)
     {
         Index++;
         long nowTime = DateTime.Now.Ticks;
         //当前时间+延时间隔ms
         nowTime += time / 10000;
         TimeTaskModel model = new TimeTaskModel(Index, nowTime, task);
         //将任务添加到任务字典
         mTaskDict.TryAdd(Index, model);
         return(Index);
     }
 }
        public IActionResult Edit(TimeTaskEditViewModel model)
        {
            TimeTask timeTask = _mapper.Map <TimeTask>(model);

            BackgroundJob.Delete(timeTask.BackgroundJobId);
            string backgroundJobId = BackgroundJob.Schedule(() => ExecuteTimeTask(timeTask), timeTask.TimeStamp);

            timeTask.BackgroundJobId = backgroundJobId;

            _timeTaskRepository.EditTimeTask(timeTask);
            _timeTaskRepository.Savechanges();

            return(RedirectToAction("Index", "TimeTask", new { id = model.SocketId }));
        }
Exemple #25
0
    /// <summary>
    ///  添加一个定时任务
    /// </summary>
    /// <returns>任务的唯一id</returns>
    public int AddTimeTask(Action cb, float interval, int count = 1, TimeUnit tUnit = TimeUnit.Millisecond)
    {
        if (tUnit != TimeUnit.Millisecond)
        {
            interval = GetMilliSecond(interval, tUnit);
        }
        int      id   = GetUniqueId();
        TimeTask task = new TimeTask(id, cb, Time.realtimeSinceStartup * 1000 + interval, interval, count);

        tmpTaskList.Add(task);
        uniqueIdList.Add(id);

        return(id);
    }
Exemple #26
0
    //检测定时任务
    public void CheckTimeTask()
    {
        //将缓存区的定时器加入列表
        for (int i = 0; i < tempTimeTaskList.Count; i++)
        {
            timeTaskList.Add(tempTimeTaskList[i]);
        }
        tempTimeTaskList.Clear();

        for (int i = 0; i < timeTaskList.Count; i++)
        {
            TimeTask tt = timeTaskList[i];
            if (GetNowUTCTime() < tt.deskTime)
            {
                continue;
            }
            Action callBack = timeTaskList[i].callBack;
            try
            {
                if (callBack != null)
                {
                    callBack();
                }
            }
            catch (Exception e)
            {
                LogInfo(e.ToString());
            };

            if (tt.count == 1)
            {
                recycleIDList.Add(timeTaskList[i].tID);
                timeTaskList.RemoveAt(i);
                i--;
            }
            else
            {
                if (tt.count != 0)
                {
                    tt.count--;
                }
                tt.deskTime += tt.delay;
            }
        }
        if (recycleIDList.Count > 0)
        {
            RecycleTIDList();
        }
    }
Exemple #27
0
        protected override async Task <JToken> ExecuteController(JToken data)
        {
            var player = await new Player(PlayerId).LoadAsync();

            if (player == null)
            {
                return(JStatus.PlayerNotFound);
            }
            var ward = player.GetWardById(WardId);

            if (ward == null)
            {
                return(JStatus.WardNotFound);
            }
            var wardMeta = await ward.GetMetaAsync();

            if (wardMeta == null)
            {
                return(JStatus.MetaNotFound);
            }

            if (ward.UnlockTask == null)
            {
                return(JStatus.Fail);
            }

            if (ward.UnlockTask.Check() == 0)
            {
                UpdatedUnlockTask = ward.UnlockTask;
                return(JStatus.NotReady);
            }

            ward.IsUnlocked = true;

            if (wardMeta.UnlockReward != null)
            {
                await wardMeta.UnlockReward.AwardPlayerAsync(player);
            }

            ward.UnlockTask = null;

            if (!await player.ReplaceAsync())
            {
                OccFailFlag = true; return(JStatus.OccFail);
            }

            return(JStatus.Ok);
        }
Exemple #28
0
 /// <summary>
 /// 添加一个计时器任务
 /// </summary>
 /// <param name="task">待执行的任务</param>
 /// <param name="time">任务执行时间_精度毫秒</param>
 public int AddSchedule(TimeTask task, long time)
 {
     lock (TaskDic)
     {
         //任务Id
         Index++;
         //根据现行时间添加任务时间
         long nowtime = DateTime.Now.Ticks;
         nowtime += time * 10000;
         //创建一个新的任务
         TimeTaskModel model = new TimeTaskModel(Index, nowtime, task);
         //将任务添加至任务字典
         TaskDic.Add(Index, model);
         return(Index);
     }
 }
Exemple #29
0
        public async Task AddTask(TimeTask task)
        {
            using (var sqlConnection = new SqlConnection(connectionString))
            {
                await sqlConnection.OpenAsync();

                var dp = new DynamicParameters();
                dp.Add("@Title", task.Title);
                dp.Add("@Description", task.Description);
                dp.Add("@StartDate", task.StartDate);
                dp.Add("@EndDate", task.EndDate);
                await sqlConnection.ExecuteAsync(
                    "spAddTimeTask",
                    dp,
                    commandType : CommandType.StoredProcedure);
            }
        }
        protected override async Task <JToken> ExecuteController(JToken data)
        {
            var player = await new Player(PlayerId).LoadAsync();

            if (player == null)
            {
                return(JStatus.PlayerNotFound);
            }
            var ward = player.GetWardById(WardId);

            if (ward == null)
            {
                return(JStatus.WardNotFound);
            }
            var wardMeta = await ward.GetMetaAsync();

            if (wardMeta == null)
            {
                return(JStatus.MetaNotFound);
            }

            if (ward.IsUnlocked)
            {
                return(JStatus.AlreadyUnlocked);
            }
            if (ward.UnlockTask != null)
            {
                return(JStatus.NotReady);
            }
            if (!wardMeta.UnlockRequirement.IsFulfilledByPlayer(player))
            {
                return(JStatus.RequirementNotFulfilled);
            }

            player.SpendResources(wardMeta.UnlockRequirement.Resources);
            ward.UnlockTask = new TimeTask(wardMeta.UnlockTime);

            if (!await player.ReplaceAsync())
            {
                OccFailFlag = true; return(JStatus.OccFail);
            }

            StartedUnlockTask = ward.UnlockTask;

            return(JStatus.Ok);
        }
Exemple #31
0
 /// <summary>
 /// 在指定时间执行Action
 /// </summary>
 public static void ScheduleTimeTask(DateTime targetTime, Action <object> action, object state)
 {
     if (DateTime.Now >= targetTime)
     {
         action(state);
     }
     else
     {
         var task = new TimeTask()
         {
             targetTime = targetTime,
             action     = action,
             state      = state,
         };
         InsertTimeTaskOrdered(ref task);
     }
 }
Exemple #32
0
        public async Task Put(int id, string Title, string Description, string StartDate, string EndDate)
        {
            TimeTask tb = new TimeTask();

            tb.Id          = id;
            tb.Title       = Title;
            tb.Description = Description;
            if (StartDate.Equals("null") && EndDate.Equals("null"))
            {
                await this.timeTaskProvider.UpdateTask(tb);
            }
            else
            {
                tb.StartDate = Convert.ToDateTime(StartDate);
                tb.EndDate   = Convert.ToDateTime(EndDate);
                await this.timeTaskProvider.UpdateTask(tb);
            }
        }
Exemple #33
0
 /// <summary>
 /// 删除 临时 时间定时任务 列表
 /// </summary>
 private void DelTimeTask()
 {
     if (tmpDelTimeLst.Count > 0)
     {
         lock (lockTime) {
             for (int i = 0; i < tmpDelTimeLst.Count; i++)
             {
                 bool isDel  = false;
                 int  delTid = tmpDelTimeLst[i];
                 // 任务存在任务列表里
                 for (int j = 0; j < taskTimeLst.Count; j++)
                 {
                     TimeTask task = taskTimeLst[j];
                     if (task.tid == delTid)
                     {
                         isDel = true;
                         taskTimeLst.RemoveAt(j);
                         recTidLst.Add(delTid);
                         //LogInfo("Del taskTimeLst ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
                         break;
                     }
                 }
                 if (isDel)
                 {
                     continue;
                 }
                 // 任务不存在任务列表里,去临时缓存里处理
                 for (int j = 0; j < tmpTimeLst.Count; j++)
                 {
                     TimeTask task = tmpTimeLst[j];
                     if (task.tid == delTid)
                     {
                         tmpTimeLst.RemoveAt(j);
                         recTidLst.Add(delTid);
                         //LogInfo("Del tmpTimeLst ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
                         break;
                     }
                 }
             }
             tmpDelTimeLst.Clear();
         }
     }
 }
        protected override async Task <JToken> ExecuteController(JToken data)
        {
            var player = await new Player(PlayerId).LoadAsync();

            if (player == null)
            {
                return(JStatus.PlayerNotFound);
            }
            var building = player.GetBuildingById(BuildingId);

            if (building == null)
            {
                return(JStatus.BuildingNotFound);
            }
            var buildingMeta = await building.GetMetaAsync();

            if (buildingMeta == null)
            {
                return(JStatus.BuildingNotFound);
            }

            if (building.ConstructionTask == null)
            {
                return(JStatus.Fail);
            }

            if (building.ConstructionTask.Check() == 0)
            {
                UpdatedConstructionTask = building.ConstructionTask;
                return(JStatus.NotReady);
            }

            building.IsConstructed    = true;
            building.ConstructionTask = null;

            if (!await player.ReplaceAsync())
            {
                OccFailFlag = true; return(JStatus.OccFail);
            }

            return(JStatus.Ok);
        }
Exemple #35
0
    protected override void SetUpSchedules()
    {
        BeginDayChat = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterYoung), new YoungCarpenterSonToCarpenterConvo());
        BeginDayChat.SetCanInteract(false);
        BeginDayWithDad = new Schedule(this, Schedule.priorityEnum.DoNow);
        TimeTask BeginDayTimeTask = new TimeTask(10, new WaitTillPlayerCloseState(this, ref player));
          		BeginDayTimeTask.AddFlagToSet(FlagStrings.carpenterSonYoungConvoWithDadFinished);
        BeginDayWithDad.Add(BeginDayTimeTask);
          		this.AddSchedule(BeginDayWithDad);
        this.AddSchedule(BeginDayChat);

        TalkWithCastleman = new Schedule (this, Schedule.priorityEnum.High);
        TalkWithCastleman.Add(new TimeTask(300, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlag = (new TimeTask(2f, new IdleState(this)));
        setFlag.AddFlagToSet(FlagStrings.InitialConversationWithCSONFriend);
        TalkWithCastleman.Add(setFlag);
        TalkWithCastleman.AddFlagGroup("CSONMEETCASTLEMAN");

        TalkWithCastlemanNotFriend = new Schedule (this, Schedule.priorityEnum.High);
        TalkWithCastlemanNotFriend.Add(new TimeTask(300, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlagNOT = (new TimeTask(2f, new IdleState(this)));
        setFlagNOT.AddFlagToSet(FlagStrings.InitialConversationWithCSONNOTFriend);
        TalkWithCastlemanNotFriend.Add(setFlagNOT);
        TalkWithCastleman.AddFlagGroup("CSONMEETCASTLEMAN");

        Woodworking = new Schedule( this, Schedule.priorityEnum.Medium);
        //Woodworking.Add (new TimeTask(300, new WaitState(this)));
        Task whittleTask = new TimeTask(30, new AbstractAnimationState(this, "Whittle"));
        whittleTask.AddFlagToSet(FlagStrings.carpenterSonYoungCompletedWhittling);

        whittleSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        whittleSchedule.SetCanInteract(false);
        whittleSchedule.Add(whittleTask);

        Task whittleDoneTask = new Task(new IdleState(this));
        whittleDoneSchedule = new Schedule(this, Schedule.priorityEnum.Medium);
        whittleDoneSchedule.SetCanInteract(true);
        whittleDoneSchedule.Add(whittleDoneTask);
    }
Exemple #36
0
    protected override void SetUpSchedules()
    {
        Vector3 startingPosition = transform.position;
        startingPosition.y += LevelManager.levelYOffSetFromCenter;

        openningWaitingSchedule = new Schedule(this, Schedule.priorityEnum.Low);
        openningWaitingSchedule.Add(new TimeTask(5, new WaitTillPlayerCloseState(this, ref player)));
        Task nullFlag =  new TimeTask(0f, new IdleState(this));
        nullFlag.AddFlagToSet(FlagStrings.CarpenterAndCarpenterSonIndependantConversation);
        openningWaitingSchedule.Add(nullFlag);
        openningWaitingSchedule.AddFlagGroup("DefaultPath");

        angryAtSonBeingIndependent = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonDefaultScriptedConvo(), Schedule.priorityEnum.Medium); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        angryAtSonBeingIndependent.SetCanNotInteractWithPlayer();
        //this.AddSchedule(openningWaitingSchedule);

        afterAngryAtSonIndependent = new Schedule(this, Schedule.priorityEnum.Low);
        Task SetMoveToWindmillFlag = new TimeTask(0f, new IdleState(this));
        SetMoveToWindmillFlag.AddFlagToSet(FlagStrings.carpenterSonTalkWithFatherMorning);
        afterAngryAtSonIndependent.Add(SetMoveToWindmillFlag);

        #region Fishing
        angryAtSonFishing =  new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonFishingScriptedConvo(), Schedule.priorityEnum.DoNow); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        angryAtSonFishing.SetCanNotInteractWithPlayer();

        AfterAngryAtSonFishing = new Schedule(this, Schedule.priorityEnum.High);
        Task TriggerAfterFishingConvo =  new TimeTask(0f, new IdleState(this));
        TriggerAfterFishingConvo.AddFlagToSet(FlagStrings.CarpenterSonMovesToTheBeach);
        AfterAngryAtSonFishing.Add(TriggerAfterFishingConvo);

        MoveToCliffSide = new Schedule(this, Schedule.priorityEnum.High);
        MoveToCliffSide.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.BeachCliffMiddle)));

        AcceptFishing = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToCarpenterSonAcceptingFishing(), Schedule.priorityEnum.DoNow); // CHANGE THIS CONVERSATION TO THE ONE WE WANT TO USE!
        AcceptFishing.SetCanNotInteractWithPlayer();

        AfterAcceptFishing = new Schedule(this, Schedule.priorityEnum.High);
        Task flagTask = new TimeTask(0f, new IdleState(this));
        flagTask.AddFlagToSet(FlagStrings.AfterProudOfSonConversation);
        AfterAcceptFishing.Add(flagTask);
        AfterAcceptFishing.Add(new Task (new MoveThenMarkDoneState(this, MapLocations.BaseOfPierMiddle)));
        AfterAcceptFishing.Add(new TimeTask(10000f, new AbstractAnimationState(this, "Fishing")));
        #endregion
        #region Carpentry
        happyAtSonForBeingCarpenter = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.DoNow);
        happyAtSonForBeingCarpenter.SetCanNotInteractWithPlayer();

        WorkOnWindmill = new Schedule(this, Schedule.priorityEnum.High);
        WorkOnWindmill.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.WindmillMiddle)));
        WorkOnWindmill.Add(new TimeTask(250f, new IdleState(this)));
        WorkOnWindmill.Add(new Task(new MoveThenMarkDoneState(this, startingPosition)));
        Task setCarpentryFlag = new TimeTask(0f, new IdleState(this));
        setCarpentryFlag.AddFlagToSet(FlagStrings.CarpenterReturnedHome);
        WorkOnWindmill.Add(setCarpentryFlag);

        ConversationAboutRockingChair = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new GiveRockingChairScript(), Schedule.priorityEnum.DoNow);
        ConversationAboutRockingChair.SetCanNotInteractWithPlayer();

        ConversationAboutNotDoingAnything = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle),
            new GiveNothingScript(), Schedule.priorityEnum.DoNow);
        ConversationAboutNotDoingAnything.SetCanNotInteractWithPlayer();

        AfterConversation = new Schedule(this, Schedule.priorityEnum.High);
        AfterConversation.Add(new TimeTask(10000f, new AbstractAnimationState(this, "Whittle")));
        #endregion
        //CONVERSATION SCHEDULE BUG!!!! PLEASE FIX
        //CONVERSATION SCHEDULE BUG!!!! PLEASE FIX
    }
Exemple #37
0
    //NPCConvoSchedule dateWithLG;
    protected override void SetUpSchedules()
    {
        SetupReactions();
        moveBack = new Schedule(this, Schedule.priorityEnum.High);
        moveBack.Add(new Task(new MoveThenDoState(this, startingPosition, new MarkTaskDone(this))));

        moveToBeach = new Schedule(this, Schedule.priorityEnum.DoNow);
        moveToBeach.Add(new Task(new MoveThenDoState(this, new Vector3(MapLocations.MiddleOfBeachMiddle.x+1.5f, MapLocations.MiddleOfBeachMiddle.y, MapLocations.MiddleOfBeachMiddle.z), new MarkTaskDone(this))));
        Task reachedBeach = new TimeTask(.1f,new IdleState(this));
        reachedBeach.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateOne);
        moveToBeach.Add(reachedBeach);
        moveToBeach.Add(new TimeTask(5.3f, new IdleState(this)));

        Task reachedBeachTwo = new TimeTask(.1f,new IdleState(this));
        reachedBeachTwo.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateTwo);
        moveToBeach.Add(reachedBeachTwo);
        moveToBeach.Add(new TimeTask(7.3f, new IdleState(this)));

        Task reachedBeachThree = new TimeTask(.1f,new IdleState(this));
        reachedBeachThree.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateThree);
        moveToBeach.Add(reachedBeachThree);
        moveToBeach.Add(new TimeTask(3.3f, new IdleState(this)));

        Task reachedBeachFour = new TimeTask(.1f,new IdleState(this));
        reachedBeachFour.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateFour);
        moveToBeach.Add(reachedBeachFour);
        moveToBeach.Add(new TimeTask(6.3f, new IdleState(this)));

        Task reachedBeachFive = new TimeTask(.1f,new IdleState(this));
        reachedBeachFive.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateFive);
        moveToBeach.Add(reachedBeachFive);
        moveToBeach.Add(new TimeTask(2.3f, new IdleState(this)));

        Task reachedBeachSix = new TimeTask(.1f,new IdleState(this));
        reachedBeachSix.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleDateSix);
        moveToBeach.Add(reachedBeachSix);
        moveToBeach.Add(new TimeTask(6f, new IdleState(this)));

        Task reachedBeachEnd = new TimeTask(.1f,new IdleState(this));
        reachedBeachEnd.AddFlagToSet(FlagStrings.EndOfDate);
        moveToBeach.Add(reachedBeachEnd);
        moveToBeach.Add(new TimeTask(3f, new IdleState(this)));
        moveToBeach.SetCanInteract(false);

        /*dateWithLG =  new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlMiddle),
            new MiddleCastleManToLighthouseGirl(), Schedule.priorityEnum.DoConvo);
        dateWithLG.SetCanNotInteractWithPlayer();*/
    }
Exemple #38
0
    private void SetupPrimaryCarpentrySchedules()
    {
        afterHappyForSonBeingACarpenter = new Schedule(this, Schedule.priorityEnum.Medium);
        Task stormOffToWindmill = new Task(new MoveState(this, MapLocations.WindmillMiddle));
        TimeTask workOnWindmill = new TimeTask(1000f, new AbstractAnimationState(this, "Hammer", true, true));
        afterHappyForSonBeingACarpenter.Add(stormOffToWindmill);
        afterHappyForSonBeingACarpenter.Add(workOnWindmill);

        talkToSonAfterWhittle = new NPCConvoSchedule(this,
            NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.Low);
        talkToSonAfterWhittle.SetCanNotInteractWithPlayer();

        talkToSonWithoutWhittle = new NPCConvoSchedule(this,
            NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleCarpenterToSonCarpentryScriptedConvo(), Schedule.priorityEnum.Low);
        talkToSonWithoutWhittle.SetCanNotInteractWithPlayer();
    }
Exemple #39
0
    protected override void SetUpSchedules()
    {
        gaveAppleSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        gaveAppleSchedule.Add(new TimeTask(10f, new IdleState(this)));
        gaveAppleSchedule.Add(new Task(new WaitTillPlayerCloseState(this, ref player)));
        Task SetMusicianConvoFlag = new TimeTask(45f, new IdleState(this));
        SetMusicianConvoFlag.AddFlagToSet(FlagStrings.MoveToMusician);
        gaveAppleSchedule.Add(SetMusicianConvoFlag);
        //gaveAppleSchedule.Add(new Task(new MoveThenDoState(this, new Vector3(4f, -1f, -.5f), new MarkTaskDone(this))));

        giveSeedsSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        giveSeedsSchedule.Add (new TimeTask(1, new IdleState(this)));
        giveSeedsSchedule.Add(new Task(new MoveThenDoState(this, new Vector3(0f, -1f, -.5f), new MarkTaskDone(this))));

        moveMotherHappyState = new Schedule(this, Schedule.priorityEnum.DoNow);
        moveMotherHappyState.Add (new TimeTask(1.5f, new IdleState(this)));
        //BUG, MOM ALWAYS FLOATS TO PLATFORM BEFORE REACHING DESTINATION
        moveMotherHappyState.Add(new Task(new MoveThenDoState(this, new Vector3(-20f, -1.5f, -.5f), new MarkTaskDone(this))));

        postRaceSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        postRaceSchedule.Add(new Task(new IdleState(this)));

        moveHomeSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        moveHomeSchedule.Add(new TimeTask(.5f, new IdleState(this)));
        //moveHomeSchedule.Add(new Task(new MoveThenDoState(this, new Vector3(0, -1f,.3f), new MarkTaskDone(this))));
        moveHomeSchedule.Add(new Task(new MoveThenDoState(this, new Vector3(-.9f, -1f,.3f), new MarkTaskDone(this))));

        /*
        enterMadSchedule = new Schedule (this, Schedule.priorityEnum.DoNow);
        enterMadSchedule.Add(new Task(new MoveThenDoState(this, new Vector3(-2, -1f,.3f), new MarkTaskDone(this))));
        enterMadSchedule.Add (new TimeTask(10f, new IdleState(this)));
        Task setNotAngryFlag = (new Task(new MoveThenDoState(this, new Vector3 (0, .2f, .3f), new MarkTaskDone(this))));
        setNotAngryFlag.AddFlagToSet(FlagStrings.ExitMadState);
        enterMadSchedule.Add(setNotAngryFlag);
        enterMadSchedule.Add (new TimeTask(.5f, new IdleState(this)));
        */

        moveToMusicianSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        moveToMusicianSchedule.Add(new TimeTask(2f, new IdleState(this)));
        //moveToMusicianSchedule.Add(new Task(new ShowOneOffChatAction(this, "Follow me. They live up here.")));
        Task setFlag = (new Task(new MoveThenDoState(this, new Vector3 (-2.9f, 7.6f, 1f), new MarkTaskDone(this))));
        setFlag.AddFlagToSet(FlagStrings.FinishMusicianConvo);
        moveToMusicianSchedule.Add(setFlag);
        moveToMusicianSchedule.Add(new TimeTask(45f, new IdleState(this)));
        moveToMusicianSchedule.Add(new Task(new MoveThenMarkDoneState(this, this.gameObject.transform.position)));
        //moveToMusicianSchedule.Add(new TimeTask(.5f, new IdleState(this)));

        // ADD EXIT MAD SCHEDULE
    }
Exemple #40
0
    protected override void SetUpSchedules()
    {
        greetSiblingOldSchedule = (new CarpenterSonOldGreetSibllingSchedule(this));
        goToBeachSchedule = (new CarpenterSonOldToBeachScript(this));
        talkWhileFishingSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        talkWhileFishingSchedule.Add(new TimeTask(240f ,new WaitTillPlayerCloseState(this, ref this.player, 3f))); //
        Task a = new TimeTask(.05f, new IdleState(this));
        a.AddFlagToSet(FlagStrings.elderCarpenterSonChat);
        talkWhileFishingSchedule.Add(a);
        talkWhileFishingSchedule.Add(new Task (new IdleState(this)));

        fishingSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        fishingSchedule.Add(new TimeTask(240f ,new WaitTillPlayerCloseState(this, ref this.player, 3f))); //
        //fishingSchedule.Add(new Task(new AbstractAnimationState(this, currentWalkPose)));
        fishingSchedule.Add(new TimeTask(20f, new IdleState(this)));  //-3.5
        Task b = new Task(new MoveThenDoState(this, new Vector3(74f, -3.5f + (LevelManager.levelYOffSetFromCenter*2), -.5f),new MarkTaskDone(this)));
        b.AddFlagToSet(FlagStrings.elderCarpenterFishingTime);
        fishingSchedule.Add(b);
        fishingSchedule.Add(new Task(new AbstractAnimationState(this, currentFishingPose)));
        fishingSchedule.Add(new Task (new IdleState(this)));

        //talkWhileFishingSchedule
    }
Exemple #41
0
    protected override void SetUpSchedules()
    {
        InitialSchedule = new ScheduleLoop(this, Schedule.priorityEnum.Medium);
        Task waitForPlayer = new Task(new WaitTillPlayerCloseState(this, ref player));
        InitialSchedule.Add(waitForPlayer);
        Task SayHi = new Task(new AbstractAnimationState(this, "Hi"), this, 0.1f, "Psst! Come over here!");
        InitialSchedule.Add(SayHi);
        InitialSchedule.Add(new Task(new WaitTillPlayerCloseState(this, ref player)));
        Task playWithSword = new Task(new AbstractAnimationState(this, "Play With Sword"));
        InitialSchedule.Add(playWithSword);

        AttemptToTellOnLighthouse = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerFatherYoung),
            new LightHouseToFarmerFather(),Schedule.priorityEnum.DoConvo);
        AttemptToTellOnLighthouse.SetCanNotInteractWithPlayer();
        tellOnLighthouseConversationSchedule = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new YoungFarmerMotherToLighthouseGirlToldOn(),Schedule.priorityEnum.DoConvo);

        Task SetFlagToBeach = (new Task(new MoveThenDoState(this, this.gameObject.transform.position, new MarkTaskDone(this))));
        SetFlagToBeach.AddFlagToSet(FlagStrings.GoDownToBeach);

        TalkWithCastleman = new Schedule (this, Schedule.priorityEnum.DoNow);
        TalkWithCastleman.Add(new TimeTask(3000, new WaitTillPlayerCloseState(this, ref player)));
        Task setFlag = (new TimeTask(2f, new IdleState(this)));
        setFlag.AddFlagToSet(FlagStrings.StartTalkingToLighthouse);
        TalkWithCastleman.Add(setFlag);
        TalkWithCastleman.AddFlagGroup("TalkWithCastleman");

        GaveApple = new Schedule(this, Schedule.priorityEnum.High);
        GaveApple.Add(new TimeTask(10f, new AbstractAnimationState(this, "Play With Sword")));
        GaveApple.Add(SetFlagToBeach);
        //GaveApple.Add(new TimeTask(500f, new IdleState(this)));

        GaveNothingSchedule = new Schedule(this, Schedule.priorityEnum.High);
        GaveNothingSchedule.Add(new TimeTask(750f, new IdleState(this)));
        GaveNothingSchedule.Add(SetFlagToBeach);

        WalkToBeach = new Schedule(this, Schedule.priorityEnum.High);
        WalkToBeach.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.MiddleOfBeachYoung)));
        Task setAtBeachFlag = new TimeTask(0f, new IdleState(this));
        setAtBeachFlag.AddFlagToSet(FlagStrings.LighthouseAtBeach);
        WalkToBeach.Add(setAtBeachFlag);

        LighthouseGoingToBeach = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerMotherYoung),
            new LighthouseToFarmerMother(),Schedule.priorityEnum.DoConvo, true);
        LighthouseGoingToBeach.SetCanNotInteractWithPlayer();
    }
Exemple #42
0
    protected override void SetUpSchedules()
    {
        CastleManFollowSchedule = new Schedule(this, Schedule.priorityEnum.Medium);
        CastleManFollowSchedule.Add(new TimeTask(0f, new IdleState(this)));
        CastleManFollowSchedule.Add(new Task(new FollowObjectState(this, player.gameObject)));

        CastleManFollowScheduleVTwo = new Schedule(this, Schedule.priorityEnum.High);
        CastleManFollowScheduleVTwo.Add(new TimeTask(0f, new IdleState(this)));
        CastleManFollowScheduleVTwo.Add(new TimeTask(0f, new FollowObjectState(this, player.gameObject)));
        Task TimerRanOut = new TimeTask(0f, new IdleState(this));
        TimerRanOut.AddFlagToSet(FlagStrings.TimerForGoingToBeach);
        CastleManFollowScheduleVTwo.Add(TimerRanOut);

        CastlemanWalkToBeachSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        CastlemanWalkToBeachSchedule.Add(new TimeTask(1f, new IdleState(this)));
        CastlemanWalkToBeachSchedule.Add(new Task(new MoveThenMarkDoneState(this, new Vector3(52f, -6f, 0.95f))));
        Task setAtBeachFlag = new TimeTask(0f, new IdleState(this));
        setAtBeachFlag.AddFlagToSet(FlagStrings.CastleManAtBeach);
        CastlemanWalkToBeachSchedule.Add(setAtBeachFlag);
        CastlemanWalkToBeachSchedule.Add(new TimeTask(10000f, new IdleState(this)));

        #region Friends
        CastleManTalksFirstFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsFirstConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsFirstConvo.AddFlagToSet(FlagStrings.FinishedInitialConversationWithCSONFriend);
        CastleManTalksFirstFriends.Add(setFlagFriendsFirstConvo);

        SetFinishedTalkingFlagForSecondConvoFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsSecondConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsSecondConvo.AddFlagToSet(FlagStrings.FinishedSecondConversationWithCSONFriend);
        SetFinishedTalkingFlagForSecondConvoFriends.Add(setFlagFriendsSecondConvo);

        SetFinishedTalkingFlagForThirdConvoFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagFriendsThirdConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagFriendsThirdConvo.AddFlagToSet(FlagStrings.FinishedThirdConvoWithCSONFriend);
        SetFinishedTalkingFlagForThirdConvoFriends.Add(setFlagFriendsThirdConvo);
        # endregion
        #region NotFriends
        CastleManTalksFirstNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsFirstConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsFirstConvo.AddFlagToSet(FlagStrings.FinishedInitialConversationWithCSONNOTFriend);
        CastleManTalksFirstNOTFriends.Add(setFlagNOTFriendsFirstConvo);

        SetFinishedTalkingFlagForSecondConvoNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsSecondConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsSecondConvo.AddFlagToSet(FlagStrings.FinishedSecondConversationWithCSONNOTFriend);
        SetFinishedTalkingFlagForSecondConvoNOTFriends.Add(setFlagNOTFriendsSecondConvo);

        SetFinishedTalkingFlagForThirdConvoNOTFriends = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task setFlagNOTFriendsThirdConvo = (new TimeTask(2f, new IdleState(this)));
        setFlagNOTFriendsThirdConvo.AddFlagToSet(FlagStrings.FinishedThirdConvoWithCSONNOTFriend);
        SetFinishedTalkingFlagForThirdConvoNOTFriends.Add(setFlagNOTFriendsThirdConvo);
        #endregion
        #region Conversations
        CastleManMeetsLighthouse = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastleManToLighthouseFirstMeeting(),Schedule.priorityEnum.DoConvo);
        CastleManMeetsLighthouse.SetCanNotInteractWithPlayer();

        CastleManTalksToCSON = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterFirstConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSON.SetCanNotInteractWithPlayer();
        CastleManTalksToCSONTwice = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterSecondConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSONTwice.SetCanNotInteractWithPlayer();
        CastleManTalksToCSONThrice = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonYoung),
            new CastleManToCarpenterThirdConvo(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToCSONThrice.SetCanNotInteractWithPlayer();

        CastleManTalksToLighthouseOnBeachFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastleManToLightHouseFriends(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToLighthouseOnBeachFriends.SetCanNotInteractWithPlayer();
        CastleManTalksToLighthouseOnBeachNOTFriends = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.LighthouseGirlYoung),
            new CastlemanToLighthouseNotFriends(),Schedule.priorityEnum.DoConvo);
        CastleManTalksToLighthouseOnBeachNOTFriends.SetCanNotInteractWithPlayer();
        #endregion
    }
Exemple #43
0
    protected override void SetUpSchedules()
    {
        ScheduleLoop newDefaultSched = new ScheduleLoop(this, Schedule.priorityEnum.Default);
        newDefaultSched.Add(new Task(new FishState(this)));
        this.AddSchedule(newDefaultSched);

        treasureHuntSched = new SeaCaptainTreasureHuntSchedule(this);

        talkToFortuneTellerFirstSched = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FortuneTellerMiddle), new MiddleSeaCaptainFortuneTellerFirstConvo(), Schedule.priorityEnum.Medium, true);
        talkToFortuneTellerSecondSched = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FortuneTellerMiddle), new MiddleSeaCaptainFortuneTellerSecondConvo(), Schedule.priorityEnum.Medium, true);
        TalktoCarpenterSon = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.CarpenterSonMiddle), new MiddleSeaCaptainToCarpenterSon(), Schedule.priorityEnum.DoConvo, true);
        TalktoCarpenterSon.SetCanNotInteractWithPlayer();

        returnToDockSchedOne = new Schedule(this);
        returnToDockSchedOne.Add(new Task(new MoveThenMarkDoneState(this, startingPos)));

        returnToDockSchedTwo = new Schedule(this);
        returnToDockSchedTwo.Add(new Task(new MoveThenMarkDoneState(this, startingPos)));

        AfterTalkToCarpenterSon = new Schedule(this, Schedule.priorityEnum.High);
        Task FinishedTalking  = new TimeTask(0.05f, new IdleState(this));
        FinishedTalking.AddFlagToSet(FlagStrings.AfterConversationAboutBuildingShip);
        AfterTalkToCarpenterSon.Add (FinishedTalking);
    }
Exemple #44
0
    //Schedule IdleSchedule;
    protected override void SetUpSchedules()
    {
        startingPosition = transform.position;
        startingPosition.y += LevelManager.levelYOffSetFromCenter;
        #region PathOne
        //Schedule for the Default path
        moveToWindmill = new Schedule(this, Schedule.priorityEnum.Low);
        moveToWindmill.Add (new Task(new MoveThenMarkDoneState(this, MapLocations.WindmillMiddle, "Somber Walk", 2f)));
        moveToWindmill.Add (new TimeTask(100f, new AbstractAnimationState(this, "Hammer", false, false)));
        moveToWindmill.Add (new Task(new MoveThenMarkDoneState(this, startingPosition)));
        #endregion

        #region FishingPath
        TeleportToStartConvo =  new Schedule (this, Schedule.priorityEnum.DoNow);
        TeleportToStartConvo.Add(new TimeTask(300f, new WaitTillPlayerCloseState(this, ref player)));
        //TeleportToStartConvo.Add(new Task (new MoveThenMarkDoneState(this, this.gameObject.transform.position)));
        Task StartFishingStuff = new TimeTask(0f, new IdleState(this));
        StartFishingStuff.AddFlagToSet(FlagStrings.FishingConversation);
        TeleportToStartConvo.Add(StartFishingStuff);

        MoveToPierToFish = new Schedule(this, Schedule.priorityEnum.DoNow);
        MoveToPierToFish.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.BaseOfPierMiddle)));
        MoveToPierToFish.Add(new TimeTask(100f, new AbstractAnimationState(this, "Fishing", true, true)));
        Task SetOffConversationWithSeaCaptain = new TimeTask(0f, new IdleState(this));
        SetOffConversationWithSeaCaptain.AddFlagToSet(FlagStrings.StartConversationWithSeaCaptainAboutBuildingShip);
        MoveToPierToFish.Add(SetOffConversationWithSeaCaptain);

        AfterSeaCaptainTalk = new Schedule (this, Schedule.priorityEnum.DoNow);
        AfterSeaCaptainTalk.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.MiddleOfBeachMiddle)));
        Task SetOffAfterSeaCaptain = new TimeTask(100f, new AbstractAnimationState(this, "Whittle"));
        SetOffAfterSeaCaptain.AddFlagToSet(FlagStrings.StartProudOfSonConversation);
        Task CarpenterSonTransitionToFisherman = new Task(new IdleState(this));
        CarpenterSonTransitionToFisherman.AddFlagToSet(FlagStrings.carpenterSonBecomesFisherman);
        AfterSeaCaptainTalk.Add(SetOffAfterSeaCaptain);

        EndState = new Schedule(this, Schedule.priorityEnum.High);
        EndState.Add(new TimeTask(10000f, new IdleState(this)));
        #endregion

        #region CarpentryPath
        StartCarpentry =  new Schedule (this, Schedule.priorityEnum.High);
        StartCarpentry.Add(new TimeTask(300f, new WaitTillPlayerCloseState(this, ref player)));
        //TeleportToStartConvo.Add(new Task (new MoveThenMarkDoneState(this, this.gameObject.transform.position)));
        Task StartCarpentryStuff = new TimeTask(0f, new IdleState(this));
        StartCarpentryStuff.AddFlagToSet(FlagStrings.IntroConvoCarpentry);
        StartCarpentry.Add(StartCarpentryStuff);

        DoNothingSchedule =  new Schedule(this, Schedule.priorityEnum.High);
        DoNothingSchedule.Add(new TimeTask(10000f, new IdleState(this)));

        WhittleStuff = new Schedule(this, Schedule.priorityEnum.High);
        TimeTask WhittlingAHarp = new TimeTask(30f, new AbstractAnimationState(this, "Whittle"));
        WhittlingAHarp.AddFlagToSet(FlagStrings.BuiltRockingChairTalk);
        WhittleStuff.Add(WhittlingAHarp);
        #endregion
        //Schedule for something
        stormOffSchedule = new Schedule(this,Schedule.priorityEnum.DoNow);
        stormOffSchedule.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.BaseOfPierMiddle)));
        stormOffSchedule.Add(new TimeTask(2.0f, new IdleState(this))); //Will replace with working on windmill
        stormOffSchedule.Add(new Task(new MoveThenMarkDoneState(this, MapLocations.BaseOfPierMiddle)));

        AfterConversationCarpentery = new Schedule(this, Schedule.priorityEnum.High);
        AfterConversationCarpentery.Add(new TimeTask(10000f, new IdleState(this)));
        #region NPCConvoSchedules
        #endregion

        #region carpenterDate
        moveBack = new Schedule(this, Schedule.priorityEnum.High);
        moveBack.Add(new Task(new MoveThenDoState(this, startingPosition, new MarkTaskDone(this))));

        moveToBeach = new Schedule(this, Schedule.priorityEnum.DoNow);
        moveToBeach.Add(new Task(new MoveThenDoState(this, new Vector3(MapLocations.MiddleOfBeachMiddle.x+1.5f, MapLocations.MiddleOfBeachMiddle.y, MapLocations.MiddleOfBeachMiddle.z), new MarkTaskDone(this))));
        Task reachedBeach = new TimeTask(.1f,new IdleState(this));
        reachedBeach.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateOne);
        moveToBeach.Add(reachedBeach);
        moveToBeach.Add(new TimeTask(5.3f, new IdleState(this)));

        Task reachedBeachTwo = new TimeTask(.1f,new IdleState(this));
        reachedBeachTwo.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateTwo);
        moveToBeach.Add(reachedBeachTwo);
        moveToBeach.Add(new TimeTask(7.3f, new IdleState(this)));

        Task reachedBeachThree = new TimeTask(.1f,new IdleState(this));
        reachedBeachThree.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateThree);
        moveToBeach.Add(reachedBeachThree);
        moveToBeach.Add(new TimeTask(3.3f, new IdleState(this)));

        Task reachedBeachFour = new TimeTask(.1f,new IdleState(this));
        reachedBeachFour.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateFour);
        moveToBeach.Add(reachedBeachFour);
        moveToBeach.Add(new TimeTask(6.3f, new IdleState(this)));

        Task reachedBeachFive = new TimeTask(.1f,new IdleState(this));
        reachedBeachFive.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateFive);
        moveToBeach.Add(reachedBeachFive);
        moveToBeach.Add(new TimeTask(2.3f, new IdleState(this)));

        Task reachedBeachSix = new TimeTask(.1f,new IdleState(this));
        reachedBeachSix.AddFlagToSet(FarmerFamilyFlagStrings.GirlCarpenterDateSix);
        moveToBeach.Add(reachedBeachSix);
        moveToBeach.Add(new TimeTask(6f, new IdleState(this)));

        Task reachedBeachEnd = new TimeTask(.1f,new IdleState(this));
        reachedBeachEnd.AddFlagToSet(FlagStrings.EndOfDate);
        moveToBeach.Add(reachedBeachEnd);
        moveToBeach.Add(new TimeTask(3f, new IdleState(this)));
        moveToBeach.SetCanInteract(false);
        #endregion
    }
Exemple #45
0
    protected override void SetUpSchedules()
    {
        TimeTask WaitTask = new TimeTask(1f, new IdleState(this));
        Task MoveTask = new Task(new MoveState(this, new Vector3(34.1062f, -1.041937f, 0.3f)));
        TimeTask SitTask = new TimeTask(0f, new AbstractAnimationState(this, "Sit"));
        Task WhittleTask = new Task(new AbstractAnimationState(this, "Idle Sit"));

        WalkSitWhittle = new Schedule(this);

        WalkSitWhittle.Add(WaitTask);
        WalkSitWhittle.Add(MoveTask);
        WalkSitWhittle.Add(SitTask);
        WalkSitWhittle.Add(WhittleTask);
    }
Exemple #46
0
    protected override void SetUpSchedules()
    {
        girlEnd = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task girlEndChatOne = new TimeTask(.1f,new IdleState(this));
        girlEndChatOne.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndOne);
        girlEnd.Add(girlEndChatOne);
        girlEnd.Add(new Task(new MoveThenDoState(this, new Vector3(startingPosition.x + 1, startingPosition.y, startingPosition.z), new MarkTaskDone(this))));
        girlEnd.Add(new TimeTask(8.3f, new IdleState(this)));

        Task girlEndChatTwo = new TimeTask(.1f,new IdleState(this));
        girlEndChatTwo.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndTwo);
        girlEnd.Add(girlEndChatTwo);
        girlEnd.Add(new TimeTask(3.3f, new IdleState(this)));

        Task girlEndChatThree = new TimeTask(.1f,new IdleState(this));
        girlEndChatThree.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndThree);
        girlEnd.Add(girlEndChatThree);
        girlEnd.Add(new TimeTask(8f, new IdleState(this)));

        Task girlEndChatFour = new TimeTask(.1f,new IdleState(this));
        girlEndChatFour.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndFour);
        girlEnd.Add(girlEndChatFour);
        girlEnd.Add(new TimeTask(4.3f, new IdleState(this)));

        Task girlEndChatFive = new TimeTask(.1f,new IdleState(this));
        girlEndChatFive.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndFive);
        girlEnd.Add(girlEndChatFive);
        girlEnd.Add(new TimeTask(5.1f, new IdleState(this)));

        Task girlEndChatSix = new TimeTask(.1f,new IdleState(this));
        girlEndChatSix.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndSix);
        girlEnd.Add(girlEndChatSix);
        girlEnd.Add(new TimeTask(4.1f, new IdleState(this)));

        Task girlEndChatSeven = new TimeTask(.1f,new IdleState(this));
        girlEndChatSeven.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndSeven);
        girlEnd.Add(girlEndChatSeven);
        girlEnd.Add(new TimeTask(23f, new IdleState(this)));

        Task girlEndChatEight = new TimeTask(.1f,new IdleState(this));
        girlEndChatEight.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndEight);
        girlEnd.Add(girlEndChatEight);
        girlEnd.Add(new TimeTask(1f, new IdleState(this)));

        Task girlEndChatNine = new TimeTask(.1f,new IdleState(this));
        girlEndChatNine.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndNine);
        girlEnd.Add(girlEndChatNine);
        girlEnd.Add(new TimeTask(4f, new IdleState(this)));

        Task girlEndChatTen = new TimeTask(.1f,new IdleState(this));
        girlEndChatTen.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndTen);
        girlEnd.Add(girlEndChatTen);
        girlEnd.Add(new TimeTask(21f, new IdleState(this)));

        Task girlEndChatEleven = new TimeTask(.1f,new IdleState(this));
        girlEndChatEleven.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndEleven);
        girlEnd.Add(girlEndChatEleven);
        girlEnd.Add(new TimeTask(1.2f, new IdleState(this)));

        Task girlEndChatTwelve = new TimeTask(.1f,new IdleState(this));
        girlEndChatTwelve.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndTwelve);
        girlEnd.Add(girlEndChatTwelve);
        girlEnd.Add(new TimeTask(1.2f, new IdleState(this)));

        Task girlEndChatThirteen = new TimeTask(.1f,new IdleState(this));
        girlEndChatThirteen.AddFlagToSet(FarmerFamilyFlagStrings.GirlPathEndThirteen);
        girlEnd.Add(girlEndChatThirteen);
        girlEnd.Add(new TimeTask(4f, new IdleState(this)));
        girlEnd.Add(new Task(new MoveThenDoState(this, new Vector3(startingPosition.x - 1, startingPosition.y, startingPosition.z), new MarkTaskDone(this))));
        girlEnd.SetCanInteract(false);
    }
Exemple #47
0
    protected override void SetUpSchedules()
    {
        float dateTime = 100;

        openningWaitingSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        openningWaitingSchedule.Add(new TimeTask(200, new WaitTillPlayerCloseState(this, ref player)));
        Task postOpening = new TimeTask(.1f,new IdleState(this));
        postOpening.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoStart);
        openningWaitingSchedule.Add(postOpening);

        backToFarmSchedule = new Schedule(this, Schedule.priorityEnum.DoNow);
        backToFarmSchedule.Add(new TimeTask(6f, new IdleState(this)));
        backToFarmSchedule.Add(new Task(new MoveThenDoState(this, startingPosition, new MarkTaskDone(this))));

        ropeDownSchedule = new Schedule(this, Schedule.priorityEnum.High);
        ropeDownSchedule.Add(new TimeTask(30, new WaitTillPlayerGoneState(this, player)));
        Task setFlag = new Task( new MoveThenDoState(this, startingPosition, new MarkTaskDone(this)));
        setFlag.AddFlagToSet(FlagStrings.WaitingForDate);
        ropeDownSchedule.Add(setFlag);
        ropeDownSchedule.AddFlagGroup("a");

        turnAround = new Schedule(this, Schedule.priorityEnum.DoNow);
        turnAround.Add(new Task(new MoveThenDoState(this, new Vector3(MapLocations.MiddleOfBeachMiddle.x+.1f, MapLocations.MiddleOfBeachMiddle.y, MapLocations.MiddleOfBeachMiddle.z), new MarkTaskDone(this))));
        turnAround.AddFlagGroup("b");

        /*postOpenningSchedule = new NPCConvoSchedule(this, NPCManager.instance.getNPC(StringsNPC.FarmerMotherMiddle),
            new MiddleFarmerMotherToLighthouseGirl(), Schedule.priorityEnum.DoConvo);
        postOpenningSchedule.SetCanNotInteractWithPlayer();*/

        introConvo = new Schedule(this, Schedule.priorityEnum.DoNow);
        introConvo.Add(new Task (new MoveThenDoState(this, new Vector3(startingPosition.x-.01f, startingPosition.y, startingPosition.z), new MarkTaskDone(this))));
        Task introConvoChatOne = new TimeTask(.1f,new IdleState(this));
        introConvoChatOne.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoOne);
        introConvo.Add(introConvoChatOne);
        introConvo.Add(new TimeTask(4.3f, new IdleState(this)));

        Task introConvoChatTwo = new TimeTask(.1f,new IdleState(this));
        introConvoChatTwo.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoTwo);
        introConvo.Add(introConvoChatTwo);
        introConvo.Add(new TimeTask(5.3f, new IdleState(this)));

        Task introConvoChatThree = new TimeTask(.1f,new IdleState(this));
        introConvoChatThree.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoThree);
        introConvo.Add(introConvoChatThree);
        introConvo.Add(new TimeTask(4.3f, new IdleState(this)));

        Task introConvoChatFour = new TimeTask(.1f,new IdleState(this));
        introConvoChatFour.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoFour);
        introConvo.Add(introConvoChatFour);
        introConvo.Add(new TimeTask(6.3f, new IdleState(this)));

        Task introConvoChatFive = new TimeTask(.1f,new IdleState(this));
        introConvoChatFive.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoFive);
        introConvo.Add(introConvoChatFive);
        introConvo.Add(new TimeTask(2.3f, new IdleState(this)));

        Task introConvoChatSix = new TimeTask(.1f,new IdleState(this));
        introConvoChatSix.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoSix);
        introConvo.Add(introConvoChatSix);
        introConvo.Add(new TimeTask(5.3f, new IdleState(this)));

        Task introConvoChatSeven = new TimeTask(.1f,new IdleState(this));
        introConvoChatSeven.AddFlagToSet(FarmerFamilyFlagStrings.IntroConvoSeven);
        introConvo.Add(introConvoChatSeven);
        introConvo.Add(new TimeTask(2f, new IdleState(this)));
        introConvo.SetCanInteract(false);

        #region castleMarriage
        castleMarriage = new Schedule(this, Schedule.priorityEnum.DoNow);
        Task castleMarriageChatOne = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatOne.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageOne);
        castleMarriage.Add(castleMarriageChatOne);
        castleMarriage.Add(new TimeTask(5f, new IdleState(this)));
        castleMarriage.Add(new Task(new MoveThenDoState(this, new Vector3(startingPosition.x - 1, startingPosition.y, startingPosition.z), new MarkTaskDone(this))));
        castleMarriage.Add(new TimeTask(5.3f, new IdleState(this)));

        Task castleMarriageChatTwo = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatTwo.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageTwo);
        castleMarriage.Add(castleMarriageChatTwo);
        castleMarriage.Add(new TimeTask(7.3f, new IdleState(this)));

        Task castleMarriageChatThree = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatThree.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageThree);
        castleMarriage.Add(castleMarriageChatThree);
        castleMarriage.Add(new TimeTask(2.3f, new IdleState(this)));

        Task castleMarriageChatFour = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatFour.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageFour);
        castleMarriage.Add(castleMarriageChatFour);
        castleMarriage.Add(new TimeTask(5.3f, new IdleState(this)));

        Task castleMarriageChatFive = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatFive.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageFive);
        castleMarriage.Add(castleMarriageChatFive);
        castleMarriage.Add(new TimeTask(3.3f, new IdleState(this)));

        Task castleMarriageChatSix = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatSix.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageSix);
        castleMarriage.Add(castleMarriageChatSix);
        castleMarriage.Add(new TimeTask(6.3f, new IdleState(this)));

        Task castleMarriageChatSeven = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatSeven.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageSeven);
        castleMarriage.Add(castleMarriageChatSeven);
        castleMarriage.Add(new TimeTask(3.3f, new IdleState(this)));

        Task castleMarriageChatEight = new TimeTask(.1f,new IdleState(this));
        castleMarriageChatEight.AddFlagToSet(FarmerFamilyFlagStrings.GirlCastleMarriageEight);
        castleMarriage.Add(castleMarriageChatEight);
        castleMarriage.Add(new TimeTask(2f, new IdleState(this)));
        castleMarriage.Add(new Task(new MoveThenDoState(this, new Vector3(startingPosition.x + 2, startingPosition.y, startingPosition.z), new MarkTaskDone(this))));
        castleMarriage.SetCanInteract(false);
        #endregion

        girlEnd = new Schedule(this, Schedule.priorityEnum.DoNow);
        girlEnd.Add(new TimeTask(88.5f, new IdleState(this)));
        girlEnd.SetCanInteract(false);
    }