public static bool IsNextFrame(RealBattleScript.RealBattleTroops type, ref float infDelta) { float speedTime = 0; switch (type) { case RealBattleScript.RealBattleTroops.Inf: speedTime = InfSpeedTime; break; case RealBattleScript.RealBattleTroops.CavLeft: case RealBattleScript.RealBattleTroops.CavRight: speedTime = CavSpeedTime; break; case RealBattleScript.RealBattleTroops.Art: speedTime = ArtSpeedTime; break; default: Debug.Log("error in IsNextFrame in BattleDeltaTimeScript"); break; } if (speedTime < infDelta) { infDelta %= speedTime; return(true); } return(false); }
//отрисовывает группу юнитов void _drawGroup(RealBattleScript.BattleGroup group, RealBattleScript.RealBattleTroops troop, SkeletonAnimation[] arr) { for (int i = 0; i < group.GetUnitsCount(); i++) { //считает нужную пощицию на поле и размер юнита //повыше - поменьше, пониже - побольше #region SCALE_AND_POSITION float half_side = RealBattleInfoScript.GetUnitSide(troop) / 2.0f; float left = group.GetUnit(i).X - half_side - RealBattleInfoScript.FieldLeft; float top = group.GetUnit(i).Y - half_side - RealBattleInfoScript.FieldTop; arr[i].transform.position = new Vector3(left, top, 0); float scalePer = 1.0f - ((group.GetUnit(i).Y - RealBattleInfoScript.FieldLeft) / (RealBattleInfoScript.FieldWidth - RealBattleInfoScript.FieldLeft)); scalePer *= scalePer; float scaleFactor = troop == RealBattleScript.RealBattleTroops.Inf || troop == RealBattleScript.RealBattleTroops.Art ? 5.0f : 3.2f; float xScale = scaleFactor * scalePer * (group.IsOne ? 1 : -1); float yScale = scaleFactor * scalePer; arr[i].transform.localScale = new Vector3(xScale, yScale, 1.0f); #endregion //выставляет анимацию по информации из логики битвы #region ANIM RealBattleScript.BattleUnit unit = group.GetUnit(i); switch (unit.State) { case RealBattleScript.UnitStates.Stay: SetAnim(arr[i], AnimState.IDLE); break; case RealBattleScript.UnitStates.MoveOne: case RealBattleScript.UnitStates.MoveAll: SetAnim(arr[i], AnimState.WALK); break; case RealBattleScript.UnitStates.Fight: if (troop != RealBattleScript.RealBattleTroops.Art) { SetAnim(arr[i], AnimState.ATTACK); } else if (unit.ArtShoot) { SetAnim(arr[i], AnimState.BOW_SHOOT, false); arr[i].state.Complete += delegate(Spine.TrackEntry entry) { unit.ArtShoot = false; }; } else { SetAnim(arr[i], AnimState.IDLE, true); } break; } #endregion } }
public static float GetSpeed(RealBattleScript.RealBattleTroops type) { switch (type) { case RealBattleScript.RealBattleTroops.Inf: return(InfSpeed_PerSec); case RealBattleScript.RealBattleTroops.CavLeft: case RealBattleScript.RealBattleTroops.CavRight: return(CavSpeed_PerSec); case RealBattleScript.RealBattleTroops.Art: return(ArtSpeed_PerSec); default: Debug.Log("error in GetSpeed in RealBattleInfoScript"); return(0); } }
public static float GetUnitSide(RealBattleScript.RealBattleTroops type) { switch (type) { case RealBattleScript.RealBattleTroops.Inf: return(Inf_UnitSide); case RealBattleScript.RealBattleTroops.CavLeft: case RealBattleScript.RealBattleTroops.CavRight: return(Cav_UnitSide); case RealBattleScript.RealBattleTroops.Art: return(Art_UnitSide); default: Debug.Log("error in GetUnitSide in RealBattleInfoScript"); return(0); } }