public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { m_Duration = reader.ReadTimeSpan(); m_TeamInfo = new DDTeamInfo[reader.ReadEncodedInt()]; for (int i = 0; i < m_TeamInfo.Length; ++i) { m_TeamInfo[i] = new DDTeamInfo(i, reader); } m_PointA = reader.ReadItem() as DDWayPoint; m_PointB = reader.ReadItem() as DDWayPoint; break; } } }
public void Dominate(DDWayPoint point, Mobile from, DDTeamInfo team) { if (point == null || from == null || team == null || !m_Capturable) { return; } bool wasDom = (m_Controller.PointA != null && m_Controller.PointB != null && m_Controller.PointA.TeamOwner == m_Controller.PointB.TeamOwner && m_Controller.PointA.TeamOwner != null); point.TeamOwner = team; Alert("{0} has captured {1}!", team.Name, point.Name); bool isDom = (m_Controller.PointA != null && m_Controller.PointB != null && m_Controller.PointA.TeamOwner == m_Controller.PointB.TeamOwner && m_Controller.PointA.TeamOwner != null); if (wasDom && !isDom) { Alert("Domination averted!"); if (m_Controller.PointA != null) { m_Controller.PointA.SetNonCaptureHue(); } if (m_Controller.PointB != null) { m_Controller.PointB.SetNonCaptureHue(); } if (m_CaptureTimer != null) { m_CaptureTimer.Stop(); } m_CaptureTimer = null; } if (!wasDom && isDom) { m_CapStage = 0; m_CaptureTimer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1.0), new TimerCallback(CaptureTick)); m_CaptureTimer.Start(); } }