//----------------------------------------------------------------------------- // Drop Lists Loading //----------------------------------------------------------------------------- public static void LoadDrops(DropManager dropManager, RewardManager rewardManager) { DropList dropsRupees = dropManager.CreateDropList("rupees"); dropsRupees.AddDrop(3, rewardManager.GetReward("rupees_1")); dropsRupees.AddDrop(1, rewardManager.GetReward("rupees_5")); DropList dropsHearts = dropManager.CreateDropList("hearts"); dropsHearts.AddDrop(4, rewardManager.GetReward("hearts_1")); dropsHearts.AddDrop(1, typeof(CollectibleFairy)); DropList dropsSeeds = dropManager.CreateDropList("seeds"); dropsSeeds.AddDrop(1, rewardManager.GetReward("ammo_ember_seeds_5")); dropsSeeds.AddDrop(1, rewardManager.GetReward("ammo_scent_seeds_5")); dropsSeeds.AddDrop(1, rewardManager.GetReward("ammo_pegasus_seeds_5")); dropsSeeds.AddDrop(1, rewardManager.GetReward("ammo_gale_seeds_5")); dropsSeeds.AddDrop(1, rewardManager.GetReward("ammo_mystery_seeds_5")); DropList dropsAmmo = dropManager.CreateDropList("ammo"); dropsAmmo.AddDrop(1, rewardManager.GetReward("ammo_bombs_5")); dropsAmmo.AddDrop(1, rewardManager.GetReward("ammo_arrows_5")); dropsAmmo.AddDrop(5, dropsSeeds); // Drops that are created by default for tiles. DropList dropsDefault = dropManager.CreateDropList("default", 1, 3); dropsDefault.AddDrop(50, dropsAmmo); dropsDefault.AddDrop(46, dropsRupees); dropsDefault.AddDrop(25, dropsHearts); // Drops that are created when a ground tile is dug up. DropList dropsDigRupees = new DropList(); dropsDigRupees.AddDrop(25, dropsRupees); dropsDigRupees.AddDrop(1, rewardManager.GetReward("rupees_100")); DropList dropsDigMonsters = new DropList(); dropsDigMonsters.AddDrop(5, typeof(MonsterBeetle)); dropsDigMonsters.AddDrop(2, typeof(MonsterRope)); DropList dropsDig = dropManager.CreateDropList("dig", 1, 4); dropsDig.AddDrop(46, dropsDigRupees); dropsDig.AddDrop(25, dropsHearts); dropsDig.AddDrop(7, dropsDigMonsters); //DropList dropsDig = dropManager.CreateDropList("dig", 1, 1); //dropsDig.AddDrop(1, typeof(MonsterRope)); //dropsDig.AddDrop(1, typeof(MonsterBeetle)); //dropsDig.AddDrop(1, typeof(MonsterLynel)); }
//----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- public GameControl(GameManager gameManager) { this.gameManager = gameManager; this.roomStateStack = null; this.roomControl = null; this.world = null; this.player = null; this.hud = null; this.inventory = null; this.rewardManager = null; this.dropManager = null; this.isAdvancedGame = false; this.updateRoom = true; this.animateRoom = true; this.menuWeapons = null; this.menuSecondaryItems = null; this.menuEssences = null; this.scriptRunner = null; }
// Start a new game. public void StartGame() { roomTicks = 0; // Setup the player beforehand so certain classes such as the HUD can reference it player = new Player(); inventory = new Inventory(this); menuWeapons = new MenuWeapons(gameManager); menuSecondaryItems = new MenuSecondaryItems(gameManager); menuEssences = new MenuEssences(gameManager); menuWeapons.PreviousMenu = menuEssences; menuWeapons.NextMenu = menuSecondaryItems; menuSecondaryItems.PreviousMenu = menuWeapons; menuSecondaryItems.NextMenu = menuEssences; menuEssences.PreviousMenu = menuSecondaryItems; menuEssences.NextMenu = menuWeapons; mapDungeon = new ScreenDungeonMap(gameManager); GameData.LoadInventory(inventory, true); inventory.ObtainAmmo("ammo_ember_seeds"); inventory.ObtainAmmo("ammo_scent_seeds"); inventory.ObtainAmmo("ammo_pegasus_seeds"); inventory.ObtainAmmo("ammo_gale_seeds"); inventory.ObtainAmmo("ammo_mystery_seeds"); hud = new HUD(this); hud.DynamicHealth = player.Health; rewardManager = new RewardManager(this); GameData.LoadRewards(rewardManager); dropManager = new DropManager(this); GameData.LoadDrops(dropManager, rewardManager); // Create the script runner. scriptRunner = new ScriptRunner(this); // Create the room control. roomControl = new RoomControl(); gameManager.PushGameState(roomControl); // Load the world. //WorldFile worldFile = new WorldFile(); //world = worldFile.Load("Content/Worlds/temp_world.zwd"); // Begin the room state. if (gameManager.LaunchParameters.Length > 0) { LoadWorld(gameManager.LaunchParameters[0]); if (gameManager.LaunchParameters.Length > 1 && gameManager.LaunchParameters[1] == "-test") { // Launch parameters can define player's start position. int startLevel = Int32.Parse(gameManager.LaunchParameters[2]); int startRoomX = Int32.Parse(gameManager.LaunchParameters[3]); int startRoomY = Int32.Parse(gameManager.LaunchParameters[4]); int startPlayerX = Int32.Parse(gameManager.LaunchParameters[5]); int startPlayerY = Int32.Parse(gameManager.LaunchParameters[6]); player.SetPositionByCenter(new Point2I(startPlayerX, startPlayerY) * GameSettings.TILE_SIZE + new Point2I(8, 8)); player.MarkRespawn(); roomControl.BeginRoom(world.Levels[startLevel].Rooms[startRoomX, startRoomY]); } else { player.SetPositionByCenter(world.StartTileLocation * GameSettings.TILE_SIZE + new Point2I(8, 8)); player.MarkRespawn(); roomControl.BeginRoom(world.StartRoom); } } else { //WorldFile worldFile = new WorldFile(); //world = worldFile.Load("temp_world.zwd"); LoadWorld(GameDebug.CreateTestWorld()); player.SetPositionByCenter(world.StartTileLocation * GameSettings.TILE_SIZE + new Point2I(8, 8)); player.MarkRespawn(); roomControl.BeginRoom(world.StartRoom); } roomStateStack = new RoomStateStack(new RoomStateNormal()); roomStateStack.Begin(this); if (!roomControl.Room.IsHiddenFromMap) lastRoomOnMap = roomControl.Room; AudioSystem.MasterVolume = 0.04f; // The way David likes it. }