Beispiel #1
0
 // Update is called once per frame
 void Update()
 {
     // make the uis if we havent done so yet, after the manager has called Start()
     if (uis.Count == 0)
     {
         uis = new List <CharacterUI>();
         if (prefab.GetComponent <CharacterUI>().FloatingMenu == true)
         {
             for (int i = 0; i < manager.characters.Count; i++)
             {
                 GameObject  go  = Instantiate(prefab.gameObject, transform);
                 CharacterUI tmp = go.GetComponent <CharacterUI>();
                 uis.Add(tmp);
                 tmp.SetCharacter(manager.characters[i]);
             }
         }
         else
         {
             //creates only 1 for the menu
             GameObject  go  = Instantiate(prefab.gameObject, transform);
             CharacterUI tmp = go.GetComponent <CharacterUI>();
             uis.Add(tmp);
             tmp.SetCharacter(manager.characters[0]);
         }
     }
 }
        //lets you right click the portraits to change the active player too
        private void HudCharacterClick()
        {
            Debug.Log("hud called");
            PointerEventData pointer = new PointerEventData(EventSystem.current);

            pointer.position = Input.mousePosition;
            EventSystem.current.RaycastAll(pointer, hits);
            //loops over all hits, if the gameobject has a charaUI component it will set only that character to active/change the animations
            foreach (RaycastResult hit in hits)
            {
                CharacterUI charaUi = hit.gameObject.GetComponentInParent <CharacterUI>();
                if (charaUi != null && !charaUi.character.IsDead)
                {
                    Debug.Log("in loop");
                    foreach (Character chara in manager.characters)
                    {
                        chara.ActivePlayer = false;
                    }

                    manager.battleUIController.FloatingStats.UpdateHalos();

                    hit.gameObject.GetComponentInParent <CharacterUI>().character.ActivePlayer = true;
                    //turing halo on for active playert
                    foreach (Character chara in manager.characters)
                    {
                        if (chara.ActivePlayer == true && charaUi.character == chara && charaUi.Halo != null)
                        {
                            charaUi.Halo.gameObject.SetActive(true);
                        }
                    }
                    for (int i = 0; i < manager.characters.Count; i++)
                    {
                        manager.MoveSetCheck(i);
                    }
                }
            }
        }