Example #1
0
            public void ServerCreateActiveTasks(
                ICharacter character,
                IPlayerActiveTasksHolder activeTasksHolder)
            {
                this.ServerResetActiveTasks();

                var tasks = this.Achievement.Tasks;

                this.serverActiveTasks =
                    new List <ServerPlayerActiveTask>(tasks.Count);

                // refresh the task states
                for (byte index = 0; index < tasks.Count; index++)
                {
                    var task      = tasks[index];
                    var taskState = this.TaskStates[index];
                    task.ServerRefreshIsCompleted(character, taskState);

                    if (!taskState.IsCompleted ||
                        task.IsReversible)
                    {
                        // create active task entry
                        var achievementTask = new ServerPlayerActiveTask(task,
                                                                         taskState,
                                                                         activeTasksHolder,
                                                                         character);
                        this.serverActiveTasks.Add(achievementTask);
                        achievementTask.IsActive = true;
                    }
                }

                this.ServerRefreshAllTasksCompleted(character);
            }
Example #2
0
 public ServerPlayerActiveTask(
     IPlayerTask playerTask,
     PlayerTaskState playerTaskState,
     IPlayerActiveTasksHolder playerTaskTarget,
     ICharacter character)
 {
     this.PlayerTask       = playerTask;
     this.PlayerTaskState  = playerTaskState;
     this.PlayerTaskTarget = playerTaskTarget;
     this.Character        = character;
 }
            public void ServerCreateActiveTasks(
                ICharacter character,
                IPlayerActiveTasksHolder activeTasksHolder)
            {
                this.ServerResetActiveTasks();
                if (this.IsCompleted)
                {
                    // the quest is completed - no active tasks required in that case
                    return;
                }

                var tasks = this.Quest.Tasks;

                this.serverActiveTasks = new List <ServerPlayerActiveTask>(tasks.Count);

                // refresh the task states
                for (byte index = 0; index < tasks.Count; index++)
                {
                    var task      = tasks[index];
                    var taskState = this.TaskStates[index];
                    task.ServerRefreshIsCompleted(character, taskState);

                    if (taskState.IsCompleted &&
                        !task.IsReversible)
                    {
                        continue;
                    }

                    // create active task entry
                    var questTask = new ServerPlayerActiveTask(task,
                                                               taskState,
                                                               activeTasksHolder,
                                                               character);
                    this.serverActiveTasks.Add(questTask);
                    questTask.IsActive = true;
                }

                this.ServerRefreshAllTasksCompleted(character);
            }