예제 #1
0
        /* public static void Read(ref Weapon weapon, ref BinaryReader reader)
         * {
         *  PhysicalObjectHandler.Read(weapon, ref reader);
         *  weapon.changeDirCounter = reader.ReadInt32();
         *  weapon.closestCritDist = reader.ReadSingle();
         *  weapon.exitThrownModeSpeed = reader.ReadSingle();
         *  weapon.firstFrameTraceFromPos = Vector2NHandler.Read(ref reader);
         *  //Weapon.Mode lastMode = (Weapon.Mode)reader.ReadInt32();
         *  Weapon.Mode mode = (Weapon.Mode)reader.ReadInt32();
         *  if (mode != weapon.mode)
         *  {
         *      //weapon.ChangeOverlap(true);
         *      weapon.ChangeMode(mode);
         *  }
         *  if (mode == Weapon.Mode.Thrown && weapon.grabbedBy.Count > 0)
         *  {
         *      weapon.AllGraspsLetGoOfThisObject(false);
         *  }
         *  //weapon.lastMode = lastMode;
         *  weapon.mode = mode;
         *  weapon.rotation = Vector2Handler.Read(ref reader);
         *  weapon.rotationSpeed = reader.ReadSingle();
         *  weapon.throwModeFrames = reader.ReadInt32();
         *  weapon.thrownBy = DistHandler.ReadCreature(ref weapon.thrownBy, ref reader, weapon.room);
         *  weapon.thrownClosestToCreature = DistHandler.ReadCreature(ref weapon.thrownClosestToCreature, ref reader, weapon.room);
         *  weapon.thrownPos = Vector2Handler.Read(ref reader);
         * } */

        public static void Read(Weapon weapon, ref BinaryReader reader)
        {
            PhysicalObjectHandler.Read(weapon, ref reader);
            weapon.changeDirCounter       = reader.ReadInt32();
            weapon.closestCritDist        = reader.ReadSingle();
            weapon.exitThrownModeSpeed    = reader.ReadSingle();
            weapon.firstFrameTraceFromPos = Vector2NHandler.Read(ref reader);
            //Weapon.Mode lastMode = (Weapon.Mode)reader.ReadInt32();
            Weapon.Mode mode = (Weapon.Mode)reader.ReadInt32();
            if (mode != weapon.mode)
            {
                //weapon.ChangeOverlap(true);
                weapon.ChangeMode(mode);
            }
            if (mode == Weapon.Mode.Thrown && weapon.grabbedBy.Count > 0)
            {
                weapon.AllGraspsLetGoOfThisObject(false);
            }
            //weapon.lastMode = lastMode;
            weapon.mode                    = mode;
            weapon.rotation                = Vector2Handler.Read(ref reader);
            weapon.rotationSpeed           = reader.ReadSingle();
            weapon.throwModeFrames         = reader.ReadInt32();
            weapon.thrownBy                = DistHandler.ReadCreature(ref weapon.thrownBy, ref reader, weapon.room);
            weapon.thrownClosestToCreature = DistHandler.ReadCreature(ref weapon.thrownClosestToCreature, ref reader, weapon.room);
            weapon.thrownPos               = Vector2Handler.Read(ref reader);
            // return weapon;
        }
예제 #2
0
        public static bool WasShootButtonPressed(Weapon.Mode mode)
        {
            switch (mode)
            {
            case Weapon.Mode.Auto:
                if (_mouseState.LeftButton == ButtonState.Pressed || _gamePadState.IsButtonDown(Controls.ButtonShoot))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case Weapon.Mode.Single:
                if (WasMouseLeftButtonPressed() || WasButtonPressed(Controls.ButtonShoot))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            default:
                return(false);
            }
        }
예제 #3
0
        public static Weapon CreatePistol(string name)
        {
            List <Texture2D> frames = new List <Texture2D>();

            frames.Add(Art.PistolShoot1);
            frames.Add(Art.PistolShoot2);
            frames.Add(Art.PistolShoot3);

            int   damage      = 3;
            int   cooldown    = 20;
            float bulletSpeed = 20f;
            float recoil      = 7f;

            Weapon.Mode mode = Weapon.Mode.Single;

            return(new Weapon(name, cooldown, damage, bulletSpeed, recoil, mode, frames, 3, Animation.Mode.OnDemand));
        }
 private static void Spear_ChangeMode(On.Spear.orig_ChangeMode orig, Spear self, Weapon.Mode newMode)
 {
     if (self.mode == Weapon.Mode.StuckInWall && newMode != Weapon.Mode.StuckInWall)
     {
         if (self.abstractSpear.stuckInWallCycles >= 0)
         {
             for (int i = -1; i < 3; i++)
             {
                 self.room.GetTile(self.stuckInWall.Value + new Vector2(20f * (float)i, 0f)).horizontalBeam = false;
             }
         }
         else
         {
             for (int j = -1; j < 3; j++)
             {
                 self.room.GetTile(self.stuckInWall.Value + new Vector2(0f, 20f * (float)j)).verticalBeam = false;
             }
         }
         self.stuckInWall = null;
         self.abstractSpear.stuckInWallCycles = 0;
         self.addPoles = false;
     }
     orig.Invoke(self, newMode);
 }