IEnumerator WaitSceneIsLoadedFight(NetworkIdentity groupNI) { //Get EnnemyGroupMain var groupMain = groupNI.GetComponent <EnnemyGroup>(); //Start a loading screen and wait until the fight scene is loaded m_HUDManager.StartLoadScreen(); Scene scene = SceneManager.GetSceneByName("Fight"); yield return(new WaitUntil(() => scene.isLoaded)); SceneManager.SetActiveScene(scene); //Set Player to fight mode GameManager.PlayerManager.ChangeStrategy(PlayerManager.PlayerStartegy.Fight); GameManager.PlayerManager.SubscribeToNewTurnEvents(m_HUDManager.SwitchableMana.SwitchableF.MakeLeftTopIconAppear); GameManager.PlayerManager.GetPlayerFight().SubscribeToSpellCooldownEvents(m_HUDManager.SwitchableMana.SwitchableF.SpellAndControlsUI.HandleSpellCooldown); //Set ennemies var parent = new GameObject().transform; parent.name = groupNI.transform.name; EnnemyGroup groupFight = parent.gameObject.AddComponent <EnnemyGroup>(); groupFight.Position = new Vector2(0, 0); groupFight.ActivateFightMode(); NetworkIdentity niGroup = parent.gameObject.AddComponent <NetworkIdentity>(); niGroup.SetControllerID(groupNI.GetID()); niGroup.SetSocketReference(groupNI.GetSocket()); groupNI.GetSocket().ModifyNetworkIdentityOfNetworkObject(groupNI.GetID(), niGroup); foreach (var ennemy in groupMain.Ennemies) { ennemy.gameObject.SetActive(true); ennemy.transform.parent = parent; ennemy.ChangeStrategy(EnnemyManager.PossibleStrategy.Fight); ennemy.SubscribeToNewTurnEvents(m_HUDManager.SwitchableMana.SwitchableF.MakeLeftTopIconAppear); groupFight.AddToEnnemyGroup(ennemy); } //Activate HUD for battle m_HUDManager.SwitchableMana.SwitchToFight(GameManager.PlayerManager, groupFight); //Stop load screen and unload main scene m_HUDManager.StopLoadScreen(); SceneManager.UnloadSceneAsync("Main"); }
public void PopulateTurnInFightBar(PlayerManager player, EnnemyGroup ennemyGroup) { List <Characters> characters = new List <Characters>(); characters.Add(player); foreach (var ennemy in ennemyGroup.Ennemies) { characters.Add(ennemy); } m_turnInFight.PopulateTurnInFightBar(characters); }
public void SwitchToFight(PlayerManager player, EnnemyGroup ennemyGroup) { if (!m_isCurrentViewMain) { return; } m_isCurrentViewMain = false; m_switchableFight.PopulateTurnInFightBar(player, ennemyGroup); m_switchableMain.gameObject.SetActive(false); m_switchableFight.gameObject.SetActive(true); }
/// <summary> /// Set the enneny as Ennemygroup or Ennemy and set their datas /// </summary> /// <param name="niEnnemyGroup"></param> /// <param name="niEnnemies"></param> /// <param name="data">All the data gotten from the server</param> public static void SetAnEnnemy(NetworkIdentity niEnnemyGroup, List <NetworkIdentity> niEnnemies, object[] data) { //Get needed values in data var dataGroup = data[0] as Dictionary <string, object>; var dataEnnemiesAsList = dataGroup["monsters"] as Dictionary <string, object>; var dataPosGroup = dataGroup["position"] as Dictionary <string, object>; var dataEnnemies = new List <Dictionary <string, object> >(); var dataEnnemiesCaracteristic = new List <Dictionary <string, object> >(); foreach (var obj in dataEnnemiesAsList) { dataEnnemies.Add(obj.Value as Dictionary <string, object>); dataEnnemiesCaracteristic.Add(dataEnnemies[dataEnnemies.Count - 1]["baseCharacteristic"] as Dictionary <string, object>); } //Destroy the component Ennemy and create a component EnnemyGroup DestroyImmediate(niEnnemyGroup.GetComponent <EnnemyManager>()); EnnemyGroup ennemyGroup = niEnnemyGroup.gameObject.AddComponent <EnnemyGroup>(); ennemyGroup.ActivateMainMode(); //Create each EnnemyManager EnnemyManager ennemy; Dictionary <string, object> spellsAsList; Dictionary <string, object> dataPosFight; for (int i = 0; i < dataEnnemies.Count; i++) { //Add EnnemyManager ennemy = niEnnemies[i].gameObject.GetComponent <EnnemyManager>(); ennemy.m_character = Characters.Character.ENNEMY; //Set Stats ennemy.SetStats( dataEnnemiesCaracteristic[i]["name"] as string, (int)(double)dataEnnemies[i]["health"], (int)(double)dataEnnemies[i]["actionPoints"], (int)(double)dataEnnemies[i]["movementPoints"] ); //Find the icon in the resources ennemy.FindIconInResources(); //Set SpellTree spellsAsList = dataEnnemies[i]["spells"] as Dictionary <string, object>; ennemy.SetSpellTree(spellsAsList); ennemyGroup.AddToEnnemyGroup(ennemy); ennemy.gameObject.SetActive(false); //Set the ennemy's position dataPosFight = dataEnnemies[i]["positionArrayFight"] as Dictionary <string, object>; float xEnnemy = (float)(double)dataPosFight["x"]; float yEnnemy = (float)(double)dataPosFight["y"]; ennemy.m_positionArrayFight = new Vector2(xEnnemy, yEnnemy); ennemy.ChangeStrategy(EnnemyManager.PossibleStrategy.Main); } //Set the EnnemyGroup position float x = (float)(double)dataPosGroup["x"]; float z = (float)(double)dataPosGroup["z"]; ennemyGroup.Position = new Vector2(x, z); }