private void EndGame(Player winner) { if (backgroundSound.IsPlaying) { backgroundSound.Pause(); } humanControl.Stop(); // Build menu List <MenuIcon> options = new List <MenuIcon>(1); MenuIcon cancel = new MenuIcon(""); cancel.region = new GUIRegion(Recellection.windowHandle, new System.Windows.Rect(0, Globals.VIEWPORT_HEIGHT - 100, Globals.VIEWPORT_WIDTH, 100)); options.Add(cancel); Menu menu = new Menu(options); MenuController.LoadMenu(menu); Recellection.CurrentState = new EndGameView(!(winner is AIPlayer)); MenuController.GetInput(); MenuController.UnloadMenu(); }
/// <summary> /// Sets the weight of a fromBuilding by creating a menu and asking the user what weight the fromBuilding should have. /// </summary> /// <param name="b">The fromBuilding to set a weight for.</param> public void SetWeight(Building b) { Dictionary <MenuIcon, int> doptions = new Dictionary <MenuIcon, int>(8); doptions.Add(new MenuIcon(Language.Instance.GetString("NoPriority"), Recellection.textureMap.GetTexture(Globals.TextureTypes.NoPriority)), 0); doptions.Add(new MenuIcon(Language.Instance.GetString("LowPriority"), Recellection.textureMap.GetTexture(Globals.TextureTypes.LowPriority)), 50); doptions.Add(new MenuIcon(Language.Instance.GetString("HighPriority"), Recellection.textureMap.GetTexture(Globals.TextureTypes.HighPriority)), 100); doptions.Add(new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)), -1); Menu menu = new Menu(Globals.MenuLayout.FourMatrix, new List <MenuIcon>(doptions.Keys), Language.Instance.GetString("SetImportance")); MenuController.LoadMenu(menu); Recellection.CurrentState = MenuView.Instance; MenuIcon selection = MenuController.GetInput(); if (doptions[selection] >= 0) { SetWeight(b, doptions[selection]); } Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); }
private void ChangeVolumeMenu() { MenuIcon musicVolumeUp = new MenuIcon(Language.Instance.GetString("MusicVolumeUp")); MenuIcon musicVolumeDown = new MenuIcon(Language.Instance.GetString("MusicVolumeDown")); MenuIcon sfxVolumeUp = new MenuIcon(Language.Instance.GetString("EffectsVolumeUp")); MenuIcon sfxVolumeDown = new MenuIcon(Language.Instance.GetString("EffectsVolumeDown")); MenuIcon empty = new MenuIcon(""); MenuIcon done = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); List <MenuIcon> iconList = new List <MenuIcon>();; iconList.Add(musicVolumeUp); iconList.Add(empty); iconList.Add(musicVolumeDown); iconList.Add(sfxVolumeUp); iconList.Add(sfxVolumeDown); iconList.Add(done); Menu volumeMenu = new Menu(Globals.MenuLayout.NineMatrix, iconList, ""); MenuController.LoadMenu(volumeMenu); bool notFinished = true; while (notFinished) { MenuIcon response = MenuController.GetInput(); if (response == musicVolumeUp) { if (GameOptions.Instance.musicVolume <= 1.0f) { SoundsController.changeMusicVolume(GameOptions.Instance.musicVolume + 0.1f); } } else if (response == musicVolumeDown) { SoundsController.changeMusicVolume(GameOptions.Instance.musicVolume - 0.1f); } else if (response == sfxVolumeUp) { if (GameOptions.Instance.sfxVolume <= 1.0f) { SoundsController.changeEffectsVolume(GameOptions.Instance.sfxVolume + 0.1f); } } else if (response == sfxVolumeDown) { SoundsController.changeEffectsVolume(GameOptions.Instance.sfxVolume - 0.1f); } else if (response == done) { notFinished = false; } } MenuController.UnloadMenu(); }
public void ChangeOptions() { Menu optionsMenu = BuildMenu(); MenuController.LoadMenu(optionsMenu); Recellection.CurrentState = MenuView.Instance; bool notFinished = true; while (notFinished) { MenuIcon response = MenuController.GetInput(); if (response == mute) { if (GameOptions.Instance.musicMuted) { GameOptions.Instance.musicMuted = false; SoundsController.changeEffectsVolume(GameOptions.Instance.sfxVolume); SoundsController.changeMusicVolume(GameOptions.Instance.musicVolume); } else { GameOptions.Instance.musicMuted = true; SoundsController.changeEffectsVolume(0.0f); SoundsController.changeMusicVolume(0.0f); } } else if (response == volume) { ChangeVolumeMenu(); } else if (response == language) { ChangeLanguageMenu(); } else if (response == difficulty) { ChangeDifficultyMenu(); } else if (response == back) { notFinished = false; } else if (response == credits) { PlayCredits(); } } MenuController.UnloadMenu(); }
/// <summary> /// /// </summary> /// <param name="previousSelection"></param> private void TileMenu() { MenuIcon moveUnits = new MenuIcon(Language.Instance.GetString("MoveUnits"), null, Color.Black); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No), Color.Black); List <MenuIcon> menuIcons = new List <MenuIcon>(); if (theWorld.GetMap().GetTile(previousSelection.absPoint).GetUnits(playerInControll).Count > 0) { // Only show this options if there are units. menuIcons.Add(moveUnits); } menuIcons.Add(cancel); Menu buildingMenu = new Menu(Globals.MenuLayout.FourMatrix, menuIcons, Language.Instance.GetString("TileMenu"), Color.Black); MenuController.LoadMenu(buildingMenu); Recellection.CurrentState = MenuView.Instance; MenuIcon choosenMenu = MenuController.GetInput(); Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); if (choosenMenu == moveUnits) { Selection currSel = retrieveSelection(); if (!(currSel.state == State.TILE || currSel.state == State.BUILDING)) { return; } Tile from = theWorld.GetMap().GetTile(previousSelection.absPoint); SelectTile(theWorld.GetMap().GetTile(currSel.absPoint)); UnitController.MoveUnits(playerInControll, from, selectedTile, from.GetUnits().Count); } }
private void upgradeMenu() { Building building = selectedTile.GetBuilding(); MenuIcon speed = new MenuIcon(Language.Instance.GetString("UpgradeSpeed"), null, Color.Black); MenuIcon power = new MenuIcon(Language.Instance.GetString("UpgradePower"), null, Color.Black); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No), Color.Black); List <MenuIcon> menuIcons = new List <MenuIcon>(); menuIcons.Add(speed); menuIcons.Add(power); menuIcons.Add(cancel); Menu upgradeMenu = new Menu(Globals.MenuLayout.FourMatrix, menuIcons, Language.Instance.GetString("UpgradeMenu"), Color.Black); MenuController.LoadMenu(upgradeMenu); Recellection.CurrentState = MenuView.Instance; MenuIcon chosenMenu = MenuController.GetInput(); Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); if (chosenMenu == speed) { if (!playerInControll.unitAcc.PayAndUpgradeSpeed(building)) { //SoundsController.playSound("Denied"); } } else if (chosenMenu == power) { if (!playerInControll.unitAcc.PayAndUpgradePower(building)) { //SoundsController.playSound("Denied"); } } }
/// <summary> /// Builds a Menu for changing languages and processes the result. /// </summary> private void ChangeLanguageMenu() { String[] availableLanguages = Language.Instance.GetAvailableLanguages(); #if DEBUG LoggerFactory.GetLogger().Info("Available Languages:"); #endif Dictionary <MenuIcon, String> languageDic = new Dictionary <MenuIcon, String>(); foreach (String lang in availableLanguages) { #if DEBUG LoggerFactory.GetLogger().Info(lang); #endif MenuIcon aLanguage = new MenuIcon(lang); languageDic.Add(aLanguage, lang); } List <MenuIcon> iconList = new List <MenuIcon>(languageDic.Keys); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); iconList.Add(cancel); Menu langMenu = new Menu(Globals.MenuLayout.NineMatrix, iconList, Language.Instance.GetString("ChooseLanguage")); MenuController.LoadMenu(langMenu); Recellection.CurrentState = MenuView.Instance; MenuIcon choosenLang = MenuController.GetInput(); if (choosenLang != cancel) { Language.Instance.SetLanguage(languageDic[choosenLang]); LoggerFactory.GetLogger().Info("Language set to " + languageDic[choosenLang]); } MenuController.UnloadMenu(); }
private void ChangeDifficultyMenu() { Dictionary <MenuIcon, String> difficultyDic = new Dictionary <MenuIcon, String>(); #if DEBUG LoggerFactory.GetLogger().Info("Available difficulties:"); #endif foreach (String diff in System.Enum.GetNames(typeof(Globals.Difficulty))) { #if DEBUG LoggerFactory.GetLogger().Info(diff); #endif MenuIcon aDifficulty = new MenuIcon(diff); difficultyDic.Add(aDifficulty, diff); } List <MenuIcon> iconList = new List <MenuIcon>(difficultyDic.Keys); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); iconList.Add(cancel); Menu diffMenu = new Menu(Globals.MenuLayout.FourMatrix, iconList, Language.Instance.GetString("ChooseADifficulty")); MenuController.LoadMenu(diffMenu); Recellection.CurrentState = MenuView.Instance; MenuIcon choosenDiff = MenuController.GetInput(); if (choosenDiff != cancel) { GameOptions.Instance.difficulty = (Globals.Difficulty)Enum.Parse(typeof(Globals.Difficulty), difficultyDic[choosenDiff]); LoggerFactory.GetLogger().Info("Difficulty set to " + difficultyDic[choosenDiff]); } MenuController.UnloadMenu(); }
/// <summary> /// Loads the Building menu from a selection. /// Must have building on tile. /// </summary> /// <param name="theSelection"></param> private void BuildingMenu() { World.Map map = theWorld.GetMap(); Building building = selectedTile.GetBuilding(); if (building == null || building.owner != playerInControll) { return; } int toHeal = Math.Min(building.maxHealth - building.currentHealth, building.units.Count()); MenuIcon setWeight = new MenuIcon(Language.Instance.GetString("SetWeight")); MenuIcon buildCell = new MenuIcon(Language.Instance.GetString("BuildCell")); MenuIcon removeCell = new MenuIcon(Language.Instance.GetString("RemoveCell")); MenuIcon upgradeUnits = new MenuIcon(Language.Instance.GetString("UpgradeUnits") + " (" + playerInControll.unitAcc.GetUpgradeCost() + ")"); MenuIcon moveUnits = new MenuIcon(Language.Instance.GetString("MoveUnits")); MenuIcon repairCell = new MenuIcon(Language.Instance.GetString("RepairCell") + " (" + toHeal + ")"); MenuIcon setAggro = new MenuIcon(Language.Instance.GetString("SetAggro")); MenuIcon Cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); List <MenuIcon> menuIcons = new List <MenuIcon>(); menuIcons.Add(setWeight); menuIcons.Add(buildCell); menuIcons.Add(removeCell); menuIcons.Add(upgradeUnits); menuIcons.Add(moveUnits); menuIcons.Add(repairCell); menuIcons.Add(setAggro); menuIcons.Add(Cancel); Menu buildingMenu = new Menu(Globals.MenuLayout.NineMatrix, menuIcons, Language.Instance.GetString("BuildingMenu"), Color.Black); MenuController.LoadMenu(buildingMenu); Recellection.CurrentState = MenuView.Instance; MenuIcon choosenMenu = MenuController.GetInput(); Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); if (choosenMenu.Equals(setWeight)) { GraphController.Instance.SetWeight(building); } else if (choosenMenu.Equals(buildCell)) { tobii.SetFeedbackColor(Color.DarkGreen); Selection destsel; do { SetConstructionLines(BuildingController.GetValidBuildingInterval(selectedTile.position, theWorld)); destsel = retrieveSelection(); RemoveconstructionTileLines(BuildingController.GetValidBuildingInterval(selectedTile.position, theWorld)); }while (destsel.state != State.TILE); tobii.SetFeedbackColor(Color.White); SelectTile(map.GetTile(destsel.absPoint)); //TODO Add a check to see if the tile is a correct one. The diffrence between the selected tiles coordinates and the source building shall not exceed 3. if (selectedTile.GetBuilding() == null) { try { BuildingController.ConstructBuilding(playerInControll, selectedTile, building, theWorld); tobii.SetFeedbackColor(Color.White); } catch (BuildingController.BuildingOutOfRangeException) { logger.Debug("Caught BuildingOutOfRangeExcpetion"); } } else { //SoundsController.playSound("Denied"); tobii.SetFeedbackColor(Color.White); return; } } else if (choosenMenu.Equals(removeCell)) { BuildingController.RemoveBuilding(building); } else if (choosenMenu.Equals(upgradeUnits)) { upgradeMenu(); } else if (choosenMenu.Equals(moveUnits)) { tobii.SetFeedbackColor(Color.Red); Selection destsel = retrieveSelection(); if (destsel.state == State.BUILDING || destsel.state == State.TILE) { Tile selTile = map.GetTile(destsel.absPoint); UnitController.MoveUnits(playerInControll, selectedTile, selTile, building.GetUnits().Count); } tobii.SetFeedbackColor(Color.White); } else if (choosenMenu.Equals(repairCell)) { playerInControll.unitAcc.DestroyUnits(building.units, toHeal); building.Repair(toHeal); } else if (choosenMenu.Equals(setAggro)) { building.IsAggressive = !building.IsAggressive; building.UpdateAggressiveness(null, new Event <IEnumerable <Unit> >(building.GetUnits(), EventType.ADD)); } else if (choosenMenu.Equals(Cancel)) { return; } else { return; } }
public Selection retrieveSelection() { myLogger.Debug("Waiting for input..."); MenuIcon activatedMenuIcon = MenuController.GetInput(); Selection s = new Selection(); int x = 0; int y = 0; if (activatedMenuIcon.label != null) { String[] splitted = activatedMenuIcon.label.Split(REG_EXP); try { myLogger.Trace("Splitted string = " + splitted[0] + "\t" + splitted[1]); } catch (IndexOutOfRangeException) { throw new ArgumentException("Your argument is invalid, my beard is a windmill."); } x = Int32.Parse(splitted[0]); y = Int32.Parse(splitted[1]); } else { if (activatedMenuIcon == leftOff) { x = -1; } else if (activatedMenuIcon == rightOff) { x = 1; } else if (activatedMenuIcon == topOff) { y = -1; } else if (activatedMenuIcon == botOff) { y = 1; } s.state = State.OFFSCREEN; s.point = new Point(x, y); return(s); } Point absoluteCordinate = new Point(x + theWorld.LookingAt.X, y + theWorld.LookingAt.Y); if (activatedMenuIcon.labelColor.Equals(Color.NavajoWhite)) { if (theWorld.GetMap().GetTile(new Point(x + theWorld.LookingAt.X, y + theWorld.LookingAt.Y)) .GetBuilding() != null) { tobii.SetFeedbackColor(Color.Blue); s.state = State.BUILDING; s.point = new Point(x, y); s.absPoint = absoluteCordinate; } else { tobii.SetFeedbackColor(Color.White); s.state = State.TILE; s.point = new Point(x, y); s.absPoint = absoluteCordinate; } } // If we selected a scroll zone? else if (activatedMenuIcon.labelColor.Equals(Color.Chocolate)) { theWorld.LookingAt = new Point(theWorld.LookingAt.X + x, theWorld.LookingAt.Y + y); return(retrieveSelection()); } else { throw new ArgumentException("Your argument is invalid, my beard is a windmill."); } return(s); }
private void GameMenu() { MenuIcon endTurn = new MenuIcon(Language.Instance.GetString("EndTurn")); MenuIcon endGame = new MenuIcon(Language.Instance.GetString("EndGame")); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); List <MenuIcon> options = new List <MenuIcon>(4); options.Add(endTurn); options.Add(endGame); options.Add(cancel); Menu menu = new Menu(Globals.MenuLayout.FourMatrix, options, ""); MenuController.LoadMenu(menu); bool done = false; while (!done) { Recellection.CurrentState = MenuView.Instance; MenuIcon input = MenuController.GetInput(); if (input == endTurn) { finished = true; break; } else if (input == endGame) { List <MenuIcon> promptOptions = new List <MenuIcon>(2); MenuIcon yes = new MenuIcon(Language.Instance.GetString("Yes"), Recellection.textureMap.GetTexture(Globals.TextureTypes.Yes)); MenuIcon no = new MenuIcon(Language.Instance.GetString("No"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); promptOptions.Add(yes); promptOptions.Add(no); MenuController.LoadMenu(new Menu(Globals.MenuLayout.Prompt, promptOptions, Language.Instance.GetString("AreYouSureYouWantToEndTheGame"))); MenuIcon inp = MenuController.GetInput(); MenuController.UnloadMenu(); if (inp == yes) { // This should make the player lose :D List <Building> buildingsToRemove = new List <Building>(); foreach (Graph g in playerInControll.GetGraphs()) { foreach (Building b in g.GetBuildings()) { buildingsToRemove.Add(b); } } foreach (Building b in buildingsToRemove) { BuildingController.RemoveBuilding(b); } finished = true; break; } } else if (input == cancel) { break; } } Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); }
/// <summary> /// /// </summary> /// <param name="player"></param> public static void ConstructBuilding(Player player, Tile constructTile, Building sourceBuilding, World theWorld) { logger.Trace("Constructing a building for a player"); //TODO Somehow present a menu to the player, and then //use the information to ADD (not the document) the fromBuilding. MenuIcon baseCell = new MenuIcon(Language.Instance.GetString("BaseCell") + " (" + player.unitAcc.CalculateBuildingCostInflation(Globals.BuildingTypes.Base) + ")", Recellection.textureMap.GetTexture(Globals.TextureTypes.BaseBuilding), Color.Black); MenuIcon resourceCell = new MenuIcon(Language.Instance.GetString("ResourceCell") + " (" + player.unitAcc.CalculateBuildingCostInflation(Globals.BuildingTypes.Resource) + ")", Recellection.textureMap.GetTexture(Globals.TextureTypes.ResourceBuilding), Color.Black); MenuIcon defensiveCell = new MenuIcon(Language.Instance.GetString("DefensiveCell") + " (" + player.unitAcc.CalculateBuildingCostInflation(Globals.BuildingTypes.Barrier) + ")", Recellection.textureMap.GetTexture(Globals.TextureTypes.BarrierBuilding), Color.Black); MenuIcon aggressiveCell = new MenuIcon(Language.Instance.GetString("AggressiveCell") + " (" + player.unitAcc.CalculateBuildingCostInflation(Globals.BuildingTypes.Aggressive) + ")", Recellection.textureMap.GetTexture(Globals.TextureTypes.AggressiveBuilding), Color.Black); MenuIcon cancel = new MenuIcon(Language.Instance.GetString("Cancel"), Recellection.textureMap.GetTexture(Globals.TextureTypes.No)); List <MenuIcon> menuIcons = new List <MenuIcon>(); menuIcons.Add(baseCell); menuIcons.Add(resourceCell); menuIcons.Add(defensiveCell); menuIcons.Add(aggressiveCell); menuIcons.Add(cancel); Menu ConstructBuildingMenu = new Menu(Globals.MenuLayout.NineMatrix, menuIcons, Language.Instance.GetString("ChooseBuilding"), Color.Black); MenuController.LoadMenu(ConstructBuildingMenu); Recellection.CurrentState = MenuView.Instance; Globals.BuildingTypes building; MenuIcon choosenMenu = MenuController.GetInput(); Recellection.CurrentState = WorldView.Instance; MenuController.UnloadMenu(); if (choosenMenu.Equals(baseCell)) { building = Globals.BuildingTypes.Base; } else if (choosenMenu.Equals(resourceCell)) { building = Globals.BuildingTypes.Resource; } else if (choosenMenu.Equals(defensiveCell)) { building = Globals.BuildingTypes.Barrier; } else if (choosenMenu.Equals(aggressiveCell)) { building = Globals.BuildingTypes.Aggressive; } else { return; } // If we have selected a tile, and we can place a building at the selected tile... try { if (!AddBuilding(building, sourceBuilding, constructTile.position, theWorld, player)) { //SoundsController.playSound("Denied"); } } catch (BuildingOutOfRangeException bore) { throw bore; } }