public MoongateTransitionTimer(UltimaMoongate gate, UltimaMoongate_Frame thisgate, bool reverse = false, double opentime = 0.25) : base(TimeSpan.FromSeconds(opentime)) { m_Gate = gate; m_thisGate = thisgate; m_reverse = reverse; Priority = TimerPriority.TwentyFiveMS; }
protected override void OnTick() { if (Gate.ReturnGate) { UltimaMoongate returnGate = new UltimaMoongate(Gate.GetWorldLocation(), Gate.Map, Gate.OpenTime, Gate.Colour, Gate.Dispellable, Gate.StockTravelRestrictions, false); returnGate.MoveToWorld(Gate.Target, Gate.TargetMap); } UltimaMoongate_Frame nextGate = new UltimaMoongate_Frame(Gate, MoongateFrame.Frame0, false, GetMoongateFrameID(Gate.Colour, MoongateFrame.Frame0)); nextGate.MoveToWorld(Gate.GetWorldLocation(), Gate.Map); }
protected override void OnTick() { UltimaMoongate_Frame nextGate = null; int nextFrame = (int)ThisGate.Frame + 1; int prevFrame = (int)ThisGate.Frame - 1; // If this is frame 0, continue opening or delete, depending on reverse if (ThisGate.Frame == MoongateFrame.Frame0) { if (!Reverse) { nextGate = new UltimaMoongate_Frame(Gate, (MoongateFrame)nextFrame, false, UltimaMoongate.GetMoongateFrameID(Gate.Colour, (MoongateFrame)nextFrame)); nextGate.MoveToWorld(Gate.GetWorldLocation(), Gate.Map); ThisGate.Delete(); } else { Gate.Delete(); ThisGate.Delete(); } } // If this is frame 8, begin reversing the animation. else if (ThisGate.Frame == MoongateFrame.Frame8) { Gate.gateOpened = false; nextGate = new UltimaMoongate_Frame(Gate, (MoongateFrame)prevFrame, true, UltimaMoongate.GetMoongateFrameID(Gate.Colour, (MoongateFrame)prevFrame)); nextGate.MoveToWorld(Gate.GetWorldLocation(), Gate.Map); ThisGate.Delete(); } // Otherwise, advance or retreat through animation sequence else { if (!Reverse) { nextGate = new UltimaMoongate_Frame(Gate, (MoongateFrame)nextFrame, false, UltimaMoongate.GetMoongateFrameID(Gate.Colour, (MoongateFrame)nextFrame)); } else { nextGate = new UltimaMoongate_Frame(Gate, (MoongateFrame)prevFrame, true, UltimaMoongate.GetMoongateFrameID(Gate.Colour, (MoongateFrame)prevFrame)); } nextGate.MoveToWorld(Gate.GetWorldLocation(), Gate.Map); ThisGate.Delete(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); gateOpened = reader.ReadBool(); m_openTime = reader.ReadDouble(); m_bDispellable = reader.ReadBool(); m_TargetMap = reader.ReadMap(); m_Target = reader.ReadPoint3D(); m_useStockRestrictions = reader.ReadBool(); if (m_openTime > 0) { currentGate = new UltimaMoongate_Frame(this, MoongateFrame.Frame8, false, GetMoongateFrameID(m_Colour, MoongateFrame.Frame8)); } else { this.Delete(); } }
public TransitionTimer(UltimaMoongate gate, UltimaMoongate_Frame thisgate, bool reverse = false, double opentime = 0.25) : base(gate, thisgate, reverse, opentime) { }
protected override void OnTick() { UltimaMoongate_Frame nextGate = new UltimaMoongate_Frame(Gate, MoongateFrame.Frame0, false, UltimaMoongate.GetMoongateFrameID(Gate.Colour, MoongateFrame.Frame0)); nextGate.MoveToWorld(Gate.GetWorldLocation(), Gate.Map); }