Пример #1
0
    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");
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
    /// <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);
    }