Exemplo n.º 1
0
 public DeathAnimation(UnitModelComponent targetUnit) : base(targetUnit)
 {
     _model     = targetUnit.Model;
     _renderers = new List <SpriteRenderer>();
     _renderers.AddRange(targetUnit.GetComponentsInChildren <SpriteRenderer>());
     _startTime = Time.time;
 }
Exemplo n.º 2
0
        public static LocomotionManager <UnitModelComponent> CreateDeathJourney(UnitModelComponent unit)
        {
            var journeySteps = new Queue <IJourneyStep <UnitModelComponent> >();

            journeySteps.Enqueue(new JourneyDeath());
            return(new LocomotionManager <UnitModelComponent>(unit, journeySteps));
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
 public RotationAnimation(UnitModelComponent targetUnit, Orientation targetOrientation) : base(targetUnit)
 {
     _model             = targetUnit.Model;
     _targetOrientation = targetOrientation;
 }
Exemplo n.º 8
0
 public UnitMotionAnimation(UnitModelComponent targetUnit, MyHexPosition targetPosition) : base(targetUnit)
 {
     _model          = targetUnit.Model;
     _targetPosition = targetPosition.GetPosition();
     _startPosition  = targetUnit.PawnModel.Position.GetPosition();
 }