Exemplo n.º 1
0
        public void Lower(Player player, PlayerSpriteDef psp)
        {
            psp.Sy += LowerSpeed;

            // Is already down.
            if (psp.Sy < WeaponBottom)
            {
                return;
            }

            // Player is dead.
            if (player.PlayerState == PlayerState.Dead)
            {
                psp.Sy = WeaponBottom;

                // don't bring weapon back up
                return;
            }

            var pb = world.PlayerBehavior;

            // The old weapon has been lowered off the screen,
            // so change the weapon and start raising it.
            if (player.Health == 0)
            {
                // Player is dead, so keep the weapon off screen.
                pb.SetPlayerSprite(player, PlayerSprite.Weapon, MobjState.Null);
                return;
            }

            player.ReadyWeapon = player.PendingWeapon;

            //* pb.BringUpWeapon(player);
        }
Exemplo n.º 2
0
        public void WeaponReady(Player player, PlayerSpriteDef psp)
        {
            var pb = world.PlayerBehavior;

            // Get out of attack state.
            if (player.Mobj.State == DoomInfo.States[(int)MobjState.PlayAtk1] ||
                player.Mobj.State == DoomInfo.States[(int)MobjState.PlayAtk2])
            {
                player.Mobj.SetState(MobjState.Play);
            }

            //* if (player.ReadyWeapon == WeaponType.Chainsaw &&
            //     psp.State == DoomInfo.States[(int)MobjState.Saw])
            // {
            //     world.StartSound(player.Mobj, Sfx.SAWIDL, SfxType.Weapon);
            // }

            // Check for weapon change.
            // If player is dead, put the weapon away.
            if (player.PendingWeapon != WeaponType.NoChange || player.Health == 0)
            {
                // Change weapon.
                // Pending weapon should allready be validated.
                var newState = DoomInfo.WeaponInfos[(int)player.ReadyWeapon].DownState;
                pb.SetPlayerSprite(player, PlayerSprite.Weapon, newState);
                return;
            }

            // Check for fire.
            // The missile launcher and bfg do not auto fire.
            if ((player.Cmd.Buttons & TicCmdButtons.Attack) != 0)
            {
                if (!player.AttackDown ||
                    (player.ReadyWeapon != WeaponType.Missile && player.ReadyWeapon != WeaponType.Bfg))
                {
                    player.AttackDown = true;
                    FireWeapon(player);
                    return;
                }
            }
            else
            {
                player.AttackDown = false;
            }

            // Bob the weapon based on movement speed.
            var angle = (128 * player.Mobj.World.LevelTime) & Trig.FineMask;

            psp.Sx = Fixed.One + player.Bob * Trig.Cos(angle);

            angle &= Trig.FineAngleCount / 2 - 1;
            psp.Sy = WeaponTop + player.Bob * Trig.Sin(angle);
        }
Exemplo n.º 3
0
        public void Raise(Player player, PlayerSpriteDef psp)
        {
            psp.Sy -= RaiseSpeed;

            if (psp.Sy > WeaponTop)
            {
                return;
            }

            psp.Sy = WeaponTop;

            // The weapon has been raised all the way, so change to the ready state.
            var newState = DoomInfo.WeaponInfos[(int)player.ReadyWeapon].ReadyState;

            world.PlayerBehavior.SetPlayerSprite(player, PlayerSprite.Weapon, newState);
        }
Exemplo n.º 4
0
        public Player(int number)
        {
            Number = number;

            Cmd = new TicCmd();

            Powers = new int[(int)PowerType.Count];
            Cards  = new bool[(int)CardType.Count];

            Frags = new int[MaxPlayerCount];

            WeaponOwned = new bool[(int)WeaponType.Count];
            Ammo        = new int[(int)WeaponType.Count];
            MaxAmmo     = new int[(int)WeaponType.Count];

            PlayerSprites = new PlayerSpriteDef[(int)PlayerSprite.Count];
            for (var i = 0; i < PlayerSprites.Length; i++)
            {
                PlayerSprites[i] = new PlayerSpriteDef();
            }
        }
Exemplo n.º 5
0
        public Player(int number)
        {
            this.number = number;

            name = defaultPlayerNames[number];

            cmd = new TicCmd();

            powers = new int[(int)PowerType.Count];
            cards  = new bool[(int)CardType.Count];

            frags = new int[MaxPlayerCount];

            weaponOwned = new bool[(int)WeaponType.Count];
            ammo        = new int[(int)AmmoType.Count];
            maxAmmo     = new int[(int)AmmoType.Count];

            playerSprites = new PlayerSpriteDef[(int)PlayerSprite.Count];
            for (var i = 0; i < playerSprites.Length; i++)
            {
                playerSprites[i] = new PlayerSpriteDef();
            }
        }
Exemplo n.º 6
0
        public void FireCGun(Player player, PlayerSpriteDef psp)
        {
            world.StartSound(player.Mobj, Sfx.PISTOL, SfxType.Weapon);

            if (player.Ammo[(int)DoomInfo.WeaponInfos[(int)player.ReadyWeapon].Ammo] == 0)
            {
                return;
            }

            player.Mobj.SetState(MobjState.PlayAtk2);

            player.Ammo[(int)DoomInfo.WeaponInfos[(int)player.ReadyWeapon].Ammo]--;

            //* world.PlayerBehavior.SetPlayerSprite(
            //     player,
            //     PlayerSprite.Flash,
            //     DoomInfo.WeaponInfos[(int)player.ReadyWeapon].FlashState +
            //     psp.State.Number - DoomInfo.States[(int)MobjState.Chain1].Number);

            BulletSlope(player.Mobj);

            WandShot(player.Mobj, player.Refire == 0);
        }
Exemplo n.º 7
0
 public void CheckReload(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.CheckReload(player);
 }
Exemplo n.º 8
0
 public void FirePistol(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.FirePistol(player);
 }
Exemplo n.º 9
0
 public void ReFire(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.ReFire(player);
 }
Exemplo n.º 10
0
 public void Punch(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.Punch(player);
 }
Exemplo n.º 11
0
 public void FireGoldwand(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.FireGoldwand(player);
 }
Exemplo n.º 12
0
 public void FireMissile(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.FireMissile(player);
 }
Exemplo n.º 13
0
 public void FireCGun(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.FireCGun(player, psp);
 }
Exemplo n.º 14
0
 public void BFGsound(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.A_BFGsound(player);
 }
Exemplo n.º 15
0
 public void CloseShotgun2(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.CloseShotgun2(player);
 }
Exemplo n.º 16
0
 public void Light0(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.Light0(player);
 }
Exemplo n.º 17
0
 public void WeaponReady(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.WeaponReady(player, psp);
 }
Exemplo n.º 18
0
 public void GunFlash(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.GunFlash(player);
 }
Exemplo n.º 19
0
 public void Lower(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.Lower(player, psp);
 }
Exemplo n.º 20
0
 public void Saw(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.Saw(player);
 }
Exemplo n.º 21
0
 public void Raise(World world, Player player, PlayerSpriteDef psp)
 {
     world.WeaponBehavior.Raise(player, psp);
 }