Skip to content

Commit 249943a

Browse files
authored
Merge pull request #221 from Unity-Technologies/feature/hide_buttons_for_unimplemented_attacks
Bug fix: hide icons for unimplemented attacks
2 parents b432748 + c050464 commit 249943a

File tree

1 file changed

+23
-33
lines changed

1 file changed

+23
-33
lines changed

Assets/BossRoom/Scripts/Client/UI/HeroActionBar.cs

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,9 @@ public class HeroActionBar : MonoBehaviour
2020

2121
private BossRoom.Client.ClientInputSender m_InputSender;
2222

23-
// Currently we manually configure icons from the Material arrays stored on this class, and we select which array to use
24-
//from the CharacterClass inferred from the registered player GameObject. Eventually this can change so it is driven by
25-
//the data for each skill instead. Current logic will be better for demos until skills are fully implemented with icon data.
23+
// We find the Sprites to use by checking the Skill1, Skill2, and Skill3 members of our chosen CharacterClass
2624
private CharacterClass m_CharacterData;
2725

28-
// allow icons for each class to be configured
29-
[SerializeField]
30-
private Sprite[] m_TankIcons;
31-
32-
[SerializeField]
33-
private Sprite[] m_ArcherIcons;
34-
35-
[SerializeField]
36-
private Sprite[] m_RogueIcons;
37-
38-
[SerializeField]
39-
private Sprite[] m_MageIcons;
40-
4126
public void RegisterInputSender(Client.ClientInputSender inputSender)
4227
{
4328
if (m_InputSender != null)
@@ -47,27 +32,31 @@ public void RegisterInputSender(Client.ClientInputSender inputSender)
4732

4833
m_InputSender = inputSender;
4934
m_CharacterData = m_InputSender.GetComponent<NetworkCharacterState>().CharacterData;
50-
SetPlayerType(m_CharacterData.CharacterType);
35+
SetPlayerType(m_CharacterData);
5136
}
5237

53-
private void SetPlayerType(CharacterTypeEnum playerType)
38+
private void SetPlayerType(CharacterClass characterData)
5439
{
55-
if (playerType == CharacterTypeEnum.Tank)
56-
{
57-
SetButtonIcons(m_TankIcons);
58-
}
59-
else if (playerType == CharacterTypeEnum.Archer)
60-
{
61-
SetButtonIcons(m_ArcherIcons);
62-
}
63-
else if (playerType == CharacterTypeEnum.Mage)
64-
{
65-
SetButtonIcons(m_MageIcons);
66-
}
67-
else if (playerType == CharacterTypeEnum.Rogue)
40+
var sprites = new Sprite[]
6841
{
69-
SetButtonIcons(m_RogueIcons);
70-
}
42+
GetSpriteForAction(characterData.Skill1),
43+
GetSpriteForAction(characterData.Skill2),
44+
GetSpriteForAction(characterData.Skill3),
45+
};
46+
SetButtonIcons(sprites);
47+
}
48+
49+
/// <summary>
50+
/// Returns the Sprite for an Action, or null if no sprite is available
51+
/// </summary>
52+
private Sprite GetSpriteForAction(ActionType actionType)
53+
{
54+
if (actionType == ActionType.None)
55+
return null;
56+
var desc = GameDataSource.Instance.ActionDataByType[actionType];
57+
if (desc != null)
58+
return desc.Icon;
59+
return null;
7160
}
7261

7362
void SetButtonIcons(Sprite[] icons)
@@ -77,6 +66,7 @@ void SetButtonIcons(Sprite[] icons)
7766
if (i < icons.Length)
7867
{
7968
m_Buttons[i].image.sprite = icons[i];
69+
m_Buttons[i].gameObject.SetActive(icons[i] != null);
8070
}
8171
}
8272
}

0 commit comments

Comments
 (0)