/// <summary> /// Deserialization constructor /// </summary> /// <param name="character">The character for this training</param> /// <param name="serial">The serialization object for this training</param> /// <param name="isPaused">When true, the training is currently paused.</param> /// <param name="startTimeWhenPaused">Training starttime when the queue is actually paused. Indeed, in such case, CCP returns empty start and end time, so we compute a "what if we start now" scenario.</param> internal QueuedSkill(Character character, SerializableQueuedSkill serial, bool isPaused, ref DateTime startTimeWhenPaused) { m_owner = character; m_startSP = serial.StartSP; m_endSP = serial.EndSP; m_level = serial.Level; m_skill = character.Skills[serial.ID]; if (!isPaused) { // Not paused, we should trust CCP. m_startTime = serial.StartTime; m_endTime = serial.EndTime; } else { // StartTime and EndTime were empty on the serialization object if the skill was paused. // So we compute a "what if we start now" scenario m_startTime = startTimeWhenPaused; startTimeWhenPaused += m_skill.GetLeftTrainingTimeToNextLevel(); m_endTime = startTimeWhenPaused; } }