public List <CollisionTile> GetCollidingTiles(Rectangle rectangle, TileInfo.SideType direction) { TileUnit firstPrimary = Units.GameToTile(rectangle.Side(TileInfo.OppositeSide(direction))); TileUnit lastPrimary = Units.GameToTile(rectangle.Side(direction)); int primaryIncr = TileInfo.IsMax(direction) ? 1 : -1; bool horizontal = TileInfo.Horizontal(direction); TileUnit sMin = Units.GameToTile(horizontal ? rectangle.Top : rectangle.Left); TileUnit sMid = Units.GameToTile(horizontal ? rectangle.Center.Y : rectangle.Center.X); TileUnit sMax = Units.GameToTile(horizontal ? rectangle.Bottom : rectangle.Right); bool sPositive = sMid - sMin < sMax - sMid; int secondaryIncr = sPositive ? 1 : -1; TileUnit firstSecondary = sPositive ? sMin : sMax; TileUnit lastSecondary = sPositive ? sMin : sMax; List <CollisionTile> collisionTiles = new List <CollisionTile>(); for (TileUnit primary = firstPrimary; primary != lastPrimary + primaryIncr; primary = Convert.ToUInt32(Convert.ToInt32(primary) + primaryIncr)) { for (TileUnit secondary = firstSecondary; secondary != lastSecondary + secondaryIncr; secondary = Convert.ToUInt32(Convert.ToInt32(secondary) + secondaryIncr)) { TileUnit row = !horizontal ? primary : secondary; TileUnit col = horizontal ? primary : secondary; collisionTiles.Add(new CollisionTile(row, col, tiles[Convert.ToInt32(row)][Convert.ToInt32(col)].tileType)); } } return(collisionTiles); }
public void InitializeSprite(ContentManager Content, PolarStarSpriteState spriteState) { TileUnit tileY = spriteState.HorizontalFacing == SpriteState.HorizontalFacing.Left ? Convert.ToUInt32(LeftOffset) : Convert.ToUInt32(RightOffset); switch (spriteState.VerticalFacing) { case SpriteState.VerticalFacing.Horizontal: tileY += HorizontalOffset; break; case SpriteState.VerticalFacing.Up: tileY += UpOffset; break; case SpriteState.VerticalFacing.Down: tileY += DownOffset; break; case SpriteState.VerticalFacing.LastVerticalFacing: break; } sprites[spriteState] = new Sprite(Content, SpritePath, Units.GameToPixel(PolarStarIndex * GunWidth), Units.TileToPixel(tileY), Units.GameToPixel(GunWidth), Units.GameToPixel(GunHeight)); }
public void InitializeSprite(ContentManager Content, BatSpriteState spriteState) { TileUnit tileY = spriteState.HorizontalFacing == CaveStory.SpriteState.HorizontalFacing.Right ? (uint)3 : (uint)2; sprites[spriteState] = new AnimatedSprite(Content, "Npc\\NpcCemet", Units.TileToPixel(2), Units.TileToPixel(tileY), Units.TileToPixel(1), Units.TileToPixel(1), FlyFps, NumFlyFrames); }
public override void Draw(SpriteBatch spriteBatch) { for (TileUnit x = 0; x < Game1.ScreenWidth; x += BackgroundSize) { for (TileUnit y = 0; y < Game1.ScreenHeight; y += BackgroundSize) { spriteBatch.Draw(tex, new Vector2(Units.TileToPixel(x), Units.TileToPixel(y)), Color.White); } } }
public void Draw(SpriteBatch spriteBatch) { for (TileUnit row = 0; row < tiles.Count; row++) { for (TileUnit col = 0; col < tiles[Convert.ToInt32(row)].Count; col++) { if (tiles[Convert.ToInt32(row)][Convert.ToInt32(col)].sprite != null) { tiles[Convert.ToInt32(row)][Convert.ToInt32(col)].sprite.Draw(spriteBatch, Units.TileToGame(col), Units.TileToGame(row)); } } } }
public static Map CreateTestMap(ContentManager Content) { Map map = new Map(); map.backdrop = new FixedBackdrop("bkBlue", Content); TileUnit numRows = 15; TileUnit numCols = 20; map.tiles = new List <List <Tile> >(); for (int i = 0; i < numRows; i++) { map.backgroundTiles.Add(new List <Sprite>()); map.tiles.Add(new List <Tile>()); for (int j = 0; j < numCols; j++) { map.backgroundTiles[i].Add(null); map.tiles[i].Add(new Tile()); } } Sprite sprite = new Sprite(Content, "Stage/PrtCave", Units.TileToPixel(1), 0, Units.TileToPixel(1), Units.TileToPixel(1)); BitArray tmp = TileInfo.CreateTileType(); tmp.Set((int)TileInfo.TileFlag.Wall, true); Tile tile = new Tile(tmp, sprite); TileUnit row = 11; for (TileUnit col = 0; col < numCols; col++) { map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col)] = tile; } map.tiles[10][5] = tile; map.tiles[9][4] = tile; map.tiles[8][3] = tile; map.tiles[7][2] = tile; map.tiles[10][3] = tile; Sprite chainTop = new Sprite(Content, "Stage/PrtCave", Units.TileToPixel(11), Units.TileToPixel(2), Units.TileToPixel(1), Units.TileToPixel(1)); Sprite chainMiddle = new Sprite(Content, "Stage/PrtCave", Units.TileToPixel(12), Units.TileToPixel(2), Units.TileToPixel(1), Units.TileToPixel(1)); Sprite chainBottom = new Sprite(Content, "Stage/PrtCave", Units.TileToPixel(13), Units.TileToPixel(2), Units.TileToPixel(1), Units.TileToPixel(1)); map.backgroundTiles[8][2] = chainTop; map.backgroundTiles[9][2] = chainMiddle; map.backgroundTiles[10][2] = chainBottom; return(map); }
public void DrawBackground(SpriteBatch spriteBatch) { backdrop.Draw(spriteBatch); for (TileUnit row = 0; row < backgroundTiles.Count; row++) { for (TileUnit col = 0; col < backgroundTiles[Convert.ToInt32(row)].Count; col++) { if (backgroundTiles[Convert.ToInt32(row)][Convert.ToInt32(col)] != null) { backgroundTiles[Convert.ToInt32(row)][Convert.ToInt32(col)].Draw(spriteBatch, Units.TileToGame(col), Units.TileToGame(row)); } } } }
private FlashingPickup(ContentManager Content, GameUnit centerX, GameUnit centerY, TileUnit sourceX, TileUnit sourceY, Rectangle rectangle, int value, Pickup.PickupType type) { sprite = new Sprite(Content, SpriteName, Units.TileToPixel(sourceX), Units.TileToPixel(sourceY), Units.TileToPixel(1), Units.TileToPixel(1)); flashSprite = new Sprite(Content, SpriteName, Units.TileToPixel(sourceX + 1), Units.TileToPixel(sourceY), Units.TileToPixel(1), Units.TileToPixel(1)); dissipatingSprite = new Sprite(Content, SpriteName, Units.TileToPixel(DissipatingSourceX), Units.TileToPixel(DissipatingSourceY), Units.TileToPixel(1), Units.TileToPixel(1)); x = centerX - Units.HalfTile; y = centerY - Units.HalfTile; timer = new Timer(LifeTime, true); flashPeriod = StartPeriod; this.rectangle = rectangle; this.value = value; this.type = type; }
public static GameUnit TileToGame(TileUnit tile) { return(tile * TileSize); }
public static GameUnit TileToGame(TileUnit tile) { return tile * TileSize; }
public CollisionTile(TileUnit row, TileUnit col, BitArray tileType) { this.row = row; this.col = col; this.tileType = tileType; }
public void InitializeSprite(ContentManager Content, SpriteState spriteState) { TileUnit tileY = spriteState.horizontalFacing == SpriteState.HorizontalFacing.Left ? Convert.ToUInt32(CharacterFrame) : Convert.ToUInt32(1 + CharacterFrame); TileUnit tileX = 0; switch (spriteState.motionType) { case SpriteState.MotionType.Walking: tileX = Convert.ToUInt32(WalkFrame); break; case SpriteState.MotionType.Standing: tileX = Convert.ToUInt32(StandFrame); break; case SpriteState.MotionType.Interacting: tileX = Convert.ToUInt32(BackFrame); break; case SpriteState.MotionType.Jumping: tileX = Convert.ToUInt32(JumpFrame); break; case SpriteState.MotionType.Falling: tileX = Convert.ToUInt32(FallFrame); break; case SpriteState.MotionType.LastMotionType: break; } switch (spriteState.verticalFacing) { case SpriteState.VerticalFacing.Horizontal: break; case SpriteState.VerticalFacing.Up: tileX += Convert.ToUInt32(UpFrameOffset); break; case SpriteState.VerticalFacing.Down: tileX = Convert.ToUInt32(DownFrame); break; default: break; } if (spriteState.motionType == SpriteState.MotionType.Walking) { switch (spriteState.strideType) { case SpriteState.StrideType.StrideMiddle: break; case SpriteState.StrideType.StrideLeft: tileX += 1; break; case SpriteState.StrideType.StrideRight: tileX += 2; break; default: break; } sprites.Add(spriteState, new Sprite(Content, SpriteFilePath, Units.TileToPixel(tileX), Units.TileToPixel(tileY), Units.TileToPixel(1), Units.TileToPixel(1))); } else { sprites.Add(spriteState, new Sprite(Content, SpriteFilePath, Units.TileToPixel(tileX), Units.TileToPixel(tileY), Units.TileToPixel(1), Units.TileToPixel(1))); } }
public static PixelUnit TileToPixel(TileUnit tile) { return(GameToPixel(TileToGame(tile))); }
public static PixelUnit TileToPixel(TileUnit tile) { return GameToPixel(TileToGame(tile)); }
public static Map CreateSlopeTestMap(ContentManager Content) { Map map = new Map(); map.backdrop = new FixedBackdrop("bkBlue", Content); TileUnit numRows = 15; TileUnit numCols = 20; map.tiles = new List <List <Tile> >(); for (int i = 0; i < numRows; i++) { map.backgroundTiles.Add(new List <Sprite>()); map.tiles.Add(new List <Tile>()); for (int j = 0; j < numCols; j++) { map.backgroundTiles[i].Add(null); map.tiles[i].Add(new Tile()); } } BitArray tmp = TileInfo.CreateTileType(); tmp.Set((int)TileInfo.TileFlag.Wall, true); Tile wallTile = new Tile(tmp, new Sprite(Content, "Stage/PrtCave", Units.TileToPixel(1), 0, Units.TileToPixel(1), Units.TileToPixel(1))); Tile[] slopeTiles = new Tile[(int)SlopeTiles.NumSlopes]; for (int i = 0; i < (int)SlopeTiles.NumSlopes; i++) { BitArray a = TileInfo.CreateTileType(); a.Set((int)TileInfo.TileFlag.Slope, true); a.Set(i / 2 % 2 == 0 ? (int)TileInfo.TileFlag.LeftSlope : (int)TileInfo.TileFlag.RightSlope, true); a.Set(i / 4 == 0 ? (int)TileInfo.TileFlag.TopSlope : (int)TileInfo.TileFlag.BottomSlope, true); a.Set((i + 1) / 2 % 2 == 0 ? (int)TileInfo.TileFlag.TallSlope : (int)TileInfo.TileFlag.ShortSlope, true); slopeTiles[i] = new Tile(a, new Sprite(Content, "Stage/PrtCave", Units.TileToPixel((uint)(2 + i % 4)), Units.TileToPixel((uint)(i / 4)), Units.TileToPixel(1), Units.TileToPixel(1))); } TileUnit row = 11; TileUnit col; for (col = 0; col < numCols; col++) { map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col)] = wallTile; } row--; col = 0; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LBT]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBT]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LBS]; col++; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBS]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBT]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LBT]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LBS]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBS]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBT]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBS]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBT]; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col++)] = wallTile; col++; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RBS]; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; col = 0; row -= 3; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LTT]; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.LTS]; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RTS]; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = slopeTiles[(int)SlopeTiles.RTT]; map.tiles[Convert.ToInt32(row - 1)][Convert.ToInt32(col)] = wallTile; map.tiles[Convert.ToInt32(row)][Convert.ToInt32(col++)] = wallTile; return(map); }