public RadialPuppet(RadialMenuControl control) : base(100, control) { _progress = this.MyAdd(RadialMenuUtility.Prefabs.NewCircle(96, RadialMenuUtility.Colors.ProgressRadial, RadialMenuUtility.Colors.ProgressRadial, Position.Absolute)); Add(RadialMenuUtility.Prefabs.NewCircle(65, RadialMenuUtility.Colors.RadialInner, RadialMenuUtility.Colors.OuterBorder, Position.Absolute)); Add(RadialMenuUtility.Prefabs.NewRadialText(out _text, 0, Position.Absolute)); _point = this.MyAdd(GeneratePoint()); ShowValue(Get); }
protected BaseAxisPuppet(RadialMenuControl control) : base(140, control) { var holder = this.MyAdd(new VisualElement { style = { position = Position.Absolute } }); holder.Add(RadialMenuUtility.Prefabs.NewBorder(70, 45)); holder.Add(RadialMenuUtility.Prefabs.NewBorder(70, 135)); holder.Add(RadialMenuUtility.Prefabs.NewBorder(70, 225)); holder.Add(RadialMenuUtility.Prefabs.NewBorder(70, 315)); Add(RadialMenuUtility.Prefabs.NewCircle(65, RadialMenuUtility.Colors.RadialInner, RadialMenuUtility.Colors.OuterBorder, Position.Absolute)); _labels = control.GetSubLabels(); }
/// <summary> /// Deselect a character, hiding the radial menu of options and resetting the battlegrid to normal highlighting. /// </summary> public void DeselectCharacter() { if (_state != BattleState.CharacterSelected) { return; } if (Gui.Screen.Desktop.Children.Contains(_radialMenuControl)) { Gui.Screen.Desktop.Children.Remove(_radialMenuControl); _radialMenuControl = null; } ResetState(); _state = BattleState.PlayerTurn; }
public TwoAxisPuppet(RadialMenuControl control) : base(control) { }
/// <summary> /// Process a character that has been selected by the player, showing a radial menu of options. /// </summary> /// <param name="character">The character whose options are to be displayed.</param> public void SelectCharacter(Combatant character) { // if they clicked on the character already being shown, assume they want to close the menu if (character == _selectedCharacter) { DeselectCharacter(); return; } // you can only click on your characters during your turn if (_state != BattleState.PlayerTurn) { return; } if (character.Faction != 0) { return; } if (_radialMenuControl != null) { Gui.Screen.Desktop.Children.Remove(_radialMenuControl); _radialMenuControl = null; } var menu = new RadialMenuControl(((IInputService)Game.Services.GetService(typeof(IInputService))).GetMouse()) { CenterX = (int)character.Avatar.Sprite.X + character.Avatar.Sprite.Width / 2 - 10, CenterY = (int)character.Avatar.Sprite.Y + character.Avatar.Sprite.Height / 2, OnExit = DeselectCharacter }; // move icon, plus event handlers var icon = new RadialButtonControl { ImageFrame = "move", Bounds = new UniRectangle(0, 0, 64, 64) }; if (character.CanMove) { icon.MouseOver += () => { if (!character.CanMove) { return; } _battleBoardLayer.SetTargettingGrid( character.GetMovementGrid(BattleBoard.GetAccessibleGrid(character.Faction)), new Grid(1, 1) ); }; icon.MouseOut += () => { if (_aimAbility == null) { _battleBoardLayer.ResetGrid(); } }; icon.MouseClick += () => { SelectAbilityTarget(character, Ability.Factory(Game, "move")); _aimTime = DateTime.Now; }; } else { // if they can't move, this icon does nothing icon.MouseOver = () => { }; icon.MouseOut = () => { }; icon.MouseClick = () => { }; icon.MouseRelease = () => { }; icon.Enabled = false; } menu.AddOption("move", icon); //// attack icon, plus handlers icon = new RadialButtonControl { ImageFrame = "attack", Bounds = new UniRectangle(0, 0, 64, 64) }; if (character.CanAct) { var ability = Ability.Factory(Game, "attack"); ability.Character = character; icon.MouseOver += () => { if (!character.CanAct) { return; } _battleBoardLayer.SetTargettingGrid( ability.GenerateTargetGrid(BattleBoard.Sandbag.Clone()), new Grid(1, 1) ); }; icon.MouseOut += () => { if (_aimAbility == null) { _battleBoardLayer.ResetGrid(); } }; icon.MouseRelease += () => { SelectAbilityTarget(character, ability); _aimTime = DateTime.Now; }; } else { // if they can't act, this icon does nothing icon.MouseOver = () => { }; icon.MouseOut = () => { }; icon.MouseClick = () => { }; icon.MouseRelease = () => { }; icon.Enabled = false; } menu.AddOption("attack", icon); //// special abilities icon, plus event handlers icon = new RadialButtonControl { ImageFrame = "special", Bounds = new UniRectangle(0, 0, 64, 64) }; if (character.CanAct) { icon.MouseRelease += () => SelectSpecialAbility(character); } else { // if they can't act, this icon does nothing icon.MouseOver = () => { }; icon.MouseOut = () => { }; icon.MouseClick = () => { }; icon.MouseRelease = () => { }; icon.Enabled = false; } menu.AddOption("special", icon); icon = new RadialButtonControl { ImageFrame = "item", Bounds = new UniRectangle(0, 0, 64, 64), Enabled = false }; menu.AddOption("item", icon); _radialMenuControl = menu; Gui.Screen.Desktop.Children.Add(_radialMenuControl); _selectedCharacter = character; _state = BattleState.CharacterSelected; }
protected BasePuppet(float size, RadialMenuControl control) { Control = control; RadialMenuUtility.Prefabs.SetCircle(this, size, RadialMenuUtility.Colors.RadialMiddle, RadialMenuUtility.Colors.OuterBorder); }