Exemplo n.º 1
0
    // 스크립트 실행 순서에서 항상 World가 먼저 실행되도록 설정하여야 한다.
    // 그래야 월드 타임이 올바르게, 모두에게 전달될 수 있다.
    void Update()
    {
        CurrentGameWorldTimeMS += (long)(Time.deltaTime * 1000.0f);

        //worldTimer.Update(시간);
        WorldTimer.GetInstance().Update(CurrentGameWorldTimeMS);
    }
Exemplo n.º 2
0
    public override void Exit()
    {
        if (matingTimer != 0)
        {
            WorldTimer.GetInstance().UnregisterTimer(matingTimer);
            matingTimer = 0;
        }

        owner.ResetCurrentHeat();
        owner.LastMatingTime = World.CurrentGameWorldTimeMS;
    }
Exemplo n.º 3
0
    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")
        {
        }
    }
Exemplo n.º 4
0
    public override void Exit()
    {
        ////초기값으로 셋팅
        //hungerChangeValue = 10f;
        //fatigueChangeValue = 5f;
        currentState = "";

        //타이머 등록해제
        if (wakeUpTimer != 0)
        {
            WorldTimer.GetInstance().UnregisterTimer(wakeUpTimer);
            wakeUpTimer = 0;
        }
    }
Exemplo n.º 5
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);
    }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    //오브젝트(알)의 요청에 따라 들여보낸다
    //들어온 알의 부화 시간을 잰다(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));
    }