Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 2
0
 private bool getUninit()
 {
     foreach(GameObject c in characterList) {
         e = c.GetComponent<Entity>();
         if(e.getHostile()) {
             if(!e.getInitSet()) {
                 return true;
             }
         }
     }
     return false;
 }