Exemplo n.º 1
0
    private bool IsCollidingWithSprite(GscTile dest, bool readFromRam)
    {
        if (readFromRam)
        {
            for (int spriteIndex = 1; spriteIndex < 16; spriteIndex++)
            {
                GscSprite sprite = dest.Map.Sprites[spriteIndex - 1];
                if (sprite != null && !IsSpriteHidden(sprite))
                {
                    int spriteX = Map.Game.CpuRead(0xd701 | ((spriteIndex + 2) << 4)) - 4;
                    int spriteY = Map.Game.CpuRead(0xd700 | ((spriteIndex + 2) << 4)) - 4;
                    if (spriteX == dest.X && spriteY == dest.Y)
                    {
                        return(true);
                    }
                }
            }
        }
        else
        {
            foreach (GscSprite sprite in dest.Map.Sprites)
            {
                if (!IsSpriteHidden(sprite) && sprite.X == dest.X && sprite.Y == dest.Y)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
Exemplo n.º 2
0
    public override bool IsPassable(GscTile from, PermissionSet permissions)
    {
        GscWarp warp = Map.Warps[X, Y];

        if (warp != null && !warp.Allowed)
        {
            return(false);
        }

        GscSprite sprite = Map.Sprites[X, Y];

        if (sprite != null && sprite.MovementFunction != GscSpriteMovement.Wander &&
            sprite.MovementFunction != GscSpriteMovement.SwimWander &&
            sprite.MovementFunction != GscSpriteMovement.WalkLeftRight &&
            sprite.MovementFunction != GscSpriteMovement.WalkUpDown)
        {
            return(false);
        }

        return(permissions.IsAllowed(Collision));
    }
Exemplo n.º 3
0
 private bool IsTrainerDefeated(GscSprite sprite)
 {
     return(CheckEventFlag(Map.Game.ROM.u16le((sprite.Map.Scripts & 0xff0000) | sprite.ScriptPointer)));
 }
Exemplo n.º 4
0
 private bool IsSpriteHidden(GscSprite sprite)
 {
     return(CheckEventFlag(sprite.EventFlag));
 }