private void UpdateSeason() { if (Application.isPlaying && DayCycleManager.GetInstance() != null) { if (DayCycleManager.GetInstance().Day / 10 % 2 != 0) { season = Season.Winter; } else { season = Season.Summer; } } if (season != prevSeason && terrain != null) { if (season == Season.Summer) { materials.ForEach(x => x.color = summerColor); UpdateTerrainTexture(terrain.terrainData, 2, 0); UpdateTerrainTexture(terrain.terrainData, 3, 1); } else { materials.ForEach(x => x.color = winterColor); UpdateTerrainTexture(terrain.terrainData, 0, 2); UpdateTerrainTexture(terrain.terrainData, 1, 3); } prevSeason = season; } }
private void Update() { for (int i = 0; i < transform.childCount; i++) { transform.GetChild(i).gameObject.SetActive(DayCycleManager.GetInstance().IsRestTime() && !ForceOff); } }
public SimulationInformation GetSimulationInformation() { var ratePerDay = DayCycleManager.MIN_IN_DAY / gatherPeriod * GetComponent <Assignable>().GetWorkerCount(); var expirationTime = DayCycleManager.GetInstance().CurrentTime + (float)quantity / ratePerDay * DayCycleManager.MIN_IN_DAY; Debug.Log("Rate per day: " + ratePerDay + ", expiration time: " + expirationTime); return(new SimulationInformation(type, ratePerDay, expirationTime)); }
public void RemoveEnemy() { numEnemies--; if (numEnemies == 0) { DayCycleManager.GetInstance().EndAttack(); } }
private void Update() { if (prevTime < DayCycleManager.START_OF_DAY && DayCycleManager.GetInstance().CurrentTimeOfDay > DayCycleManager.START_OF_DAY) { text.text = "Day " + DayCycleManager.GetInstance().Day; currentStep = 0; } prevTime = DayCycleManager.GetInstance().CurrentTimeOfDay; ShowLoop(); }
private void Update() { var distance = (target - initialPosition).magnitude; var t = Mathf.Min((DayCycleManager.GetInstance().CurrentTime - startTime) * velocity / distance, 1); var newPosition = Vector3.Lerp(initialPosition, target, t) + Vector3.up * Mathf.Lerp(0, arc * distance / 30, -4 * t * (t - 1)); // y = -4x(x - 1) var delta = newPosition - transform.position; transform.position = newPosition; transform.LookAt(newPosition + delta); }
private void SetWalkerDestination(Vector3?destination) { if (DayCycleManager.GetInstance().IsRestTime()) { previousLocation = destination; } else { GetComponent <Walker>().SetDestination(destination); } }
private void Start() { var dayCycleManager = DayCycleManager.GetInstance(); dayCycleManager.OnStartWorkDay.AddListener(() => { var matchingWaves = waves.Where(x => x.day == dayCycleManager.Day).ToList(); if (matchingWaves.Count > 0) { dayCycleManager.StartAttack(); matchingWaves.ForEach(x => SpawnEnemies(x.numEnemies)); } }); }
private void Update() { var deltaPercent = DayCycleManager.GetInstance().ClockMinuteRate / 5 * Time.deltaTime * buildSpeed * GetComponent <Assignable>().GetWorkersInRange(); deltaPercent = Mathf.Min(deltaPercent, 100 - percentComplete); percentComplete += deltaPercent; pendingInstance.transform.position += new Vector3(0, (deltaPercent / 100) * DELTA_Y, 0); if (percentComplete >= 100) { pendingInstance.Place(); Destroy(gameObject); } }
public static Projectile Instantiate(Vector3 spawnPoint, Vector3 target, Vector3 oneSecondDeltaPosition, Team team) { var instance = Instantiate(ResourceLoader.GetInstance().Arrow, spawnPoint, new Quaternion()); instance.startTime = DayCycleManager.GetInstance().CurrentTime; instance.initialPosition = spawnPoint; instance.target = target + oneSecondDeltaPosition * (target - spawnPoint).magnitude / instance.velocity / DayCycleManager.GetInstance().ClockMinuteRate; instance.team = team; instance.transform.LookAt(target); Destroy(instance.gameObject, 1.2f); return(instance); }
private void Update() { var dayCycleManager = DayCycleManager.GetInstance(); if (dayCycleManager.Day > 2 && dayCycleManager.GetCurrentHour() == spawnHour && prevHour != spawnHour) { var randomPoint = Random.insideUnitSphere; FloatingText.Instantiate(populationText.transform, 1, "Worker", false, true, 1); Worker.Instantiate( PopulationManager.GetInstance().GetAvailableHome(), spawnpoint.position + new Vector3(randomPoint.x, 0, randomPoint.z), spawnpoint.rotation); } prevHour = dayCycleManager.GetCurrentHour(); }
private void Start() { DayCycleManager.GetInstance().OnStartWorkDay.AddListener(() => { GetComponent <Walker>().SetDestination(previousLocation.GetValueOrDefault()); }); DayCycleManager.GetInstance().OnEndWorkDay.AddListener(() => { previousLocation = GetComponent <Walker>().GetDestination(); GetComponent <Walker>().SetDestination(House != null ? House.transform.position : WorkerSpawner.GetInstance().transform.position); }); if (createdFromScene) { PopulationManager.GetInstance().AddToWorkforce(this); } }
private void Update() { if (target == null) { var enemy = FindObjectOfType <Enemy>(); if (enemy != null) { target = enemy; } } else { transform.LookAt(target.transform); } anim.speed = DayCycleManager.GetInstance().ClockMinuteRate / 5; }
private IEnumerator SimulationLoop() { Debug.Log("Here we go! Current time: " + DayCycleManager.GetInstance().CurrentTime); prevTime = DayCycleManager.GetInstance().CurrentTime; while (true) { yield return(new WaitForSeconds(96 / 4)); // 96 is the number of real seconds it takes to go 1 day at 15 game minutes per 1 real life second. Debug.Log("Ding! It's been 1/4 of a day."); var currentTime = DayCycleManager.GetInstance().CurrentTime; var expiredSimulations = expirationTimes.PopSimulationInformationsUpToTime(currentTime); Debug.Log(expiredSimulations.Count + " simulations expired in that time block. Current time: " + currentTime); expiredSimulations.ForEach(expiredSimulation => { var partialAmount = expiredSimulation.rateOfChange * (expiredSimulation.expirationTime.Value - prevTime) / DayCycleManager.MIN_IN_DAY; Debug.Log("Adding " + (expiredSimulation.expirationTime.Value - prevTime) / DayCycleManager.MIN_IN_DAY + " of the full amount " + expiredSimulation.rateOfChange + ", " + partialAmount); ResourceManager.GetInstance()[expiredSimulation.resourceType].OffsetValue((int)partialAmount); switch (expiredSimulation.resourceType) { case ResourceType.Wood: deltaWood -= expiredSimulation.rateOfChange; break; case ResourceType.Stone: deltaStone -= expiredSimulation.rateOfChange; break; case ResourceType.Metal: deltaMetal -= expiredSimulation.rateOfChange; break; case ResourceType.Food: deltaFood -= expiredSimulation.rateOfChange; break; } }); Debug.Log("Adding " + deltaFood / 4 + " food"); ResourceManager.GetInstance()[ResourceType.Wood].OffsetValue(deltaWood / 4); ResourceManager.GetInstance()[ResourceType.Stone].OffsetValue(deltaStone / 4); ResourceManager.GetInstance()[ResourceType.Metal].OffsetValue(deltaMetal / 4); ResourceManager.GetInstance()[ResourceType.Food].OffsetValue(deltaFood / 4); prevTime = currentTime; } }
private IEnumerator Arrow() { var dcm = DayCycleManager.GetInstance(); while (true) { var curTime = dcm.CurrentTime; yield return(new WaitUntil(() => dcm.CurrentTime > curTime + (1.033f + aimDelay) * 5)); if (target != null) { anim.SetTrigger("Fire"); curTime = dcm.CurrentTime; yield return(new WaitUntil(() => dcm.CurrentTime > curTime + 0.5f)); Projectile.Instantiate(arrowSpawn.position, target.transform.position + Vector3.up, target.GetComponent <Walker>().OneSecondDeltaPosition, Team.Player); curTime = dcm.CurrentTime; yield return(new WaitUntil(() => dcm.CurrentTime > curTime + 3)); } } }
private void Update() { var assignable = GetComponent <Assignable>(); if (IsFunctioning()) { progress += Time.deltaTime * assignable.GetWorkersInRange() * DayCycleManager.GetInstance().ClockMinuteRate; } if (assignable.GetWorkersInRange() == 0 || DayCycleManager.GetInstance().IsRestTime()) { progress = 0; } if (PercentComplete > 1) { ResourceManager.GetInstance()[type].OffsetValue(TakeFromPile(1)); FloatingText.Instantiate(statusUI.transform, "+1 " + type.ToString()); progress = progress - gatherPeriod; } }
private void Update() { if (destination == null) { animator.SetFloat("Turn", 0); animator.SetFloat("Forward", 0); return; } // 1 is normal speed; var speed = DayCycleManager.GetInstance().ClockMinuteRate / 5; var inDeadZone = (destination.Value - transform.position).magnitude < deadZone; if (speed <= 2 && !inDeadZone) { AnimatedWalk(speed); } else { animator.SetFloat("Turn", 0); animator.SetFloat("Forward", 0); TeleportWalk(speed); } }
private void Update() { li.color = lightColor.Evaluate((DayCycleManager.GetInstance().CurrentTime % DayCycleManager.MIN_IN_DAY) / DayCycleManager.MIN_IN_DAY); }
private void Update() { btn.interactable = DayCycleManager.GetInstance().CurrentTimeOfDay > DayCycleManager.MIN_END_WORK_DAY && DayCycleManager.GetInstance().IsWorkDay(); }
private void Start() { btn = GetComponent <Button>(); btn.onClick.AddListener(DayCycleManager.GetInstance().EndWorkDay); }
private void Start() { text = GetComponent <Text>(); prevTime = DayCycleManager.GetInstance().CurrentTimeOfDay; currentStep = duration; }
private new void Awake() { base.Awake(); DontDestroyOnLoad(gameObject); DayCycleManager.GetInstance().OnEndWorkDay.AddListener(() => EatMeal()); }
public int GetWorkersInRange() { return(workers.Where(x => DayCycleManager.GetInstance().IsWorkDay() && (x.transform.position - transform.position).magnitude < 4).Count()); }
private void Start() { prevTime = DayCycleManager.GetInstance().CurrentTime; }