private void Update() { if(!off) { switch(state) { case State.Free: FreeTime.on = true; if(getPause()) { formerState = State.Free; state = State.Pause; } fighterList.Clear(); fighterQ.Clear(); fightBegan = false; if(inCombat()) { state = State.Initiative; } break; case State.Initiative: FreeTime.on = false; if(getPause()) { formerState = State.Initiative; state = State.Pause; } if(!inCombat()) { state = State.Free; } foreach(GameObject c in characterList) { try { e = c.GetComponent<Entity>(); } catch (Exception exception) { // } if(e.getHostile()) { c.GetComponent<Action>().setMoveLock(true); if(!e.getInitSet()) { int init = Random.Range(1,21)+e.dexterityModifier()+e.getInitiativeBonus(); e.setInitiative(init); e.setInitSet(true); fighterList.Add(c); if(fightBegan) { fighterQ.Enqueue(c); } } } } listCount = fighterList.Count; fighterList.Sort(delegate(GameObject a, GameObject b) { return (a.GetComponent<Entity>().getInitiative()).CompareTo(b.GetComponent<Entity>().getInitiative()); }); fighterList.Reverse(); foreach(GameObject f in fighterList) { if(!fightBegan) { fighterQ.Enqueue(f); } } state = State.TurnSetup; break; case State.TurnSetup: FreeTime.on = false; if(getPause()) { formerState = State.TurnSetup; state = State.Pause; } /* if(!inCombat()) { state = State.Free; } */ if(getUninit()) { state = State.Initiative; } getFighter(); a = fighter.GetComponent<Action>(); a.setMoveLock(false); a.maximizeSpeed(); a.resetActions(); a.setImmediateAction(1); e = fighter.GetComponent<Entity>(); e.setTurn(true); e.setDone(false); state = State.Turn; break; case State.Turn: FreeTime.on = false; fightBegan = true; if(getPause()) { formerState = State.Turn; state = State.Pause; } if(!inCombat()) { state = State.Free; } if(getUninit()) { goToInit = true; } e = fighter.GetComponent<Entity>(); a = fighter.GetComponent<Action>(); a.setMoveLock(false); if(e.getDone()) { e.setTurn(false); a.setMoveLock(true); if(goToInit) { goToInit = false; state = State.Initiative; } else { state = State.TurnSetup; } } break; case State.Pause: FreeTime.on = false; foreach(GameObject g in characterList) { g.GetComponent<Action>().setMoveLock(true); } if(!getPause()) { foreach(GameObject g in characterList) { g.GetComponent<Action>().setMoveLock(false); } state = formerState; } break; default: state = State.Free; break; } } else { state = State.Free; formerState = State.Free; } }
private bool getUninit() { foreach(GameObject c in characterList) { e = c.GetComponent<Entity>(); if(e.getHostile()) { if(!e.getInitSet()) { return true; } } } return false; }