Exemple #1
0
        public static bool IsBlocked(Loc2D loc, Enums.WalkMode walkMode)
        {
            //jumping ignores all short obstacles

            if (TileBlocked(loc, walkMode))
            {
                return(true);
            }

            if (walkMode < Enums.WalkMode.Air)
            {
                foreach (Player player in Players)
                {
                    if (!player.dead && player.CharLoc == loc)
                    {
                        return(true);
                    }
                }
                foreach (Npc npc in Npcs)
                {
                    if (!npc.dead && npc.CharLoc == loc)
                    {
                        return(true);
                    }
                }
            }

            //map object blocking

            return(false);
        }
Exemple #2
0
        public static bool DirBlocked(Direction8 dir, ActiveChar character, Loc2D loc, bool inAir, int distance)
        {
            if (character == FocusedCharacter && Intangible)
            {
                Operations.MoveInDirection8(ref loc, dir, 1);
                if (!Operations.IsInBound(CurrentMap.Width, CurrentMap.Height, loc.X, loc.Y))
                {
                    return(true);
                }

                return(false);
            }

            Enums.WalkMode walkMode = Enums.WalkMode.Normal;

            if (inAir)
            {
                walkMode = Enums.WalkMode.Air;
            }

            for (int i = 0; i < distance; i++)
            {
                Operations.MoveInDirection8(ref loc, dir, 1);

                if (IsBlocked(loc, walkMode))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #3
0
        public static bool MoveBlocked(Loc2D loc, Direction8 dir)
        {
            Enums.WalkMode walkMode = Enums.WalkMode.Air;

            Operations.MoveInDirection8(ref loc, dir, 1);

            if (TileBlocked(loc, walkMode))
            {
                return(true);
            }

            return(false);
        }
Exemple #4
0
 public static bool TileBlocked(Loc2D loc, Enums.WalkMode walkMode)
 {
     if (!Operations.IsInBound(CurrentMap.Width, CurrentMap.Height, loc.X, loc.Y))
     {
         return(true);
     }
     if (CurrentMap.MapArray[loc.X, loc.Y].Data.Type == Enums.TileType.Blocked)
     {
         return(true);
     }
     if (CurrentMap.MapArray[loc.X, loc.Y].Data.Type == Enums.TileType.Water)
     {
         return(walkMode > 0);
     }
     return(false);
 }