Пример #1
0
        /// <summary>
        /// This method can be used to register the new modded arm.
        /// </summary>
        /// <remarks>
        /// Call it from the <see cref="CraftableModdedArm.RegisterArm"/> method.
        /// </remarks>
        public void RegisterArm(CraftableModdedArm armPrefab, IArmModdingRequest armModdingRequest)
        {
            if (!waitForRegistration.ContainsKey(armPrefab))
            {
                waitForRegistration.Add(armPrefab, armModdingRequest);
            }

            isWaitForRegistration = true;
        }
Пример #2
0
        internal void RegisterNewArm(CraftableModdedArm armPrefab, IArmModdingRequest armModdingRequest)
        {
            if (ModdedArmPrefabs.ContainsKey(armPrefab.TechType))
            {
                return;
            }

            string techName = TechTypeExtensions.AsString(armPrefab.TechType);

            GameObject clonedArm = Instantiate(ArmsTemplateCache[armPrefab.ArmTemplate], InactiveCache.transform);

            clonedArm.name = techName;
            clonedArm.SetActive(false);
            SetupHelper graphicsHelper = clonedArm.AddComponent <SetupHelper>();

            ArmTag armTag = clonedArm.AddComponent <ArmTag>();

            armTag.armType     = armPrefab.ArmType;
            armTag.armTemplate = armPrefab.ArmTemplate;
            armTag.techType    = armPrefab.TechType;

            armModdingRequest.SetUpArm(clonedArm, graphicsHelper);

            if (armPrefab.ArmType == ArmType.ExosuitArm)
            {
                armModdingRequest.GetExosuitArmHandler(clonedArm);
            }
            else
            {
                armModdingRequest.GetSeamothArmHandler(clonedArm);
            }

            ModdedArmPrefabs.Add(armPrefab.TechType, clonedArm);

            SNLogger.Log($"New {armPrefab.ArmType} registered: TechType ID: [{(int)armPrefab.TechType}], TechType name: [{techName}]");
        }