/// <summary> /// Generate all the chunks in a radius around the given position. /// </summary> /// <param name="pPosition"></param> private void GenerateChunks(IVector2 pPosition) { for (int x = -generateRadius; x <= generateRadius; x++) { for (int y = -generateRadius; y <= generateRadius; y++) { if (!IsGenerated(pPosition.Clone().Add(new IVector2(x, y)))) { chunks.Add(new IVector2(x, y), new Chunk(tileWidth, tileHeight)); } } } }
/// <summary> /// Get the chunk at the given position. /// </summary> /// <param name="pPosition"></param> /// <returns></returns> public Chunk GetChunkAt(IVector2 pPosition) { return(chunks[pPosition]); }
/// <summary> /// return true if the given chunk is generated. /// </summary> /// <param name="pPosition"></param> /// <returns></returns> public bool IsGenerated(IVector2 pPosition) { return(chunks.ContainsKey(pPosition)); }
public Map(IVector2 pPosition, int pGenerateRadius = 2) { generateRadius = pGenerateRadius; GenerateChunks(pPosition ?? IVector2.zero); }
/// <summary> /// Move the player to the given chunk and position. /// </summary> /// <param name="pX"></param> /// <param name="pY"></param> /// <param name="pChunkX"></param> /// <param name="pChunkY"></param> public void MoveTo(int pX, int pY, IVector2 pTargetChunk) { tilePosition = new IVector2(pX, pY); mapPosition = pTargetChunk; }
/// <summary> /// Move the player to the given tile. /// </summary> /// <param name="pX"></param> /// <param name="pY"></param> public void MoveTo(int pX, int pY) { tilePosition = new IVector2(pX, pY); }
/// <summary> /// Move the player to the given tile. /// </summary> /// <param name="pX"></param> /// <param name="pY"></param> public void MoveTo(IVector2 pTargetTile) { tilePosition = pTargetTile; }
/// <summary> /// Move the player to the given chunk and position. /// </summary> /// <param name="pX"></param> /// <param name="pY"></param> /// <param name="pChunkX"></param> /// <param name="pChunkY"></param> public void MoveTo(IVector2 pTargetTile, IVector2 pTargetChunk) { tilePosition = pTargetTile; mapPosition = pTargetChunk; }
public IVector2 Subtract(IVector2 pVec) { _x -= pVec.x; _z -= pVec.z; return(this); }
public IVector2 Add(IVector2 pVec) { _x += pVec.x; _z += pVec.z; return(this); }
/// <summary> /// Get the tile at the given location. /// </summary> /// <param name="pPosition"></param> /// <returns></returns> public Tile GetTileAt(IVector2 pPosition) { return(tiles[pPosition]); }