Exemple #1
0
 private void Update()
 {
     for (int i = 0; i < transform.childCount; i++)
     {
         transform.GetChild(i).gameObject.SetActive(DayCycleManager.GetInstance().IsRestTime() && !ForceOff);
     }
 }
    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;
        }
    }
Exemple #3
0
    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();
 }
Exemple #6
0
 public CubeWorld(ICWListener cwListener, ICWFxListener fxListener)
 {
     this.cwListener      = cwListener;
     this.fxListener      = fxListener;
     this.sectorManager   = new SectorManager(this);
     this.tileManager     = new TileManager(this);
     this.itemManager     = new ItemManager(this);
     this.avatarManager   = new AvatarManager(this);
     this.dayCycleManager = new DayCycleManager(this);
 }
Exemple #7
0
    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);
    }
Exemple #8
0
 private void SetWalkerDestination(Vector3?destination)
 {
     if (DayCycleManager.GetInstance().IsRestTime())
     {
         previousLocation = destination;
     }
     else
     {
         GetComponent <Walker>().SetDestination(destination);
     }
 }
Exemple #9
0
    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 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));
            }
        });
    }
Exemple #11
0
    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);
        }
    }
    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();
    }
Exemple #13
0
 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;
 }
Exemple #14
0
    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 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;
        }
    }
Exemple #16
0
    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;
        }
    }
Exemple #17
0
    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));
            }
        }
    }
Exemple #18
0
        public void Clear()
        {
            stats = null;

            sectorManager.Clear();
            sectorManager = null;

            tileManager.Clear();
            tileManager = null;

            itemManager.Clear();
            itemManager = null;

            avatarManager.Clear();
            avatarManager = null;

            dayCycleManager.Clear();
            dayCycleManager = null;

            gameplay.Clear();
            gameplay = null;
        }
Exemple #19
0
    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);
        }
    }
Exemple #20
0
 private void Update()
 {
     btn.interactable = DayCycleManager.GetInstance().CurrentTimeOfDay > DayCycleManager.MIN_END_WORK_DAY &&
                        DayCycleManager.GetInstance().IsWorkDay();
 }
 private void Start()
 {
     text        = GetComponent <Text>();
     prevTime    = DayCycleManager.GetInstance().CurrentTimeOfDay;
     currentStep = duration;
 }
Exemple #22
0
 private new void Awake()
 {
     base.Awake();
     DontDestroyOnLoad(gameObject);
     DayCycleManager.GetInstance().OnEndWorkDay.AddListener(() => EatMeal());
 }
Exemple #23
0
 public int GetWorkersInRange()
 {
     return(workers.Where(x => DayCycleManager.GetInstance().IsWorkDay() && (x.transform.position - transform.position).magnitude < 4).Count());
 }
Exemple #24
0
 private void Start()
 {
     btn = GetComponent <Button>();
     btn.onClick.AddListener(DayCycleManager.GetInstance().EndWorkDay);
 }
 private void Start()
 {
     prevTime = DayCycleManager.GetInstance().CurrentTime;
 }
Exemple #26
0
 private void Update()
 {
     li.color = lightColor.Evaluate((DayCycleManager.GetInstance().CurrentTime % DayCycleManager.MIN_IN_DAY) / DayCycleManager.MIN_IN_DAY);
 }