private void AddNpc(uint uid) { var isAlreadyInNpcList = Npcs.Any(npc => uid == npc.Uid); if (!isAlreadyInNpcList) { Npcs.Insert(0, new Npc(uid)); } }
public MoveResult CanMove(Direction direction, int destinationX, int destinationY, bool isOnGround, bool isSurfing, bool canUseCut, bool canUseSmashRock) { if ((destinationX < 0 || destinationX > Width || destinationY < 0 || destinationY > Height)) { return(MoveResult.Fail); } if (Npcs.Any(npc => npc.PositionX == destinationX && npc.PositionY == destinationY && !npc.IsMoving && !IsCutTree(destinationX, destinationY) && !IsRockSmash(destinationX, destinationY) && npc.IsVisible)) { return(MoveResult.Fail); } //if (direction != Direction.Down && GetCollider(destinationX, destinationY) == 4) //{ // return MoveResult.Fail; //} //if (IsUnmoveableCellSide(direction, destinationX, destinationY)) // return MoveResult.Fail; if ((IsCutTree(destinationX, destinationY) && !canUseCut) || (IsRockSmash(destinationX, destinationY) && !canUseSmashRock)) { return(MoveResult.Fail); } int collider = GetCollider(destinationX, destinationY); if (!IsMovementValid(direction, collider, isOnGround, isSurfing, canUseCut, canUseSmashRock, destinationX, destinationY)) { return(MoveResult.Fail); } if (collider == 4 || collider == 6 || collider == 7 || collider == 5) { return(MoveResult.Jump); } if (collider == 11 && isOnGround) { return(MoveResult.NoLongerOnGround); } if (collider == 12 && !isOnGround) { return(MoveResult.OnGround); } if (isSurfing && collider != 2) { return(MoveResult.NoLongerSurfing); } return(MoveResult.Success); }
public bool IsPc(int x, int y) { if (!IsInCurrentArea(x, y)) { return(false); } return(Objects.Any(ob => ob != null && ob.x == x && ob.z == -y && ob.Name.StartsWith("PC") && !string.IsNullOrEmpty(ob.Name)) && Npcs.Any(n => n.PositionX == x && n.PositionY == y && n.NpcName.ToLowerInvariant().StartsWith("new") && n.Data.Settings.Sprite == 0)); }
public int NextNpcID() { var i = -1; while (Npcs.Any(x => x.ID == i) || MonstersGroups.Any(x => x.ID == i) || Fights.Any(x => x.GetFighters().ToList().Any(y => y.ID == i))) { i -= 1; } return(i); }