public UnitPanel(Func <Actor> GetActor, Dictionary <string, Sprite> uiSprites) { this.uiSprites = uiSprites; Padding = new Point(10, 4); this.SetAnchor(AnchorX.Left, AnchorY.Bottom); this.SetLayoutSize(LayoutSize.FixedSize, LayoutSize.WrapContent).SetFixedWidth(250); getStandardSprite = true; this.GetActor = GetActor; movesLeft = new KeyValueText("movesLeft", "1/1"); actionsLeft = new KeyValueText("actionsLeft", "1/1"); ammo = new KeyValueText("ammo", "3/4"); damage = new KeyValueText("damage", "1"); health = new KeyValueText("health", "1"); moveRange = new KeyValueText("moveRange", "1"); skillRange = new KeyValueText("skillRange", "1"); buttonTooltip = new Text("MOvement"); buttonTooltip.SetFontSize(FontSize.Small); buttonTooltip.SetColor(Color.LightSlateGray); HorizontalLayout buttonLayout = new HorizontalLayout(); buttons = new Button[(int)Skills.Num]; buttonLayout.Padding = new Point(6, 6); buttonLayout.SetMargin(10).SetLayoutSize(LayoutSize.MatchParent, LayoutSize.FixedSize); buttonLayout.SetFixedHeight(44); for (int i = 1; i < (int)Skills.Num; i++) { Skills s = (Skills)i; string sprite = s.ToString(); string otherSprite = s.ToString() + "Selected"; Button b = new Button(uiSprites[sprite]); b.OnMouseEnter = () => buttonTooltip.SetText(s.ToString()); b.OnMouseExit = () => buttonTooltip.SetText(""); b.OnMouseClick = () => SelectSkill(s); buttons[i] = b; buttonLayout.AddChild(b); } AddChild(actionsLeft, movesLeft, health, ammo, damage, moveRange, skillRange, buttonTooltip, buttonLayout); }
private void CreateUI() { mainMenu = new MainMenu(Content, StartNewGame, game.Exit); mainMenuCanvas.AddChild(mainMenu); mainMenuCanvas.Finish(); Dictionary <string, SoundEffect> sounds = new Dictionary <string, SoundEffect>() { { "level0Intro", Content.Load <SoundEffect>("Sounds/level0Intro") }, { "level1Intro", Content.Load <SoundEffect>("Sounds/level1Intro") }, { "level2Intro", Content.Load <SoundEffect>("Sounds/level2Intro") }, { "gameFinished", Content.Load <SoundEffect>("Sounds/gameFinished") }, { "gameOver", Content.Load <SoundEffect>("Sounds/gameOver") }, }; transitionText = new MapTransitionText(TransitionContinueClicked, BackToMenu, game.Exit, sounds); transitionCanvas.AddChild(transitionText); transitionCanvas.Finish(); mapCanvas.AddChild(new UnitPanel(() => { if (currentMap != null) { return(currentMap.GetSelectedUnit()); } else { return(null); } }, mapCanvas.sprites)); mapCanvas.AddChild(new EnemyInfoPanel(() => { if (currentMap != null) { return(currentMap.GetMouseOverEnemy()); } else { return(null); } })); damagePopup = new DamagePopup(camera); Map.damagePopup = damagePopup; mapCanvas.AddChild(damagePopup); HorizontalLayout mainButtons = new HorizontalLayout(); mainButtons.SetMargin(6).Padding = new Point(6, 6); mainButtons.SetLayoutSize(LayoutSize.WrapContent, LayoutSize.FixedSize); mainButtons.SetFixedHeight(44); mainButtons.SetFixedWidth(270); mainButtons.sprite = mapCanvas.sprites["panel"]; Button menuButton = new Button(mapCanvas.sprites["menu"]); menuButton.SetFixedSize(32, 32); Button musicButton = new Button(Config.musicPlaying ? mapCanvas.sprites["musicOn"] : mapCanvas.sprites["musicOff"]); musicButton.SetFixedSize(32, 32); musicButton.OnMouseClick = () => { Config.musicPlaying = !Config.musicPlaying; if (Config.musicPlaying) { musicButton.sprite = mapCanvas.sprites["musicOn"]; } else { musicButton.sprite = mapCanvas.sprites["musicOff"]; } }; Button nextTurnButton = new Button(mapCanvas.sprites["nextTurn"]); nextTurnButton.SetFixedSize(32, 32); nextTurnButton.OnMouseClick = () => { if (currentMap != null) { currentMap.EndTurn(); } }; KeyValueText turnText = new KeyValueText("turns", "12"); turnText.SetLayoutSizeForBoth(LayoutSize.MatchParent); turnText.SetValueTextUpdate(() => { return(currentMap != null ? currentMap.turnCounter.ToString() : ""); }); mainButtons.AddChild(menuButton, musicButton, nextTurnButton, turnText); mapCanvas.AddChild(mainButtons); EnemyTurnSign enemyTurnSign = new EnemyTurnSign(() => { return(currentMap); }); mapCanvas.AddChild(enemyTurnSign); ControlsPanel controls = new ControlsPanel(mapCanvas.sprites); mapCanvas.AddChild(controls); mapCanvas.Finish(); }