public Tester(Game1 game) : base(game) { this.game = game; moveSpeed = 0; maxSpeed = 10 + Utilities.nextFloat() * 2; direction = new Vector3(0, (float)Math.PI, 0); rot = direction; currentTurnSpeed = 0; maxTurnSpeed = MathHelper.PiOver4 / (59f + Utilities.nextFloat() * 62f); //enemyModel = new EnemyModel(game.Content.Load<Model>(@"Models/Ship/shipBlock"), this); enemyModel = new EnemyModel(this); game.modelManager.addEnemy(enemyModel); List<Vector2> spawns = game.map.getEnemySpawn(); int value = Utilities.random.Next(spawns.Count); //essentially, if there's more than 1 spawn point, pick a random spawn point to spawn at. Vector2 spawn = new Vector2(spawns[value].X, spawns[value].Y); prevPosition = spawn; pos = new Vector3(makeCentreCoordinate(spawn.X), 4.5f, makeCentreCoordinate(spawn.Y)); pathfinder = new Pathfinder(game.map); coreLocation = new Point((int)game.map.getCoreLocation().X, (int)game.map.getCoreLocation().Y); path = pathfinder.findPath(new Point((int)spawn.X, (int)spawn.Y), coreLocation); target = pos; //System.Diagnostics.Debug.WriteLine(path); boundingBox = new OOBB(pos, direction, 1.5f, 1.5f); agroSphere = new CircleCollider(new Vector2(pos.X, pos.Z), 4f); health = 15; //weapons = new WeaponSystem(this); }
public Swarmer(Game1 game) : base(game) { this.game = game; moveSpeed = 0; maxSpeed = 10 + Utilities.nextFloat(); direction = new Vector3(0, (float)Math.PI, 0); rot = direction; currentTurnSpeed = 0; maxTurnSpeed = MathHelper.PiOver4 / (59f + Utilities.nextFloat() * 62f); state = State.goToBase; //enemyModel = new EnemyModel(game.Content.Load<Model>(@"Models/Ship/shipBlock"), this); enemyModel = new SwarmerModel(this); enemyType = 0; electroDamage = new ElectroDamage(this, game, enemyType); pyroDamage = new PyroDamage(this, game, enemyType); game.modelManager.addEnemy(enemyModel); List<Vector2> spawns = game.map.getEnemySpawn(); int value = Utilities.random.Next(spawns.Count); //essentially, if there's more than 1 spawn point, pick a random spawn point to spawn at. Vector2 spawn = new Vector2(spawns[value].X, spawns[value].Y); prevPosition = spawn; pos = new Vector3(makeCentreCoordinate(spawn.X), 3.5f, makeCentreCoordinate(spawn.Y)); switch (EnemyBehaviour.swarmerBehaviour) { case EnemyBehaviour.Behaviour.ShortestPathFirst: pathfinder = new Pathfinder(game.map); break; case EnemyBehaviour.Behaviour.AvoidTurretDamage: pathfinder = new PathfinderTurretAvoid(game.map); break; case EnemyBehaviour.Behaviour.AvoidPlayerDamage: pathfinder = new PathfinderPlayerAvoid(game.map); break; default: pathfinder = new Pathfinder(game.map); break; } coreLocation = new Point((int)game.map.getCoreLocation().X, (int)game.map.getCoreLocation().Y); path = pathfinder.findPath(new Point((int)spawn.X, (int)spawn.Y), coreLocation); target = pos; //System.Diagnostics.Debug.WriteLine(path); boundingBox = new OOBB(pos, direction, 1.5f, 1.5f); agroSphere = new CircleCollider(pos+direction*1.5f, 3); meleeCol = new CircleCollider(pos + direction, 2); cols.Add(new CircleCollider(pos, 0.6f)); health = 30; spawnEffect(); //weapons = new WeaponSystem(this); }
public void initializeGame(string level) { loadPercentage = 0; if (!loadedGameContent) { TextureManager.initialize(this); loadPercentage = 0.1f; ModelLibrary.initialize(this); loadPercentage = 0.2f; loadPercentage = 0.25f; loadedGameContent = true; } modelManager = new ModelManager(this); ship = new Ship(this); core = new BaseCore(this); camera = new Camera(this, new Vector3(40, 150, 10), Vector3.Zero, Vector3.Up); turretManager = new TurretManager(this); asteroidManager = new AsteroidManager(this); enemyManager = new EnemyManager(this); waveManager = new WaveManager(this); hud = new Hud(this, Content.Load<SpriteFont>(@"Hud/Venera40"), spriteBatch, GraphicsDevice); minigame = new Minigame(this); levelStats = new StatTracker(); loadPercentage = 0.65f; levelFileName = "dends"; //levelFileName = "map1-revis"; //levelFileName = "pac-man"; layout = new MapData(level); //layout = new MapData(@"Content/MapXml/Level2.xml"); //layout = new MapData(@"Content/MapXml/pac-man.xml"); //layout = new MapData(@"Content/MapXml/broktes.xml"); map = new Map(this, layout.getNodes()); bloom = new BloomComponent(this); Components.Add(ship); Components.Add(camera); Components.Add(modelManager); Components.Add(enemyManager); Components.Add(waveManager); Components.Add(core); Components.Add(turretManager); Components.Add(asteroidManager); Components.Add(minigame); //make sure the post process effects go second last, and the hud is absolute last //Components.Add(bloom); Components.Add(hud); loadPercentage = 1f; modelManager.makeStarField(); turretManager.Initialize(); //Debugging stuff for A* shortestPath = new Pathfinder(map); turretAvoid = new PathfinderTurretAvoid(map); System.Diagnostics.Debug.WriteLine("A new map has been loaded, our pathfinding algorithm is now finding the shortest path from each enemy spawn to the core"); List<Vector2> spawns = map.getEnemySpawn(); System.Diagnostics.Debug.WriteLine("There are " + spawns.Count() + " enemy spawn point(s) in this map"); int count = 1; foreach(Vector2 spawn in spawns) { List<Vector2> path = shortestPath.findPath(new Point((int)spawn.X, (int)spawn.Y), new Point((int)map.getCoreLocation().X, (int)map.getCoreLocation().Y)); System.Diagnostics.Debug.WriteLine("The path from spawn " + count + " is as follows:"); foreach(Vector2 nodePos in path) { System.Diagnostics.Debug.WriteLine(nodePos); } count++; } justLoadedContent = true; }