示例#1
0
    private void RefillHouseHoldSquadMembers()
    {
        if (CurrentSquad == null || MaxOccupants <= 0)
        {
            return;
        }

        if (GameManager.Inst.NPCManager.GetFactionData(CurrentSquad.Faction).CharacterType == CharacterType.Mutant)
        {
            int numberToSpawn = MaxOccupants - CurrentSquad.Members.Count;
            for (int i = 0; i < numberToSpawn; i++)
            {
                Vector3         spawnLoc  = FindSpawnLocation();
                string          modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                MutantCharacter character = GameManager.Inst.NPCManager.SpawnRandomMutantCharacter(modelID, CurrentSquad, spawnLoc);
                CurrentSquad.AddMember(character);
            }
        }
        else if (GameManager.Inst.NPCManager.GetFactionData(CurrentSquad.Faction).CharacterType == CharacterType.Animal)
        {
            int numberToSpawn = MaxOccupants - CurrentSquad.Members.Count;
            for (int i = 0; i < numberToSpawn; i++)
            {
                Vector3         spawnLoc  = FindSpawnLocation();
                string          modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                MutantCharacter character = GameManager.Inst.NPCManager.SpawnRandomAnimalCharacter(modelID, CurrentSquad, spawnLoc);
                CurrentSquad.AddMember(character);
            }
        }
        else
        {
            int currentMembersCount = GetAllMembersCount();
            if (currentMembersCount < MaxOccupants)
            {
                //first create a commander if there isn't one
                if (!CurrentSquad.IsThereCommander() && CommanderIdleDest != null)
                {
                    string         modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                    HumanCharacter commander = GameManager.Inst.NPCManager.SpawnRandomHumanCharacter(modelID, CurrentSquad, CommanderIdleDest.transform.position);
                    commander.IsCommander = true;
                    CurrentSquad.AddMember(commander);
                    CurrentSquad.Commander = commander;
                }
                int numberToSpawn = MaxOccupants - currentMembersCount;
                for (int i = 0; i < numberToSpawn; i++)
                {
                    Vector3        spawnLoc  = FindSpawnLocation();
                    string         modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                    HumanCharacter character = GameManager.Inst.NPCManager.SpawnRandomHumanCharacter(modelID, CurrentSquad, spawnLoc);
                    CurrentSquad.AddMember(character);
                }
            }
        }
    }