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; } }
public void SetupConstructionsToDestroy(FirecampGroup group) { if (group != null) { group.GetAllConstructions(ref this.m_ConstructionsToDestroy); } }
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); } } }
public void StartWave(FirecampGroup group) { this.SetState(HumanAIGroup.State.StartWave); this.SetupConstructionsToDestroy(group); }