public BattleGUI(GameModel gameModel, List <UnitModel> units) { _gameModel = gameModel; _units = units; _font = _gameModel.Content.Load <SpriteFont>("GUI/Fonts/Font"); SelectedUnitId = _units.First().Id; var content = gameModel.Content; var etTexture = content.Load <Texture2D>("GUI/Battle/EndTurn"); var etPosition = new Vector2((BaseGame.ScreenWidth - etTexture.Width) - 10, (BaseGame.ScreenHeight - etTexture.Height) - 10); _endTurnButton = new Button(etTexture) { Position = etPosition, }; var cpTexture = content.Load <Texture2D>("GUI/Battle/ControlPanel"); _controlPanel = new Sprite(cpTexture) { Position = new Vector2(10, BaseGame.ScreenHeight - cpTexture.Height - 10), }; foreach (var unit in units) { foreach (var ability in unit.Abilities.Get()) { if (!_abilityIconTextures.ContainsKey(unit.Id)) { _abilityIconTextures.Add(unit.Id, new List <Texture2D>()); } _abilityIconTextures[unit.Id].Add(content.Load <Texture2D>("GUI/Battle/AbilityIcons/" + ability.Name)); } } _targetIconTextures.Add("Enemy", content.Load <Texture2D>("GUI/Battle/TargetIcons/Enemy")); _targetIconTextures.Add("Friendly", content.Load <Texture2D>("GUI/Battle/TargetIcons/Friendly")); _abilityIconClickedTexture = content.Load <Texture2D>("GUI/Battle/AbilityIcon_Clicked"); UnitsGroup = new ButtonGroup() { CurrentIndex = 0, }; UnitsGroup.SetButtons(GetUnitButtons); }