/// <summary> /// Spawns the player on the 'ground' at 'startPoint' /// returns a reference to the Player so one can more easily take care of references. /// </summary> /* * public Creature SpawnPlayer(Coords startPoint) * { * //Player player = new Player(this, startPoint, this.IssueCreatureID()); * //this.PlayerReference = player; * return null; * } */ public Creature CreateCreature(Coords startPoint, Team team, CreatureGenerator generator, Brain creatureBrain, DrawerBattle myDrawer, InterfaceBattle myInterface) { Creature newguy = new Creature(this, startPoint, (UInt16)this.IssueCreatureID(), team, generator, creatureBrain); team.MemberRegister(newguy); for (int i = 0; i < generator.SpellEndowment.Length; ++i) { CreateSpellForCreature(newguy, generator.SpellEndowment[i], myDrawer, myInterface); } return(newguy); }
public Creature(MapBattle currentMap, Coords startPos, UInt16 ID, Team team, CreatureGenerator generator, Brain creatureBrain) : base(currentMap, startPos, ID, team, creatureBrain) { this._name = generator.name; this._myInventoryBackpack = new Inventory(this, Constants.InventorySize); this._myInventoryEquipped = new Inventory(this, (sbyte)InventoryType.COUNT); this._myBitmap = generator.creatureBitmaps; this._inhabitedMap = currentMap; this._inhabitedMap.MenagerieAddCreatureTo(ID, this); this._myVisibilityTracker = _inhabitedMap.MyVisibilityTracker; //this._myPathfinder = _inhabitedMap.MyPathfinder; this._creatureBrain = creatureBrain; _creatureBrain.MyCreature = this; this._fieldOfView = new BitArray[currentMap.BoundX]; for (int i = 0; i < currentMap.BoundX; ++i) { _fieldOfView[i] = new BitArray(currentMap.BoundY); } GenerateStats(generator.MainStatsMeans, generator.MainStatsDeviations); _APMoveCosts = generator.APMoveCosts; _APActionCosts = generator.APActionCosts; this._positionTile = startPos; this._inhabitedMap.TenancyMap[startPos.X, startPos.Y] = this; _myVisibilityTracker.VisibilityResidentAdd(startPos, this); //this._inhabitedMap.VacancyMap[startPos.X][startPos.Y] = false; this._myMoveRangeCalculator = new MoveRangeCalculator(this); _myMoveRangeCalculator.Update(); this.FieldOfViewUpdate(); //this._inhabitedMap.MyCollider.RegisterCreature(this); }