// 스크립트 실행 순서에서 항상 World가 먼저 실행되도록 설정하여야 한다. // 그래야 월드 타임이 올바르게, 모두에게 전달될 수 있다. void Update() { CurrentGameWorldTimeMS += (long)(Time.deltaTime * 1000.0f); //worldTimer.Update(시간); WorldTimer.GetInstance().Update(CurrentGameWorldTimeMS); }
public override void Exit() { if (matingTimer != 0) { WorldTimer.GetInstance().UnregisterTimer(matingTimer); matingTimer = 0; } owner.ResetCurrentHeat(); owner.LastMatingTime = World.CurrentGameWorldTimeMS; }
void ChangeSleeping(string state) { if (currentState == state) { return; } currentState = state; if (state == "sleepGround") { Debug.Log($"{owner.ObjectID} 땅바닥에서 잔다!"); ownerAgent.isStopped = true; //owner.Sleeping(currentState); hungerChangeValue = 3f; fatigueChangeValue = -25f; //랜덤시간 타이머 등록 if (wakeUpTimer != 0) { WorldTimer.GetInstance().UnregisterTimer(wakeUpTimer); wakeUpTimer = 0; } // 타이머가 계속 .. 생성되고 제거되고 있다. wakeUpTimer = WorldTimer.GetInstance().RegisterTimer(World.CurrentGameWorldTimeMS + (int)sleepTime, OnWakeUpCallback); Debug.Log($"{sleepTime} 있다가 일어날래!({World.CurrentGameWorldTimeMS})"); } if (state == "sleepShelter") { Debug.Log($"{owner.ObjectID} 축사에서 잔다!"); ownerAgent.isStopped = true; //owner.Sleeping(currentState); hungerChangeValue = 0f; fatigueChangeValue = -50f; //랜덤시간 타이머 등록 if (wakeUpTimer != 0) { WorldTimer.GetInstance().UnregisterTimer(wakeUpTimer); wakeUpTimer = 0; } // 타이머가 계속 .. 생성되고 제거되고 있다. wakeUpTimer = WorldTimer.GetInstance().RegisterTimer(World.CurrentGameWorldTimeMS + (int)sleepTime, OnWakeUpCallback); Debug.Log($"{sleepTime} 있다가 일어날래!({World.CurrentGameWorldTimeMS})"); } else if (state == "goingToShelter") { } }
public override void Exit() { ////초기값으로 셋팅 //hungerChangeValue = 10f; //fatigueChangeValue = 5f; currentState = ""; //타이머 등록해제 if (wakeUpTimer != 0) { WorldTimer.GetInstance().UnregisterTimer(wakeUpTimer); wakeUpTimer = 0; } }
void AutoMakingFood() { if (!FoodIsFull()) { Debug.Log("물고기 생김"); ++CurrentFoodCapacity; } //일정시간마다 물고기 잡는 일이 없으면 등록한다 if (World.GetInstance().IsJobEmpty(World.JobType.CatchFishingInPond)) { Debug.Log($"{this.ObjectID} 물고기 잡자"); World.GetInstance().RequestCatchFish(this); } _timerID = WorldTimer.GetInstance().RegisterTimer(World.CurrentGameWorldTimeMS + World.oneDay, TimerCallback); }
public override void Enter(object extraData = null) { base.Enter(extraData); isReadyMakeEgg = false; partner = World.GetInstance().FindCloseOppositeSexDuck(owner); ChangeMatingState("followingPartner"); //타이머 등록 : 오리는 발정시 상대 오리를 3일 만 따라다닌다 if (matingTimer != 0) { WorldTimer.GetInstance().UnregisterTimer(matingTimer); matingTimer = 0; } matingTimer = WorldTimer.GetInstance().RegisterTimer(World.CurrentGameWorldTimeMS + World.oneDay * 3, EscapeState); }
//오브젝트(알)의 요청에 따라 들여보낸다 //들어온 알의 부화 시간을 잰다(28일) public override void EnterObject(ObjectBase targetObject) { base.EnterObject(targetObject); var targetEgg = targetObject.GetComponent <Egg>(); //알이 부화가 안되는 썩은알이라면 리턴 if (!targetEgg.hatchable) { return; } long currentTime = World.CurrentGameWorldTimeMS; targetEgg.hatchStartTime = currentTime; //알이 들어왔으면 알 부화 타이머를 켠다 WorldTimer.GetInstance().RegisterTimer(currentTime + (long)(targetEgg.remainingHatchTime * World.oneDay), ( long timerID ) => Hatch(targetObject.ObjectID)); }