/// <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; if (m_skill != null) { startTimeWhenPaused += m_skill.GetLeftTrainingTimeForLevelOnly(m_level); } m_endTime = startTimeWhenPaused; } }
/// <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; if (m_skill != null) startTimeWhenPaused += m_skill.GetLeftTrainingTimeForLevelOnly(m_level); m_endTime = startTimeWhenPaused; } }