예제 #1
0
파일: Dwarf2.cs 프로젝트: LuGar54/tinRomain
 private bool ChangeState(FusionStates oldState, FusionStates newState)
 {
     if (FusionState != oldState)
     {
         return(false);
     }
     FusionState = newState;
     Manager2.Instance.DwarfStateChanged(this, FusionState);
     return(true);
 }
예제 #2
0
    public void DwarfStateChanged(Dwarf2 dwarf, FusionStates newState)
    {
        Debug.Log(newState.ToString());
        Debug.Log(fusionState);
        switch (fusionState)
        {
        case FusionStates.Nothing:
            if (newState != FusionStates.Trying)
            {
                return;
            }
            fusionState = FusionStates.Trying;
            break;

        case FusionStates.Trying:
            if (newState == FusionStates.Trying)
            {
                climber     = (dwarf == dwarf1) ? 1 : 2;
                fusionState = FusionStates.Fusionning;
                dwarf1.StartFusion();
                dwarf2.StartFusion();
            }
            else if (newState == FusionStates.Nothing)
            {
                fusionState = FusionStates.Nothing;
            }
            else
            {
                return;
            }
            break;

        case FusionStates.Fusionning:
            if (newState == FusionStates.Joined)
            {
                fusionState = FusionStates.Joined;
            }
            else if (newState == FusionStates.Nothing)
            {
                fusionState = FusionStates.Nothing;
            }
            else
            {
                return;
            }
            break;

        case FusionStates.Joined:
            if (newState == FusionStates.Nothing)
            {
                fusionState = FusionStates.Nothing;
                if (dwarf == dwarf1)
                {
                    dwarf2.UnJoin();
                }
                else
                {
                    dwarf1.UnJoin();
                }
            }
            else
            {
                return;
            }
            break;
        }
    }