本文整理汇总了C#中MirDirection类的典型用法代码示例。如果您正苦于以下问题:C# MirDirection类的具体用法?C# MirDirection怎么用?C# MirDirection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MirDirection类属于命名空间,在下文中一共展示了MirDirection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Pushed
public override int Pushed(MapObject pusher, MirDirection dir, int distance)
{
int result = base.Pushed(pusher, dir, distance);
if (result > 0)
{
if (pusher is PlayerObject) Attacked((PlayerObject)pusher, Math.Max(50, Envir.Random.Next((int)MaxHP)), DefenceType.Repulsion);
else if (pusher is MonsterObject) Attacked((MonsterObject)pusher, Math.Max(50, Envir.Random.Next((int)MaxHP)), DefenceType.Repulsion);
}
return result;
}
示例2: CanFish
public bool CanFish(MirDirection dir)
{
if (!GameScene.User.HasFishingRod || GameScene.User.FishingTime + 1000 > CMain.Time) return false;
if (GameScene.User.CurrentAction != MirAction.Standing) return false;
if (GameScene.User.Direction != dir) return false;
if (GameScene.User.TransformType >= 6 && GameScene.User.TransformType <= 9) return false;
Point point = Functions.PointMove(User.CurrentLocation, dir, 3);
if (!M2CellInfo[point.X, point.Y].FishingCell) return false;
return true;
}
示例3: CanHalfMoon
public bool CanHalfMoon(Point p, MirDirection d)
{
d = Functions.PreviousDir(d);
for (int i = 0; i < 4; i++)
{
if (HasTarget(Functions.PointMove(p, d, 1))) return true;
d = Functions.NextDir(d);
}
return false;
}
示例4: ReadPacket
protected override void ReadPacket(BinaryReader reader)
{
ObjectID = reader.ReadUInt32();
Name = reader.ReadString();
NameColour = Color.FromArgb(reader.ReadInt32());
Image = reader.ReadByte();
Location = new Point(reader.ReadInt32(), reader.ReadInt32());
Direction = (MirDirection)reader.ReadByte();
int count = reader.ReadInt32();
for (var i = 0; i < count; i++)
QuestIDs.Add(reader.ReadInt32());
}
示例5: ReadPacket
protected override void ReadPacket(BinaryReader reader)
{
Direction = (MirDirection)reader.ReadByte();
}
示例6: Turn
public virtual void Turn(MirDirection dir)
{
if (!CanMove) return;
Direction = dir;
InSafeZone = CurrentMap.GetSafeZone(CurrentLocation) != null;
Cell cell = CurrentMap.GetCell(CurrentLocation);
for (int i = 0; i < cell.Objects.Count; i++)
{
if (cell.Objects[i].Race != ObjectType.Spell) continue;
SpellObject ob = (SpellObject)cell.Objects[i];
ob.ProcessSpell(this);
break;
}
Broadcast(new S.ObjectTurn { ObjectID = ObjectID, Direction = Direction, Location = CurrentLocation });
}
示例7: AddObjects
public void AddObjects(MirDirection dir, int count)
{
switch (dir)
{
case MirDirection.Up:
for (int a = 0; a < count; a++)
{
int y = CurrentLocation.Y - Globals.DataRange + a;
if (y < 0 || y >= CurrentMap.Height) continue;
for (int b = -Globals.DataRange; b <= Globals.DataRange; b++)
{
int x = CurrentLocation.X + b;
if (x < 0 || x >= CurrentMap.Width) continue;
Cell cell = CurrentMap.GetCell(x, y);
if (!cell.Valid || cell.Objects == null) continue;
for (int i = 0; i < cell.Objects.Count; i++)
{
MapObject ob = cell.Objects[i];
if (ob.Race != ObjectType.Player) continue;
ob.Add(this);
}
}
}
break;
case MirDirection.UpRight:
//Top Block
for (int a = 0; a < count; a++)
{
int y = CurrentLocation.Y - Globals.DataRange + a;
if (y < 0 || y >= CurrentMap.Height) continue;
for (int b = -Globals.DataRange; b <= Globals.DataRange; b++)
{
int x = CurrentLocation.X + b;
if (x < 0 || x >= CurrentMap.Width) continue;
Cell cell = CurrentMap.GetCell(x, y);
if (!cell.Valid || cell.Objects == null) continue;
for (int i = 0; i < cell.Objects.Count; i++)
{
MapObject ob = cell.Objects[i];
if (ob.Race != ObjectType.Player) continue;
ob.Add(this);
}
}
}
//Right Block
for (int a = -Globals.DataRange + count; a <= Globals.DataRange; a++)
{
int y = CurrentLocation.Y + a;
if (y < 0 || y >= CurrentMap.Height) continue;
for (int b = 0; b < count; b++)
{
int x = CurrentLocation.X + Globals.DataRange - b;
if (x < 0 || x >= CurrentMap.Width) continue;
Cell cell = CurrentMap.GetCell(x, y);
if (!cell.Valid || cell.Objects == null) continue;
for (int i = 0; i < cell.Objects.Count; i++)
{
MapObject ob = cell.Objects[i];
if (ob.Race != ObjectType.Player) continue;
ob.Add(this);
}
}
}
break;
case MirDirection.Right:
for (int a = -Globals.DataRange; a <= Globals.DataRange; a++)
{
int y = CurrentLocation.Y + a;
if (y < 0 || y >= CurrentMap.Height) continue;
for (int b = 0; b < count; b++)
{
int x = CurrentLocation.X + Globals.DataRange - b;
if (x < 0 || x >= CurrentMap.Width) continue;
Cell cell = CurrentMap.GetCell(x, y);
if (!cell.Valid || cell.Objects == null) continue;
for (int i = 0; i < cell.Objects.Count; i++)
{
MapObject ob = cell.Objects[i];
if (ob.Race != ObjectType.Player) continue;
ob.Add(this);
}
}
}
//.........这里部分代码省略.........
示例8: Turn
public void Turn(MirDirection dir)
{
Direction = dir;
Broadcast(new S.ObjectTurn { ObjectID = ObjectID, Direction = Direction, Location = CurrentLocation });
}
示例9: Pushed
public override int Pushed(MapObject pusher, MirDirection dir, int distance)
{
throw new NotSupportedException();
}
示例10: Turn
public override void Turn(MirDirection dir)
{
}
示例11: CharacterInfo
public CharacterInfo(BinaryReader reader)
{
Index = reader.ReadInt32();
Name = reader.ReadString();
Level = reader.ReadByte();
Class = (MirClass) reader.ReadByte();
Gender = (MirGender) reader.ReadByte();
Hair = reader.ReadByte();
CreationIP = reader.ReadString();
CreationDate = DateTime.FromBinary(reader.ReadInt64());
Banned = reader.ReadBoolean();
BanReason = reader.ReadString();
ExpiryDate = DateTime.FromBinary(reader.ReadInt64());
LastIP = reader.ReadString();
LastDate = DateTime.FromBinary(reader.ReadInt64());
Deleted = reader.ReadBoolean();
DeleteDate = DateTime.FromBinary(reader.ReadInt64());
CurrentMapIndex = reader.ReadInt32();
CurrentLocation = new Point(reader.ReadInt32(), reader.ReadInt32());
Direction = (MirDirection)reader.ReadByte();
BindMapIndex = reader.ReadInt32();
BindLocation = new Point(reader.ReadInt32(), reader.ReadInt32());
HP = reader.ReadUInt16();
MP = reader.ReadUInt16();
Experience = reader.ReadInt64();
AMode = (AttackMode) reader.ReadByte();
PMode = (PetMode) reader.ReadByte();
if (Envir.LoadVersion > 34)
{
PKPoints = reader.ReadInt32();
}
int count = reader.ReadInt32();
Array.Resize(ref Inventory, count);
for (int i = 0; i < count; i++)
{
if (!reader.ReadBoolean()) continue;
UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
if (SMain.Envir.BindItem(item) && i < Inventory.Length)
Inventory[i] = item;
}
count = reader.ReadInt32();
for (int i = 0; i < count; i++)
{
if (!reader.ReadBoolean()) continue;
UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
if (SMain.Envir.BindItem(item) && i < Equipment.Length)
Equipment[i] = item;
}
count = reader.ReadInt32();
for (int i = 0; i < count; i++)
{
if (!reader.ReadBoolean()) continue;
UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
if (SMain.Envir.BindItem(item) && i < QuestInventory.Length)
QuestInventory[i] = item;
}
count = reader.ReadInt32();
for (int i = 0; i < count; i++)
{
UserMagic magic = new UserMagic(reader);
if (magic.Info == null) continue;
Magics.Add(magic);
}
if (Envir.LoadVersion < 2) return;
Thrusting = reader.ReadBoolean();
HalfMoon = reader.ReadBoolean();
CrossHalfMoon = reader.ReadBoolean();
DoubleSlash = reader.ReadBoolean();
if(Envir.LoadVersion > 46)
{
MentalState = reader.ReadByte();
}
if (Envir.LoadVersion < 4) return;
count = reader.ReadInt32();
for (int i = 0; i < count; i++)
Pets.Add(new PetInfo(reader));
if (Envir.LoadVersion < 5) return;
AllowGroup = reader.ReadBoolean();
//.........这里部分代码省略.........
示例12: Walk
public override bool Walk(MirDirection dir)
{
return false;
}
示例13: Pushed
public abstract int Pushed(MapObject pusher, MirDirection dir, int distance);
示例14: Pushed
public override int Pushed(MapObject pusher, MirDirection dir, int distance)
{
if (!Info.CanPush) return 0;
//if (!CanMove) return 0; //stops mobs that can't move (like cannibalplants) from being pushed
int result = 0;
MirDirection reverse = Functions.ReverseDirection(dir);
for (int i = 0; i < distance; i++)
{
Point location = Functions.PointMove(CurrentLocation, dir, 1);
if (!CurrentMap.ValidPoint(location)) return result;
Cell cell = CurrentMap.GetCell(location);
bool stop = false;
if (cell.Objects != null)
for (int c = 0; c < cell.Objects.Count; c++)
{
MapObject ob = cell.Objects[c];
if (!ob.Blocking) continue;
stop = true;
}
if (stop) break;
CurrentMap.GetCell(CurrentLocation).Remove(this);
Direction = reverse;
RemoveObjects(dir, 1);
CurrentLocation = location;
CurrentMap.GetCell(CurrentLocation).Add(this);
AddObjects(dir, 1);
Broadcast(new S.ObjectPushed { ObjectID = ObjectID, Direction = Direction, Location = CurrentLocation });
result++;
}
ActionTime = Envir.Time + 300 * result;
MoveTime = Envir.Time + 500 * result;
if (result > 0)
{
Cell cell = CurrentMap.GetCell(CurrentLocation);
for (int i = 0; i < cell.Objects.Count; i++)
{
if (cell.Objects[i].Race != ObjectType.Spell) continue;
SpellObject ob = (SpellObject)cell.Objects[i];
ob.ProcessSpell(this);
break;
}
}
return result;
}
示例15: NextDir
public static MirDirection NextDir(MirDirection d)
{
switch (d)
{
case MirDirection.Up:
return MirDirection.UpRight;
case MirDirection.UpRight:
return MirDirection.Right;
case MirDirection.Right:
return MirDirection.DownRight;
case MirDirection.DownRight:
return MirDirection.Down;
case MirDirection.Down:
return MirDirection.DownLeft;
case MirDirection.DownLeft:
return MirDirection.Left;
case MirDirection.Left:
return MirDirection.UpLeft;
case MirDirection.UpLeft:
return MirDirection.Up;
default: return d;
}
}