本文整理汇总了C#中Client.MirObjects.QueuedAction类的典型用法代码示例。如果您正苦于以下问题:C# QueuedAction类的具体用法?C# QueuedAction怎么用?C# QueuedAction使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
QueuedAction类属于Client.MirObjects命名空间,在下文中一共展示了QueuedAction类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MountUpdate
public void MountUpdate(S.MountUpdate info)
{
MountType = info.MountType;
RidingMount = info.RidingMount;
QueuedAction action = new QueuedAction { Action = MirAction.Standing, Direction = Direction, Location = CurrentLocation };
ActionFeed.Insert(0, action);
MountTime = CMain.Time;
if (MountType < 0)
GameScene.Scene.MountDialog.Hide();
SetLibraries();
SetEffects();
PlayMountSound();
}
示例2: SetAction
//.........这里部分代码省略.........
if (CurrentAction == MirAction.Standing)
{
if (Class == MirClass.Archer && HasClassWeapon)
CurrentAction = MirAction.Standing;
else
CurrentAction = CMain.Time > StanceTime ? MirAction.Standing : MirAction.Stance;
if (Concentrating && ConcentrateInterrupted)
Network.Enqueue(new C.SetConcentration { ObjectID = User.ObjectID, Enabled = Concentrating, Interrupted = false });
}
if (Fishing) CurrentAction = MirAction.FishingWait;
Frames.Frames.TryGetValue(CurrentAction, out Frame);
FrameIndex = 0;
EffectFrameIndex = 0;
if (MapLocation != CurrentLocation)
{
GameScene.Scene.MapControl.RemoveObject(this);
MapLocation = CurrentLocation;
GameScene.Scene.MapControl.AddObject(this);
}
if (Frame == null) return;
FrameInterval = Frame.Interval;
EffectFrameInterval = Frame.EffectInterval;
SetLibraries();
}
else
{
QueuedAction action = ActionFeed[0];
ActionFeed.RemoveAt(0);
CurrentAction = action.Action;
if (RidingMount)
{
switch (CurrentAction)
{
case MirAction.Standing:
CurrentAction = MirAction.MountStanding;
break;
case MirAction.Walking:
CurrentAction = MirAction.MountWalking;
break;
case MirAction.Running:
CurrentAction = MirAction.MountRunning;
break;
case MirAction.Struck:
CurrentAction = MirAction.MountStruck;
break;
case MirAction.Attack1:
CurrentAction = MirAction.MountAttack;
break;
}
}
CurrentLocation = action.Location;
MirDirection olddirection = Direction;
Direction = action.Direction;
Point temp;
switch (CurrentAction)
示例3: FishingUpdate
public void FishingUpdate(S.FishingUpdate p)
{
if (Fishing != p.Fishing)
{
MirDirection dir = Functions.DirectionFromPoint(CurrentLocation, p.FishingPoint);
if (p.Fishing)
{
QueuedAction action = new QueuedAction { Action = MirAction.FishingCast, Direction = dir, Location = CurrentLocation };
ActionFeed.Add(action);
}
else
{
QueuedAction action = new QueuedAction { Action = MirAction.FishingReel, Direction = dir, Location = CurrentLocation };
ActionFeed.Add(action);
if (p.FoundFish)
GameScene.Scene.ChatDialog.ReceiveChat("Found fish!!", ChatType.Hint);
}
Fishing = p.Fishing;
SetLibraries();
}
if (!HasFishingRod)
{
GameScene.Scene.FishingDialog.Hide();
}
FishingPoint = p.FishingPoint;
FoundFish = p.FoundFish;
}
示例4: ObjectRangeAttack
private void ObjectRangeAttack(S.ObjectRangeAttack p)
{
if (p.ObjectID == User.ObjectID) return;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
QueuedAction action = null;
if (ob.Race == ObjectType.Player)
{
switch (p.Type)
{
default:
{
action = new QueuedAction { Action = MirAction.AttackRange1, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
}
}
else
{
switch (p.Type)
{
case 1:
{
action = new QueuedAction { Action = MirAction.AttackRange2, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
default:
{
action = new QueuedAction { Action = MirAction.AttackRange1, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
}
}
action.Params.Add(p.TargetID);
action.Params.Add(p.Target);
action.Params.Add(p.Spell);
ob.ActionFeed.Add(action);
return;
}
}
示例5: SetAction
public virtual void SetAction()
{
if (NextAction != null && !GameScene.CanMove)
{
switch (NextAction.Action)
{
case MirAction.Walking:
case MirAction.Running:
case MirAction.Pushed:
case MirAction.DashL:
case MirAction.DashR:
return;
}
}
if (User == this && CMain.Time < MapControl.NextAction)// && CanSetAction)
{
//NextMagic = null;
return;
}
if (ActionFeed.Count == 0)
{
CurrentAction = CMain.Time > BlizzardFreezeTime ? MirAction.Standing : MirAction.Stance2;
if (CurrentAction == MirAction.Standing) CurrentAction = CMain.Time > StanceTime ? MirAction.Standing : MirAction.Stance;
Frames.Frames.TryGetValue(CurrentAction, out Frame);
FrameIndex = 0;
EffectFrameIndex = 0;
if (MapLocation != CurrentLocation)
{
GameScene.Scene.MapControl.RemoveObject(this);
MapLocation = CurrentLocation;
GameScene.Scene.MapControl.AddObject(this);
}
if (Frame == null) return;
FrameInterval = Frame.Interval;
EffectFrameInterval = Frame.EffectInterval;
}
else
{
QueuedAction action = ActionFeed[0];
ActionFeed.RemoveAt(0);
CurrentAction = action.Action;
CurrentLocation = action.Location;
MirDirection olddirection = Direction;
Direction = action.Direction;
Point temp;
switch (CurrentAction)
{
case MirAction.Walking:
case MirAction.Running:
case MirAction.Pushed:
case MirAction.DashL:
case MirAction.DashR:
int i = CurrentAction == MirAction.Running ? 2 : 1;
temp = Functions.PointMove(CurrentLocation, Direction, CurrentAction == MirAction.Pushed ? 0 : -i);
break;
default:
temp = CurrentLocation;
break;
}
temp = new Point(action.Location.X, temp.Y > CurrentLocation.Y ? temp.Y : CurrentLocation.Y);
if (MapLocation != temp)
{
GameScene.Scene.MapControl.RemoveObject(this);
MapLocation = temp;
GameScene.Scene.MapControl.AddObject(this);
}
switch (CurrentAction)
{
case MirAction.Pushed:
if (this == User)
MapControl.InputDelay = CMain.Time + 500;
Frames.Frames.TryGetValue(MirAction.Walking, out Frame);
break;
case MirAction.DashL:
case MirAction.DashR:
Frames.Frames.TryGetValue(MirAction.Running, out Frame);
break;
case MirAction.DashFail:
Frames.Frames.TryGetValue(MirAction.Standing, out Frame);
//CanSetAction = false;
break;
case MirAction.Attack4:
Spell = (Spell)action.Params[0];
Frames.Frames.TryGetValue(Spell == Spell.TwinDrakeBlade || Spell == Spell.FlamingSword ? MirAction.Attack1 : CurrentAction, out Frame);
break;
case MirAction.Spell:
Spell = (Spell)action.Params[0];
switch (Spell)
//.........这里部分代码省略.........
示例6: ObjectStruck
private void ObjectStruck(S.ObjectStruck p)
{
if (p.ObjectID == User.ObjectID) return;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
if (ob.SkipFrames) return;
//if (ob.CurrentAction == MirAction.Struck) return;
if (ob.ActionFeed.Count > 0 && ob.ActionFeed[ob.ActionFeed.Count - 1].Action == MirAction.Struck) return;
if (ob.Race == ObjectType.Player)
((PlayerObject)ob).BlizzardStopTime = 0;
QueuedAction action = new QueuedAction { Action = MirAction.Struck, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
action.Params.Add(p.AttackerID);
ob.ActionFeed.Add(action);
if (ob.Buffs.Any(a => a == BuffType.EnergyShield))
{
for (int j = 0; j < ob.Effects.Count; j++)
{
BuffEffect effect = null;
effect = ob.Effects[j] as BuffEffect;
if (effect != null && effect.BuffType == BuffType.EnergyShield)
{
effect.Clear();
effect.Remove();
ob.Effects.Add(effect = new BuffEffect(Libraries.Magic2, 1890, 6, 600, ob, true, BuffType.EnergyShield) { Repeat = false });
SoundManager.PlaySound(20000 + (ushort)Spell.EnergyShield * 10 + 1);
effect.Complete += (o, e) =>
{
ob.Effects.Add(new BuffEffect(Libraries.Magic2, 1900, 2, 800, ob, true, BuffType.EnergyShield) { Repeat = true });
};
break;
}
}
}
return;
}
}
示例7: ObjectMagic
private void ObjectMagic(S.ObjectMagic p)
{
if (p.SelfBroadcast == false && p.ObjectID == User.ObjectID) return;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
QueuedAction action = new QueuedAction { Action = MirAction.Spell, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
action.Params.Add(p.Spell);
action.Params.Add(p.TargetID);
action.Params.Add(p.Target);
action.Params.Add(p.Cast);
action.Params.Add(p.Level);
ob.ActionFeed.Add(action);
return;
}
}
示例8: Struck
private void Struck(S.Struck p)
{
LogTime = CMain.Time + Globals.LogDelay;
NextRunTime = CMain.Time + 2500;
User.BlizzardFreezeTime = 0;
User.ClearMagic();
//if (User.CurrentAction == MirAction.Struck) return;
MirDirection dir = User.Direction;
Point location = User.CurrentLocation;
for (int i = 0; i < User.ActionFeed.Count; i++)
if (User.ActionFeed[i].Action == MirAction.Struck) return;
if (User.ActionFeed.Count > 0)
{
dir = User.ActionFeed[User.ActionFeed.Count - 1].Direction;
location = User.ActionFeed[User.ActionFeed.Count - 1].Location;
}
QueuedAction action = new QueuedAction { Action = MirAction.Struck, Direction = dir, Location = location, Params = new List<object>() };
action.Params.Add(p.AttackerID);
User.ActionFeed.Add(action);
}
示例9: Struck
private void Struck(S.Struck p)
{
LogTime = CMain.Time + Globals.LogDelay;
NextRunTime = CMain.Time + 2500;
User.BlizzardStopTime = 0;
User.ClearMagic();
if (User.ReincarnationStopTime > CMain.Time)
Network.Enqueue(new C.CancelReincarnation {});
//if (User.CurrentAction == MirAction.Struck) return;
MirDirection dir = User.Direction;
Point location = User.CurrentLocation;
for (int i = 0; i < User.ActionFeed.Count; i++)
if (User.ActionFeed[i].Action == MirAction.Struck) return;
if (User.ActionFeed.Count > 0)
{
dir = User.ActionFeed[User.ActionFeed.Count - 1].Direction;
location = User.ActionFeed[User.ActionFeed.Count - 1].Location;
}
if (User.Buffs.Any(a => a == BuffType.EnergyShield))
{
for (int j = 0; j < User.Effects.Count; j++)
{
BuffEffect effect = null;
effect = User.Effects[j] as BuffEffect;
if (effect != null && effect.BuffType == BuffType.EnergyShield)
{
effect.Clear();
effect.Remove();
User.Effects.Add(effect = new BuffEffect(Libraries.Magic2, 1890, 6, 600, User, true, BuffType.EnergyShield) { Repeat = false });
SoundManager.PlaySound(20000 + (ushort)Spell.EnergyShield * 10 + 1);
effect.Complete += (o, e) =>
{
User.Effects.Add(new BuffEffect(Libraries.Magic2, 1900, 2, 800, User, true, BuffType.EnergyShield) { Repeat = true });
};
break;
}
}
}
QueuedAction action = new QueuedAction { Action = MirAction.Struck, Direction = dir, Location = location, Params = new List<object>() };
action.Params.Add(p.AttackerID);
User.ActionFeed.Add(action);
}
示例10: ObjectStruck
private void ObjectStruck(S.ObjectStruck p)
{
if (p.ObjectID == User.ObjectID) return;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
if (ob.SkipFrames) return;
//if (ob.CurrentAction == MirAction.Struck) return;
if (ob.ActionFeed.Count > 0 && ob.ActionFeed[ob.ActionFeed.Count - 1].Action == MirAction.Struck) return;
if (ob.Race == ObjectType.Player)
((PlayerObject)ob).BlizzardFreezeTime = 0;
QueuedAction action = new QueuedAction { Action = MirAction.Struck, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
action.Params.Add(p.AttackerID);
ob.ActionFeed.Add(action);
return;
}
}
示例11: SetAction
public override void SetAction()
{
if (QueuedAction != null )
{
if ((ActionFeed.Count == 0) || (ActionFeed.Count == 1 && NextAction.Action == MirAction.Stance))
{
ActionFeed.Clear();
ActionFeed.Add(QueuedAction);
QueuedAction = null;
}
}
base.SetAction();
}
示例12: ProcessFrames
public override void ProcessFrames()
{
bool clear = CMain.Time >= NextMotion;
base.ProcessFrames();
if (clear) QueuedAction = null;
if ((CurrentAction == MirAction.Standing || CurrentAction == MirAction.MountStanding || CurrentAction == MirAction.Stance || CurrentAction == MirAction.Stance2 || CurrentAction == MirAction.DashFail) && (QueuedAction != null || NextAction != null))
SetAction();
}
示例13: ObjectAttack
private void ObjectAttack(S.ObjectAttack p)
{
if (p.ObjectID == User.ObjectID) return;
QueuedAction action = null;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
if (ob.Race == ObjectType.Player)
{
action = new QueuedAction { Action = MirAction.Attack1, Direction = p.Direction, Location = p.Location, Params = new List<object>() }; //FAR Close up attack
}
else
{
switch (p.Type)
{
default:
{
action = new QueuedAction { Action = MirAction.Attack1, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
case 1:
{
action = new QueuedAction { Action = MirAction.Attack2, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
case 2:
{
action = new QueuedAction { Action = MirAction.Attack3, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
case 3:
{
action = new QueuedAction { Action = MirAction.Attack4, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
break;
}
}
}
action.Params.Add(p.Spell);
action.Params.Add(p.Level);
ob.ActionFeed.Add(action);
return;
}
}
示例14: ObjectRangeAttack
private void ObjectRangeAttack(S.ObjectRangeAttack p)
{
if (p.ObjectID == User.ObjectID) return;
for (int i = MapControl.Objects.Count - 1; i >= 0; i--)
{
MapObject ob = MapControl.Objects[i];
if (ob.ObjectID != p.ObjectID) continue;
QueuedAction action = new QueuedAction { Action = MirAction.AttackRange, Direction = p.Direction, Location = p.Location, Params = new List<object>() };
action.Params.Add(p.TargetID);
ob.ActionFeed.Add(action);
return;
}
}