public DeathAnimation(UnitModelComponent targetUnit) : base(targetUnit) { _model = targetUnit.Model; _renderers = new List <SpriteRenderer>(); _renderers.AddRange(targetUnit.GetComponentsInChildren <SpriteRenderer>()); _startTime = Time.time; }
public static LocomotionManager <UnitModelComponent> CreateDeathJourney(UnitModelComponent unit) { var journeySteps = new Queue <IJourneyStep <UnitModelComponent> >(); journeySteps.Enqueue(new JourneyDeath()); return(new LocomotionManager <UnitModelComponent>(unit, journeySteps)); }
public UnitStrikeAnimation(UnitModelComponent targetUnit, Vector3 startPosition, Vector3 targetPosition, bool isAttackMotion) : base(targetUnit) { _model = targetUnit.Model; _targetPosition = targetPosition; var at = _animationTarget.transform.localPosition; _isAttackMotion = isAttackMotion; _startPosition = startPosition; }
public UnitStruckAnimation(UnitModelComponent targetUnit) : base(targetUnit) { foreach (Transform childTransform in targetUnit.transform) { if (childTransform.name.Equals("UnitSprite")) //todo TL3 { _renderer = (childTransform.GetComponent <SpriteRenderer>()); } } _startTime = Time.time; }
public static LocomotionManager <UnitModelComponent> CreateMovementJourney(GameCourseModel model, UnitModelComponent unit, MyHexPosition target) { Assert.IsFalse(unit.Model.Position.Equals(target), "Unit is arleady at target"); // todo, now it supports movement by only one hex, should be more Orientation targetOrientation = Orientation.N; for (int i = 0; i < 6; i++) { if (target.Equals(unit.Model.Position.Neighbors[i])) { targetOrientation = unit.Model.Position.NeighborDirections[i]; } } List <Orientation> transitionalOrientations = OrientationUtils.GetOrientationsToTarget(unit.Model.Orientation, targetOrientation); var journeySteps = new Queue <IJourneyStep <UnitModelComponent> >(); foreach (var orientation in transitionalOrientations) { journeySteps.Enqueue(new JourneyDirector() { To = orientation }); } journeySteps.Enqueue(new JourneyBattle(BattleCircumstances.Director)); journeySteps.Enqueue(new JourneyMotion() { To = target }); journeySteps.Enqueue(new JourneyBattle(BattleCircumstances.Step)); var delta = target - unit.Model.Position; journeySteps.Enqueue(new JourneyStepRepeat() { Delta = delta, NextStepsGenerator = (to) => new List <IJourneyStep <UnitModelComponent> >() { new JourneyMotion() { To = to }, (new JourneyBattle(BattleCircumstances.Step)) } }); return(new LocomotionManager <UnitModelComponent>(unit, journeySteps)); }
public static LocomotionManager <UnitModelComponent> CreatePushJourney(GameCourseModel model, UnitModelComponent unit, MyHexPosition target) { var journeySteps = new Queue <IJourneyStep <UnitModelComponent> >(); journeySteps.Enqueue(new JourneyDisplacement() { To = target }); journeySteps.Enqueue(new JourneyPassiveOnlyBattle()); var delta = target - unit.Model.Position; journeySteps.Enqueue(new JourneyStepRepeat() { Delta = delta, NextStepsGenerator = (to) => new List <IJourneyStep <UnitModelComponent> >() { new JourneyMotion() { To = to }, (new JourneyPassiveOnlyBattle()) } }); return(new LocomotionManager <UnitModelComponent>(unit, journeySteps)); }
public RotationAnimation(UnitModelComponent targetUnit, Orientation targetOrientation) : base(targetUnit) { _model = targetUnit.Model; _targetOrientation = targetOrientation; }
public UnitMotionAnimation(UnitModelComponent targetUnit, MyHexPosition targetPosition) : base(targetUnit) { _model = targetUnit.Model; _targetPosition = targetPosition.GetPosition(); _startPosition = targetUnit.PawnModel.Position.GetPosition(); }