private bool ChangeState(FusionStates oldState, FusionStates newState) { if (FusionState != oldState) { return(false); } FusionState = newState; Manager2.Instance.DwarfStateChanged(this, FusionState); return(true); }
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; } }