Ejemplo n.º 1
0
    protected void CompleteCurrentState()
    {
        switch (state)
        {
        case Constant.AvatarState.EATING:
            break;

        case Constant.AvatarState.SLEEPING:
            break;

        case Constant.AvatarState.WORKING:
            break;

        case Constant.AvatarState.ADVENTURE:
            break;
        }
        state = Constant.AvatarState.IDLING;

        bool isEndDayStateLoop = false;

        envManage.player.playerData.dayStateLoopCount++;
        if (envManage.player.playerData.dayStateLoopCount > 0 && envManage.player.playerData.dayStateLoopCount % Constant.DAY_STATE_LOOP_THRESHOLD == 0)
        {
            envManage.player.playerData.dayStateLoopCount %= Constant.DAY_STATE_LOOP_THRESHOLD;

            isEndDayStateLoop = true;
        }

        // Update playerData to save to file
        envManage.player.playerData.UpdateAvatarState(avatarIndex, state, isEndDayStateLoop);
    }
Ejemplo n.º 2
0
    public void UpdateAvatarState(int avatarIndex, Constant.AvatarState state, bool isEndDayStateLoop)
    {
        Reward reward = new Reward();

        switch (avatarIndex)
        {
        case 0:
            reward = avatarData1.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop);
            break;

        case 1:
            reward = avatarData2.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop);
            break;

        case 2:
            reward = avatarData3.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop);
            break;
        }

        if (reward.energyGain > 0)
        {
            // Update material cost if from factory working to idling
            if (factoryLevel == 1)
            {
                materialAmount += Constant.FACTORY_MATERIAL_COST_LEVEL_1;
            }
            else if (factoryLevel == 2)
            {
                materialAmount += Constant.FACTORY_MATERIAL_COST_LEVEL_2;
            }

            // Update enercy collected if from factory working to idling
            energyAmount += reward.energyGain;
            Debug.Log("Reward: energy get " + reward.energyGain);
        }

        // Update collected item from adventure
        foreach (var item in reward.items)
        {
            int  alreayHaveCount = 0;
            bool hasValue        = this.items.TryGetValue(item.Key, out alreayHaveCount);
            if (hasValue)
            {
                this.items[item.Key] = alreayHaveCount + item.Value;
            }
            else
            {
                this.items[item.Key] = item.Value;
            }
        }
    }
Ejemplo n.º 3
0
 public virtual void LoadData(AvatarData avatarData, Slot slot)
 {
     this.state           = avatarData.state;
     this.currentDropSlot = slot;
     if (slot != null)
     {
         ChangePosition(currentDropSlot.transformToBeSet.position);
         ChangeAnimation(ANIMATOR_IS_DROPPING_PROPERTY_NAME + currentDropSlot.level, true);
         ChangeAnimation(ANIMATOR_IS_DRAGGING_PROPERTY_NAME, false);
     }
     else
     {
         ChangeAnimation(ANIMATOR_IS_DRAGGING_PROPERTY_NAME, false);
         if (currentDropSlot != null)
         {
             ChangeAnimation(ANIMATOR_IS_DROPPING_PROPERTY_NAME + currentDropSlot.level, false);
             currentDropSlot = null;
         }
         ChangePosition(initialPosition);
     }
 }
Ejemplo n.º 4
0
    public AvatarData(int index)
    {
        this.index = index;
        switch (index)
        {
        case 0:
            this.name = Constant.AVATAR1_NAME;
            break;

        case 1:
            this.name = Constant.AVATAR2_NAME;
            break;

        case 2:
            this.name = Constant.AVATAR3_NAME;
            break;
        }
        level     = 1;
        hungry    = Constant.AVATAR_MAX_HUNGRY_LEVEL_1;
        sanity    = Constant.AVATAR_MAX_SANITY_LEVEL_1;
        state     = Constant.AvatarState.IDLING;
        slotIndex = -1;
    }
Ejemplo n.º 5
0
 protected void UpdateState(Constant.AvatarState state)
 {
     // This update state will only be triggered when mouse is up/down, does not mean it finish current task
     this.state = state;
     envManage.player.playerData.UpdateAvatarState(avatarIndex, state, false);
 }
Ejemplo n.º 6
0
    public Reward SetState(Constant.AvatarState state, int cafeLevel, int dormLevel, int factoryLevel, Adventure adventure, bool isEndDayStateLoop)
    {
        Reward reward = new Reward();

        if (state == Constant.AvatarState.IDLING)
        {
            switch (this.state)
            {
            // Update avatar status data based on current level
            case Constant.AvatarState.EATING:
                UpdateStatusCafeComplete(cafeLevel);
                break;

            case Constant.AvatarState.SLEEPING:
                UpdateStatusDormComplete(dormLevel);
                break;

            case Constant.AvatarState.ADVENTURE:
                reward = UpdateAdventureComplete(adventure);

                break;

            case Constant.AvatarState.WORKING:
                reward = UpdateStatusFactoryComplete(factoryLevel);
                break;

            default:
                // Do nothing
                break;
            }
            slotIndex = -1;
        }
        else if (state == Constant.AvatarState.ADVENTURE && adventure != null)
        {
            this.adventure = adventure;
        }

        // Update avatar dead days if it has < 0 sanity/hungry
        if (this.hungry <= 0 || this.sanity <= 0)
        {
            if (deadDaysCount >= 3)
            {
                Debug.Log("3 days hungry/sanity below 0, dead");
                isDead = true;
            }
            else
            {
                Debug.Log("Dead days ++");
                deadDaysCount++;
            }
        }
        else
        {
            deadDaysCount = 0;
            isDead        = false;
        }

        // Update if 3 day state change reached
        if (isEndDayStateLoop && !isDead)
        {
            UpdateStatusDayStateComplete();
        }

        this.state = state;
        return(reward);
    }