Exemplo n.º 1
0
        /// <summary>
        /// Crosshair must be initialized inside the Concrete Mobile class after its name is set.
        /// </summary>
        /// <param name="mobile"></param>
        /// <param name="isAlly"></param>
        public Crosshair(Mobile mobile)
        {
            //Save References
            this.mobile = mobile;

            //Initialize Crosshair/Pointer Sprites
            crosshairFrame = new Sprite($"Interface/InGame/HUD/Crosshair/CrosshairFrame",
                                        new Vector2(0, 0), DepthParameter.CrosshairFrame);

            crosshairRangeIndicatorList = new List <Sprite>()
            {
                new Sprite($"Interface/InGame/HUD/Crosshair/{mobile.MobileType}{ShotType.S1}" + (mobile.IsEnemy ? "Enemy":"Ally"),
                           new Vector2(0, 0), DepthParameter.CrosshairAimRangeIndicator),
                new Sprite($"Interface/InGame/HUD/Crosshair/{mobile.MobileType}{ShotType.S2}" + (mobile.IsEnemy ? "Enemy":"Ally"),
                           new Vector2(0, 0), DepthParameter.CrosshairAimRangeIndicator),
                new Sprite($"Interface/InGame/HUD/Crosshair/{mobile.MobileType}{ShotType.SS}" + (mobile.IsEnemy ? "Enemy":"Ally"),
                           new Vector2(0, 0), DepthParameter.CrosshairAimRangeIndicator),
            };
            selectedCrosshairRangeIndicator = crosshairRangeIndicatorList[0];

            CrosshairPointer = new Sprite("Interface/InGame/HUD/Crosshair/Pointer",
                                          new Vector2(0, 0), DepthParameter.CrosshairPointer);

            //Initialize Crosshair Components
            crosshairPreset          = crosshairPresets[mobile.MobileType][mobile.SelectedShotType].Clone();
            crosshairDesiredRotation = 0f;

            if (mobile.IsPlayable)
            {
                crosshairAngleList = new List <NumericSpriteFont>()
                {
                    new NumericSpriteFont(FontType.HUDBlueCrosshairTrueAngle, 3, Parameter.HUDCrosshairAngleIndicator, textAnchor: TextAnchor.Middle, attachToCamera: false),
                    new NumericSpriteFont(FontType.HUDBlueCrosshairFalseAngle, 3, Parameter.HUDCrosshairAngleIndicator, textAnchor: TextAnchor.Middle, attachToCamera: false)
                };

                selectedCrosshairAngle = crosshairAngleList[0];
            }

            //Initialize Shooting Angle
            aimPreset     = mobile.MobileMetadata.MobileAimPreset[ShotType.S1];
            ShootingAngle = (aimPreset.AimTrueRotationMin + aimPreset.AimTrueRotationMax) / 2;

            CrosshairPointer.Rotation = crosshairFrame.Rotation + MathHelper.ToRadians(270 + ShootingAngle);

#if DEBUG
            //DEBUG
            debugCrosshair1 = new DebugCrosshair(Color.HotPink);
            debugCrosshair2 = new DebugCrosshair(Color.DarkTurquoise);
            DebugHandler.Instance.Add(debugCrosshair1);
            DebugHandler.Instance.Add(debugCrosshair2);
#endif
            if (mobile.IsPlayable)
            {
                FadeElement();
            }
            else
            {
                HideElement();
            }
        }
Exemplo n.º 2
0
        public SyncMobile(Player player, int[] position)
        {
            Owner                    = player;
            MobileMetadata           = MobileMetadata.BuildMobileMetadata(player, player.PrimaryMobile);
            Position                 = position;
            SynchronizableActionList = new List <SynchronizableAction>();
            Facing                   = Facing.Left;
            IsAlive                  = true;

            AimPreset aimPreset = MobileMetadata.MobileAimPreset[ShotType.S1];

            CrosshairAngle = (aimPreset.AimTrueRotationMax + aimPreset.AimTrueRotationMin) / 2;
        }
Exemplo n.º 3
0
        public void ChangeShot(ShotType shotType)
        {
            ChangeCrosshairPreset(shotType);

            if (shotType == ShotType.S1)
            {
                selectedCrosshairRangeIndicator = crosshairRangeIndicatorList[0];
            }
            else if (shotType == ShotType.S2)
            {
                selectedCrosshairRangeIndicator = crosshairRangeIndicatorList[1];
            }
            else if (shotType == ShotType.SS)
            {
                selectedCrosshairRangeIndicator = crosshairRangeIndicatorList[2];
            }

            aimPreset = mobile.MobileMetadata.MobileAimPreset[shotType];
        }