private void Update()
    {
        this.m_FirecampGroupsWithFullFactor.Clear();
        int i = 0;

        while (i < this.m_FirecampGroups.Count)
        {
            FirecampGroup firecampGroup = this.m_FirecampGroups[i];
            firecampGroup.Update();
            if (firecampGroup.GetFirecampsCount() == 0 && firecampGroup.m_BurningFactor == 0f)
            {
                this.m_FirecampGroups.Remove(firecampGroup);
            }
            else
            {
                if (firecampGroup.m_BurningFactor == 1f)
                {
                    this.m_FirecampGroupsWithFullFactor.Add(firecampGroup);
                }
                i++;
            }
        }
        if (Input.GetKey(KeyCode.LeftAlt) && Input.GetKeyDown(KeyCode.X))
        {
            this.m_DebugDrawFactor = !this.m_DebugDrawFactor;
        }
    }
示例#2
0
 public void SetupConstructionsToDestroy(FirecampGroup group)
 {
     if (group != null)
     {
         group.GetAllConstructions(ref this.m_ConstructionsToDestroy);
     }
 }
示例#3
0
 public void Add(FirecampGroup group)
 {
     foreach (IFireObject fireObject in group.m_Firecamps)
     {
         if (!this.Contains(fireObject))
         {
             this.Add(fireObject);
         }
     }
 }
    public FirecampGroup GetGroupToAttack()
    {
        FirecampGroup result = null;
        float         num    = float.MaxValue;

        foreach (FirecampGroup firecampGroup in this.m_FirecampGroupsWithFullFactor)
        {
            float num2 = Player.Get().transform.position.Distance(firecampGroup.GetCenterPos());
            if (num2 < num)
            {
                num    = num2;
                result = firecampGroup;
            }
        }
        return(result);
    }
        public HumanAIWave SpawnWave(int count, bool hallucination = false, FirecampGroup firecamp_group_for_wave = null)
        {
            HumanAIWave humanAIWave = new GameObject("AIWave")
            {
                transform =
                {
                    position = ((firecamp_group_for_wave != null) ? firecamp_group_for_wave.m_Bounds.center : Player.Get().transform.position)
                }
            }.AddComponent <HumanAIWave>();

            humanAIWave.m_Count         = count;
            humanAIWave.m_Hallucination = hallucination;
            humanAIWave.SetupConstructionsToDestroy(firecamp_group_for_wave);
            humanAIWave.Initialize();
            this.m_ActiveGroup = humanAIWave;
            return(humanAIWave);
        }
        private void UpdateWaves()
        {
            if (!DifficultySettings.ActivePreset.m_Tribes)
            {
                return;
            }
            this.m_TimeToNextSpawnWave -= Time.deltaTime;
            if (this.m_TimeToNextSpawnWave < 0f)
            {
                this.m_TimeToNextSpawnWave = 0f;
            }
            else if (this.m_TimeToNextSpawnWave > 0f)
            {
                return;
            }
            if (this.m_ActivePredator)
            {
                return;
            }
            FirecampGroup groupToAttack = FirecampGroupsManager.Get().GetGroupToAttack();

            if (groupToAttack != null)
            {
                if (this.m_ActiveGroup)
                {
                    this.m_ActiveGroup.StartWave(groupToAttack);
                }
                else if (this.m_ActiveCampGroup)
                {
                    this.m_ActiveCampGroup.StartWave(groupToAttack);
                }
                else
                {
                    this.SpawnWave(UnityEngine.Random.Range(1, this.GetCurrentGroupMembersCount() + 1), false, groupToAttack);
                }
                FirecampGroupsManager.Get().ResetBurningFactors();
                this.m_TimeToNextSpawnWave = this.m_WaveSpawnCooldown[(int)DifficultySettings.ActivePreset.m_BaseDifficulty];
            }
        }
 public void OnCreateFirecamp(IFireObject firecamp)
 {
     if (firecamp.GetConstruction().IsSceneObject())
     {
         return;
     }
     this.m_TempFirecampGroups.Clear();
     foreach (FirecampGroup firecampGroup in this.m_FirecampGroups)
     {
         if (firecampGroup.CanAdd(firecamp))
         {
             firecampGroup.Add(firecamp);
             this.m_TempFirecampGroups.Add(firecampGroup);
         }
     }
     if (this.m_TempFirecampGroups.Count == 0)
     {
         FirecampGroup firecampGroup2 = new FirecampGroup();
         firecampGroup2.Add(firecamp);
         this.m_FirecampGroups.Add(firecampGroup2);
         return;
     }
     if (this.m_TempFirecampGroups.Count > 1)
     {
         float num = 0f;
         foreach (FirecampGroup firecampGroup3 in this.m_TempFirecampGroups)
         {
             num = Mathf.Max(num, firecampGroup3.m_BurningFactor);
         }
         FirecampGroup firecampGroup4 = this.m_TempFirecampGroups[0];
         firecampGroup4.m_BurningFactor = num;
         while (this.m_TempFirecampGroups.Count > 1)
         {
             firecampGroup4.Add(this.m_TempFirecampGroups[1]);
             this.m_FirecampGroups.Remove(this.m_TempFirecampGroups[1]);
             this.m_TempFirecampGroups.RemoveAt(1);
         }
     }
 }
示例#8
0
 public void StartWave(FirecampGroup group)
 {
     this.SetState(HumanAIGroup.State.StartWave);
     this.SetupConstructionsToDestroy(group);
 }