@@ -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