コード例 #1
0
    void InstantiateMonster()
    {
        monsterGroupFighter = new GroupMonsterFighter();

        GameObject   prefab = prefabMonster;
        Fighter      fighter;
        CreatureType creatureType = CreatureType.Monster;

        GameObject       monstersPositionParent = GameObject.FindGameObjectWithTag("MonstersPosition");
        List <Transform> monstersPosition       = new List <Transform>();

        foreach (Transform child in monstersPositionParent.transform)
        {
            monstersPosition.Add(child);
        }


        for (int i = 0; i < nbCreaturePerGroup && i < caravane.lFighters.Count; i++)
        {
            fighter = caravane.lFighters[i];
            fighter.bTryToescape = false;
            GameObject g = Instantiate(prefab, monstersPosition[i].position, Quaternion.Euler(0, 90, 0)) as GameObject;

            GameObject mo;

            GameObject model = creaturePrefabManager.GetMonster(fighter.nID);
            mo = Instantiate(model, monstersPosition[i].position, Quaternion.Euler(0, 270, 0)) as GameObject;


            mo.transform.parent        = g.transform;
            mo.transform.localPosition = Vector3.zero;
            mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

            mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();


            g.GetComponent <FighterUI>().fighter = fighter;

            monsterGroupFighter.lFighters.Add(fighter);
            g.transform.parent = GameObject.FindGameObjectWithTag("Monsters").transform;
            g.name             = fighter.sName;

            MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
            mouseOver.fighterUI = g.GetComponent <FighterUI>();

            g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
        }

        if (isBossCombat)
        {
            monstersPosition = new List <Transform>();
            foreach (Transform child in monstersPositionParent.transform)
            {
                monstersPosition.Add(child);
            }

            humanGroupFighter = new GroupEd();

            int        idModel = 40;
            GameObject model   = creaturePrefabManager.GetSpecial(idModel);
            //Human humain = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent<CreaturesData>().GetFighterOfID<Human>(creatureType, idModel);
            Monster monster = new Monster();
            monster.nID            = idModel;
            monster.sName          = "PiratePlant";
            monster.isBoss         = true;
            monster.nPower         = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent <CreaturesData>().defaultMonster.nPower;
            monster.nHealthMax     = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent <CreaturesData>().defaultMonster.nHealthMax;
            monster.nCurrentHealth = monster.nHealthMax;

            GameObject g = Instantiate(prefab, monstersPosition[4].position, Quaternion.Euler(0, 90, 0)) as GameObject;

            GameObject mo = Instantiate(model, monstersPosition[4].position, Quaternion.Euler(0, 90, 0)) as GameObject;
            mo.transform.parent        = g.transform;
            mo.transform.localPosition = Vector3.zero;
            mo.transform.localScale    = new Vector3(-0.3f, 0.3f, 0.3f);

            mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();

            MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
            mouseOver.fighterUI = g.GetComponent <FighterUI>();

            g.GetComponent <FighterUI>().fighter = monster;
            monsterGroupFighter.lFighters.Add(monster);
            g.transform.parent = GameObject.FindGameObjectWithTag("Monsters").transform;
            g.name             = monster.sName;

            g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
        }
    }
コード例 #2
0
    void InstantiateHuman()
    {
        GameObject   prefab = prefabHuman;
        Fighter      fighter;
        CreatureType creatureType = CreatureType.Human;

        GameObject       humansPositionParent = GameObject.FindGameObjectWithTag("HumansPosition");
        List <Transform> humansPosition       = new List <Transform>();

        foreach (Transform child in humansPositionParent.transform)
        {
            humansPosition.Add(child);
        }

        if (!bSpecialFight)
        {
            humanGroupFighter = new GroupHumanFighter();


            if (protoScript == null && !isBossCombat)
            {
                currentNbHuman = Random.Range(2, nbCreaturePerGroup + 1);
                //currentNbHuman = 2;
            }



            for (int i = 0; i < currentNbHuman; i++)
            {
                int        idModel = creaturePrefabManager.GetRandomHumanID();
                GameObject model   = creaturePrefabManager.GetHuman(idModel);
                Human      humain  = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent <CreaturesData>().GetFighterOfID <Human>(creatureType, idModel);
                humain.sexe = enumSex.None;

                enumSex sexCurrent = creaturePrefabManager.GetSexPrefabId(model, idModel);
                humain.sexe = sexCurrent;

                ModelHumainUI modelUI = model.GetComponent <ModelHumainUI>();
                if (modelUI != null)
                {
                    modelUI.RandomCheveux();
                }

                if (humain == null)
                {
                    humain = new Human();
                    humain.CopyHuman(defaultHuman);
                    humain.nID = idModel;
                    //humain.sName = model.name;
                }

                GameObject g = Instantiate(prefab, humansPosition[i].position, Quaternion.Euler(0, 90, 0)) as GameObject;

                GameObject mo = Instantiate(model, humansPosition[i].position, Quaternion.Euler(0, 90, 0)) as GameObject;
                mo.transform.parent        = g.transform;
                mo.transform.localPosition = Vector3.zero;
                mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

                mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();

                MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
                mouseOver.fighterUI = g.GetComponent <FighterUI>();

                g.GetComponent <FighterUI>().fighter = humain;
                humanGroupFighter.lFighters.Add(humain);
                g.transform.parent = GameObject.FindGameObjectWithTag("Humans").transform;
                g.name             = humain.sName;

                g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
            }
        }
        else
        {
            if (specialType == SpecialType.Ed)
            {
                humanGroupFighter = new GroupEd();

                int        idModel = 30;
                GameObject model   = creaturePrefabManager.GetSpecial(idModel);
                //Human humain = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent<CreaturesData>().GetFighterOfID<Human>(creatureType, idModel);
                Human humain = new Human();
                humain.CopyHuman(defaultHuman);
                humain.nID    = idModel;
                humain.sName  = "Ed";
                humain.nPower = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent <CreaturesData>().defaultHuman.nPower;

                GameObject g = Instantiate(prefab, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;

                GameObject mo = Instantiate(model, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;
                mo.transform.parent        = g.transform;
                mo.transform.localPosition = Vector3.zero;
                mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

                mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();

                MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
                mouseOver.fighterUI = g.GetComponent <FighterUI>();

                g.GetComponent <FighterUI>().fighter = humain;
                humanGroupFighter.lFighters.Add(humain);
                g.transform.parent = GameObject.FindGameObjectWithTag("Humans").transform;
                g.name             = humain.sName;

                g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
            }
            if (specialType == SpecialType.Bard)
            {
                humanGroupFighter = new GroupBard();
                int        idModel = 31;
                GameObject model   = creaturePrefabManager.GetSpecial(idModel);
                //Human humain = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent<CreaturesData>().GetFighterOfID<Human>(creatureType, idModel);
                Human humain = new Human();
                humain.CopyHuman(defaultHuman);
                humain.nID   = idModel;
                humain.sName = "Bard";

                GameObject g = Instantiate(prefab, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;

                GameObject mo = Instantiate(model, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;
                mo.transform.parent        = g.transform;
                mo.transform.localPosition = Vector3.zero;
                mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

                mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();

                MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
                mouseOver.fighterUI = g.GetComponent <FighterUI>();

                g.GetComponent <FighterUI>().fighter = humain;
                humanGroupFighter.lFighters.Add(humain);
                g.transform.parent = GameObject.FindGameObjectWithTag("Humans").transform;
                g.name             = humain.sName;

                g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
            }
            if (specialType == SpecialType.Slip)
            {
                humanGroupFighter = new GroupSlip();
                int        idModel = 32;
                GameObject model   = creaturePrefabManager.GetSpecial(idModel);
                //Human humain = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent<CreaturesData>().GetFighterOfID<Human>(creatureType, idModel);
                Human humain = new Human();
                humain.CopyHuman(defaultHuman);
                humain.nPower = 0;
                humain.nID    = idModel;
                humain.sName  = "MecEnSlip";

                GameObject g = Instantiate(prefab, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;

                GameObject mo = Instantiate(model, humansPosition[0].position, Quaternion.Euler(0, 90, 0)) as GameObject;
                mo.transform.parent        = g.transform;
                mo.transform.localPosition = Vector3.zero;
                mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

                mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();

                MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
                mouseOver.fighterUI = g.GetComponent <FighterUI>();

                g.GetComponent <FighterUI>().fighter = humain;
                humanGroupFighter.lFighters.Add(humain);
                g.transform.parent = GameObject.FindGameObjectWithTag("Humans").transform;
                g.name             = humain.sName;

                g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();
            }
        }
    }
コード例 #3
0
    void CheckDeadFighters()
    {
        foreach (Order order in combatOrder)
        {
            if (order.fighter.IsDead())
            {
                AkSoundEngine.SetSwitch("Tension", "T4", gameObject);
                combatOrder.Remove(order);
            }
        }
        for (int i = 0; i < combatOrder.Count; i++)
        {
            if (combatOrder[i].fighter == currentFighter && combatOrder[i].nInitiative == currentInitiative)
            {
                currentFighterIndex = i;
                break;
            }
        }


        if (monsterGroupFighter.lFighters.Count < 4 && !monsterGroupFighter.SomeTryToRun())
        {
            if (caravane.lFighters.Count >= 4)
            {
                Fighter lastDeadFighter = monsterGroupFighter.ReplacDeadFighter();

                GameObject   prefab       = prefabMonster;
                CreatureType creatureType = CreatureType.Monster;

                Fighter fighter = caravane.lFighters[3];

                fighter.bTryToescape = false;
                GameObject g = Instantiate(prefab, fighterMouvementManager.SpawnPosition, Quaternion.Euler(0, 90, 0)) as GameObject;

                GameObject mo;

                GameObject model = creaturePrefabManager.GetMonster(fighter.nID);
                mo = Instantiate(model, Vector3.zero, Quaternion.Euler(0, 270, 0)) as GameObject;


                mo.transform.parent        = g.transform;
                mo.transform.localPosition = Vector3.zero;
                mo.transform.localScale    = new Vector3(0.3f, 0.3f, 0.3f);

                mo.transform.GetChild(0).gameObject.AddComponent <BoxCollider>();


                g.GetComponent <FighterUI>().fighter = fighter;

                monsterGroupFighter.lFighters.Add(fighter);
                g.transform.parent = GameObject.FindGameObjectWithTag("Monsters").transform;
                g.name             = fighter.sName;

                MouseOverCreature mouseOver = mo.transform.GetChild(0).gameObject.AddComponent <MouseOverCreature>();
                mouseOver.fighterUI = g.GetComponent <FighterUI>();

                g.GetComponent <FighterUI>().fighterRenderer = mouseOver.gameObject.GetComponent <Renderer>();

                fighterMouvementManager.lastDeadFighterPosition = lastDeadFighter.currentUI.gameObject.transform.position;
                fighterMouvementManager.SpawnMonster(g);
                fighterMouvementManager.lastDeadFighterPosition = lastDeadFighter.currentUI.transform.position;

                g.transform.position = fighterMouvementManager.spawn.position;
                Order order = new Order(fighter, 6);
                combatOrder.Add(order);
            }
        }
    }