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); }
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)); }
private bool IsTrainerDefeated(GscSprite sprite) { return(CheckEventFlag(Map.Game.ROM.u16le((sprite.Map.Scripts & 0xff0000) | sprite.ScriptPointer))); }
private bool IsSpriteHidden(GscSprite sprite) { return(CheckEventFlag(sprite.EventFlag)); }