Example #1
0
        private static void RegisterRifle(ModRifleComponent modRifleComponent, Transform weaponViewTransform)
        {
            string name = ModComponentUtils.NameUtils.NormalizeName(modRifleComponent.name);

            if (weaponViewTransform.Find(name) != null)
            {
                // already registered
                return;
            }

            Logger.Log("Registering '{0}'", name);

            GameObject template = weaponViewTransform.Find("Rifle").gameObject;
            GameObject weapon   = UnityEngine.Object.Instantiate(template, weaponViewTransform);

            weapon.name = name;
            weapon.AddComponent <FixMuzzleFlashTransformParent>();
            weapon.GetComponent <vp_FPSWeapon>().m_UseFirstPersonHands = false;

            Transform rifle_rig = weapon.transform.Find("rifle_rig");

            if (rifle_rig != null)
            {
                rifle_rig.transform.parent = null;
                UnityEngine.Object.Destroy(rifle_rig.gameObject);
            }

            GameObject equippedModelPrefab = Resources.Load(modRifleComponent.EquippedModelPrefabName)?.Cast <GameObject>();
            GameObject equippedModel       = UnityEngine.Object.Instantiate(equippedModelPrefab, weapon.transform);

            equippedModel.name = (name + "_rig").ToLower();
        }
        private static FirstPersonItem ConfiguredRifleFirstPersonItem(ModRifleComponent modRifleComponent)
        {
            FirstPersonItem result = ModUtils.GetOrCreateComponent <FirstPersonItem>(modRifleComponent);

            FirstPersonItem template = Resources.Load <GameObject>("GEAR_Rifle").GetComponent <FirstPersonItem>();

            result.m_FirstPersonObjectName  = ModUtils.NormalizeName(modRifleComponent.name);
            result.m_UnWieldAudio           = template.m_UnWieldAudio;
            result.m_WieldAudio             = template.m_WieldAudio;
            result.m_PlayerStateTransitions = UnityEngine.Object.Instantiate(template.m_PlayerStateTransitions);
            result.Awake();

            return(result);
        }
Example #3
0
 private static void InitializeRifleComponent(ModRifleComponent modRifle, ProxyObject dict, string className = "ModRifleComponent")
 {
     InitializeEquippableComponent(modRifle, dict, className);
     modRifle.ClipSize         = dict[className]["ClipSize"];
     modRifle.DamagePerShot    = dict[className]["DamagePerShot"];
     modRifle.Range            = dict[className]["Range"];
     modRifle.FiringDelay      = dict[className]["FiringDelay"];
     modRifle.ReloadDelay      = dict[className]["ReloadDelay"];
     modRifle.AimDelay         = dict[className]["AimDelay"];
     modRifle.MuzzleFlashDelay = dict[className]["MuzzleFlashDelay"];
     modRifle.MuzzleSmokeDelay = dict[className]["MuzzleSmokeDelay"];
     modRifle.MinSway          = dict[className]["MinSway"];
     modRifle.MaxSway          = dict[className]["MaxSway"];
     modRifle.SwayIncrement    = dict[className]["SwayIncrement"];
 }
        private static void ConfigureRifle(ModComponent modComponent)
        {
            ModRifleComponent modRifleComponent = modComponent as ModRifleComponent;

            if (modRifleComponent == null)
            {
                return;
            }

            GunItem gunItem = ModUtils.GetOrCreateComponent <GunItem>(modRifleComponent);

            gunItem.m_GunType        = GunType.Rifle;
            gunItem.m_AmmoPrefab     = (GameObject)Resources.Load("GEAR_RifleAmmoSingle");
            gunItem.m_AmmoSpriteName = "ico_units_ammo";

            gunItem.m_AccuracyRange          = modRifleComponent.Range;
            gunItem.m_ClipSize               = modRifleComponent.ClipSize;
            gunItem.m_DamageHP               = modRifleComponent.DamagePerShot;
            gunItem.m_FiringRateSeconds      = modRifleComponent.FiringDelay;
            gunItem.m_MuzzleFlash_FlashDelay = modRifleComponent.MuzzleFlashDelay;
            gunItem.m_MuzzleFlash_SmokeDelay = modRifleComponent.MuzzleSmokeDelay;
            gunItem.m_ReloadCoolDownSeconds  = modRifleComponent.ReloadDelay;

            gunItem.m_DryFireAudio = "Play_RifleDryFire";
            gunItem.m_ImpactAudio  = "Play_BulletImpacts";

            gunItem.m_SwayIncreasePerSecond = modRifleComponent.SwayIncrement;
            gunItem.m_SwayValueZeroFatigue  = modRifleComponent.MinSway;
            gunItem.m_SwayValueMaxFatigue   = modRifleComponent.MaxSway;

            Cleanable cleanable = ModUtils.GetOrCreateComponent <Cleanable>(modRifleComponent);

            cleanable.m_ConditionIncreaseMin = 2;
            cleanable.m_ConditionIncreaseMin = 5;
            cleanable.m_DurationMinutesMin   = 15;
            cleanable.m_DurationMinutesMax   = 5;
            cleanable.m_CleanAudio           = "Play_RifleCleaning";
            cleanable.m_RequiresToolToClean  = true;
            cleanable.m_CleanToolChoices     = new ToolsItem[] { Resources.Load <GameObject>("GEAR_RifleCleaningKit").GetComponent <ToolsItem>() };

            FirstPersonItem firstPersonItem = ConfiguredRifleFirstPersonItem(modRifleComponent);

            ModAnimationStateMachine animation = ModUtils.GetOrCreateComponent <ModAnimationStateMachine>(modRifleComponent);

            animation.SetTransitions(firstPersonItem.m_PlayerStateTransitions);
        }
Example #5
0
        private static FirstPersonItem ConfiguredRifleFirstPersonItem(ModRifleComponent modRifleComponent)
        {
            FirstPersonItem result = ModComponentUtils.ComponentUtils.GetOrCreateComponent <FirstPersonItem>(modRifleComponent);

            GameObject revolver = Resources.Load <GameObject>("GEAR_Revolver");

            if (revolver is null)
            {
                Logger.LogWarning("Could not load revolver gameobject!");
            }
            else
            {
                Logger.LogWarning("Loaded revolver gameobject!");
            }

            FirstPersonItem template = revolver?.GetComponent <FirstPersonItem>();

            if (template is null)
            {
                Logger.LogWarning("Could not load first person template from revolver!");
            }
            else
            {
                Logger.LogWarning("Loaded first person template from revolver!");
            }

            result.m_FirstPersonObjectName = ModComponentUtils.NameUtils.NormalizeName(modRifleComponent.name);
            result.m_UnWieldAudio          = template.m_UnWieldAudio;
            result.m_WieldAudio            = template.m_WieldAudio;
            Logger.LogWarning("made it this far");
            result.m_PlayerStateTransitions = Object.Instantiate(template.m_PlayerStateTransitions);
            Logger.LogWarning("farther");
            //result.Awake();
            Logger.LogWarning("the end");
            return(result);
        }
Example #6
0
 public static void RegisterRifle(ModRifleComponent modRifleComponent)
 {
     pendingRifles.Add(modRifleComponent);
 }
Example #7
0
        public static void InitializeComponents(ref GameObject prefab, ProxyObject dict)
        {
            if (ComponentUtils.GetModComponent(prefab) != null || dict is null)
            {
                return;
            }

            #region Mod Components
            if (JsonUtils.ContainsKey(dict, "ModBedComponent"))
            {
                ModBedComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBedComponent>(prefab);
                InitializeBedComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModBodyHarvestComponent"))
            {
                ModBodyHarvestComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBodyHarvestComponent>(prefab);
                InitializeBodyHarvestComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCharcoalComponent"))
            {
                ModCharcoalComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCharcoalComponent>(prefab);
                InitializeCharcoalComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModClothingComponent"))
            {
                ModClothingComponent newComponent = ComponentUtils.GetOrCreateComponent <ModClothingComponent>(prefab);
                InitializeClothingComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCollectibleComponent"))
            {
                ModCollectibleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCollectibleComponent>(prefab);
                InitializeCollectibleComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCookableComponent"))
            {
                ModCookableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookableComponent>(prefab);
                InitializeCookableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCookingPotComponent"))
            {
                ModCookingPotComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookingPotComponent>(prefab);
                InitializeCookingPotComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModExplosiveComponent"))
            {
                ModExplosiveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModExplosiveComponent>(prefab);
                InitializeExplosiveComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFirstAidComponent"))
            {
                ModFirstAidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFirstAidComponent>(prefab);
                InitializeFirstAidComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFoodComponent"))
            {
                ModFoodComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFoodComponent>(prefab);
                InitializeFoodComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModGenericComponent"))
            {
                ModGenericComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericComponent>(prefab);
                InitializeGenericComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModGenericEquippableComponent"))
            {
                ModGenericEquippableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericEquippableComponent>(prefab);
                InitializeGenericEquippableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModLiquidComponent"))
            {
                ModLiquidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModLiquidComponent>(prefab);
                InitializeLiquidComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModPowderComponent"))
            {
                ModPowderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPowderComponent>(prefab);
                InitializePowderComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModPurificationComponent"))
            {
                ModPurificationComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPurificationComponent>(prefab);
                InitializePurificationComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRandomItemComponent"))
            {
                ModRandomItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomItemComponent>(prefab);
                InitializeRandomItemComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRandomWeightedItemComponent"))
            {
                ModRandomWeightedItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomWeightedItemComponent>(prefab);
                InitializeRandomWeightedItemComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModResearchComponent"))
            {
                ModResearchComponent newComponent = ComponentUtils.GetOrCreateComponent <ModResearchComponent>(prefab);
                InitializeResearchComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRifleComponent"))
            {
                ModRifleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRifleComponent>(prefab);
                InitializeRifleComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModToolComponent"))
            {
                ModToolComponent newComponent = ComponentUtils.GetOrCreateComponent <ModToolComponent>(prefab);
                InitializeToolComponent(newComponent, dict);
            }
            #endregion

            #region Behaviour Components
            if (JsonUtils.ContainsKey(dict, "ModAccelerantComponent"))
            {
                ModAccelerantComponent newComponent = ComponentUtils.GetOrCreateComponent <ModAccelerantComponent>(prefab);
                InitializeAccelerantComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModBurnableComponent"))
            {
                ModBurnableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBurnableComponent>(prefab);
                InitializeBurnableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFireStarterComponent"))
            {
                ModFireStarterComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFireStarterComponent>(prefab);
                InitializeFireStarterComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModTinderComponent"))
            {
                ModTinderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModTinderComponent>(prefab);
                InitializeTinderComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModCarryingCapacityComponent"))
            {
                ModCarryingCapacityComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCarryingCapacityComponent>(prefab);
                InitializeCarryingCapacityComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModEvolveComponent"))
            {
                ModEvolveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModEvolveComponent>(prefab);
                InitializeEvolveComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModHarvestableComponent"))
            {
                ModHarvestableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModHarvestableComponent>(prefab);
                InitializeHarvestableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModMillableComponent"))
            {
                ModMillableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModMillableComponent>(prefab);
                InitializeMillableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModRepairableComponent"))
            {
                ModRepairableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRepairableComponent>(prefab);
                InitializeRepairableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModScentComponent"))
            {
                ModScentComponent newComponent = ComponentUtils.GetOrCreateComponent <ModScentComponent>(prefab);
                InitializeScentComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModSharpenableComponent"))
            {
                ModSharpenableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModSharpenableComponent>(prefab);
                InitializeSharpenableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModStackableComponent"))
            {
                ModStackableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModStackableComponent>(prefab);
                InitializeStackableComponent(newComponent, dict);
            }
            #endregion

            #region Modifications
            if (JsonUtils.ContainsKey(dict, "ChangeLayer"))
            {
                ChangeLayer newComponent = ComponentUtils.GetOrCreateComponent <ChangeLayer>(prefab);
                InitializeChangeLayer(newComponent, dict);
            }
            #endregion
        }