Пример #1
0
        private void UpdateBulletMode(FVRFireArm firearm)
        {
            if (Attachment != null && Attachment.GetRootObject() != null && Attachment.GetRootObject() == firearm)
            {
                MeatTrak.NumberTarget = 0;

                FVRFireArmMagazine mag = firearm.GetComponentInChildren <FVRFireArmMagazine>();
                if (mag != null)
                {
                    MeatTrak.NumberTarget = mag.m_numRounds;
                }

                FVRFireArmClip clip = firearm.GetComponentInChildren <FVRFireArmClip>();
                if (clip != null)
                {
                    MeatTrak.NumberTarget = clip.m_numRounds;
                }

                if (firearm is FVRFireArm)
                {
                    if (firearm is BreakActionWeapon)
                    {
                        BreakActionWeapon baw = firearm as BreakActionWeapon;
                        for (int j = 0; j < baw.Barrels.Length; j++)
                        {
                            if (baw.Barrels[j].Chamber.IsFull && !baw.Barrels[j].Chamber.IsSpent)
                            {
                                MeatTrak.NumberTarget += 1;
                            }
                        }
                    }
                    else if (firearm is Derringer)
                    {
                        Derringer derringer = firearm as Derringer;
                        for (int j = 0; j < derringer.Barrels.Count; j++)
                        {
                            if (derringer.Barrels[j].Chamber.IsFull && !derringer.Barrels[j].Chamber.IsSpent)
                            {
                                MeatTrak.NumberTarget += 1;
                            }
                        }
                    }
                    else if (firearm is SingleActionRevolver)
                    {
                        SingleActionRevolver saRevolver = firearm as SingleActionRevolver;
                        for (int j = 0; j < saRevolver.Cylinder.Chambers.Length; j++)
                        {
                            if (saRevolver.Cylinder.Chambers[j].IsFull && !saRevolver.Cylinder.Chambers[j].IsSpent)
                            {
                                MeatTrak.NumberTarget += 1;
                            }
                        }
                    }

                    if (firearm.GetType().GetField("Chamber") != null)                     //handles most guns
                    {
                        FVRFireArmChamber Chamber = (FVRFireArmChamber)firearm.GetType().GetField("Chamber").GetValue(firearm);
                        if (Chamber.IsFull && !Chamber.IsSpent)
                        {
                            MeatTrak.NumberTarget += 1;
                        }
                    }
                    if (firearm.GetType().GetField("Chambers") != null)                     //handles Revolver, LAPD2019, RevolvingShotgun
                    {
                        FVRFireArmChamber[] Chambers = (FVRFireArmChamber[])firearm.GetType().GetField("Chambers").GetValue(firearm);
                        for (int j = 0; j < Chambers.Length; j++)
                        {
                            if (Chambers[j].IsFull && !Chambers[j].IsSpent)
                            {
                                MeatTrak.NumberTarget += 1;
                            }
                        }
                    }
                }
            }
        }