public Creature(Map currentMap, Coords startPos, UInt16 ID, Team team, CreatureGenerator generator) { this._name = generator.name; this._myTeam = team; this._myInventory = new Inventory(this); this._myBitmap = generator.creatureBitmaps; this._radiusX = Constants.StandardUnitRadiusX; this._radiusY = Constants.StandardUnitRadiusY; this._inhabitedMap = currentMap; this._uniqueID = ID; this._inhabitedMap.MenagerieAddCreatureTo(ID, this); this._myCollider = _inhabitedMap.MyCollider; this._myVisibilityTracker = _inhabitedMap.MyVisibilityTracker; this._myPathfinder = _inhabitedMap.MyPathfinder; this._creatureBrain = new BrainRandomWalk(); _creatureBrain.MyCreature = this; this._fieldOfView = new BitArray[currentMap.BoundX]; for (int i = 0; i < currentMap.BoundX; ++i) { _fieldOfView[i] = new BitArray(currentMap.BoundY); } _statHPMax = generator.StatHPMax; _statHP = _statHPMax; _statDamage = generator.StatDamage; _statArmor = generator.StatArmor; _statSightRange = generator.StatSight; _statAttackTime = generator.StatAttackTime; _statAttackRange = generator.StatAttackRange; _moveSpeedMax = generator.StatMoveSpeed; this._moveSpeedCurrent = 0; _moveAcceleration = _moveSpeedMax / 10; Tile temp = this._inhabitedMap.GetTile(startPos); this.PositionDouble = new Vector(temp.PixelTopLeft() + new Coords(CoordsType.Pixel, _radiusX, _radiusY)); this._inhabitedMap.MyCollider.RegisterCreature(this); }
// Constructs an xSize by ySize map. Default Tile set to TileBasicFloor. public Map(UInt16 xSize, UInt16 ySize, Int32 seed) { // creates and fills the tile array this._xMax = xSize; this._yMax = ySize; this._pixelMaxX = (UInt32)(xSize * Constants.TileSize); this._pixelMaxY = (UInt32)(ySize * Constants.TileSize); _tiles = new Tile[xSize, ySize]; _visibilityMap = new float[xSize, ySize]; // tiles = new TileBasicFloor[xSize, ySize]; for (Int32 i = 0; i < xSize; i++) { for (Int32 j = 0; j < ySize; j++) { _tiles[i, j] = new TilePassable(this, new Coords(CoordsType.Tile, i, j), Constants.TileGeneratorGrass); } } this._passabilityMap = new BitArray[xSize]; for (int i = 0; i < xSize; ++i) { _passabilityMap[i] = new BitArray(ySize); } this._myCollider = new Collider(xSize, ySize, Constants.TileSize, Constants.TileSize, _passabilityMap); this._myVisibilityTracker = new VisiblityTracker(xSize, ySize, Constants.TileSize, Constants.TileSize, _passabilityMap, _visibilityMap); this._myPathfinder = new Pathfinder(_passabilityMap); // initializes the random number generator associated with this map this._randomator = new RandomStuff(seed); }
// Creates the creature at startPos on the Map public Creature(Map currentMap, SpriteBatchCreature myBitmap, Coords startPos, UInt32 ID, UInt16 sightRange, Brain mind) { this._myInventory = new Inventory(this); this._myBitmap = myBitmap; this._radiusX = Constants.StandardUnitRadiusX; this._radiusY = Constants.StandardUnitRadiusY; this._statSightRange = sightRange; this._inhabitedMap = currentMap; this._myCollider = _inhabitedMap.MyCollider; this._myVisibilityTracker = _inhabitedMap.MyVisibilityTracker; this._myPathfinder = _inhabitedMap.MyPathfinder; this._uniqueID = ID; this._inhabitedMap.MenagerieAddCreatureTo(ID, this); this._creatureBrain = mind; mind.MyCreature = this; this._fieldOfView = new BitArray[currentMap.BoundX]; for (int i = 0; i < currentMap.BoundX; ++i) { _fieldOfView[i] = new BitArray(currentMap.BoundY); } Tile temp = this.InhabitedMap.GetTile(startPos); this.PositionDouble = new Vector(temp.PixelTopLeft() + new Coords(CoordsType.Pixel, _radiusX, _radiusY)); /* this.MyBody = new UInt16[] {Constants.StatsMax, Constants.StatsMax, Constants.StatsMax, Constants.StatsMax, Constants.StatsMax, Constants.StatsMax}; */ this._inhabitedMap.MyCollider.RegisterCreature(this); this._moveSpeedCurrent = 0; }