private void Awake()
        {
            var buttonPositionCenter = new Vector2(0, 0);
            var buttonSpacing        = 104;

            var parent = GetComponentInChildren <Canvas>().transform;
            var color  = new Color32(189, 255, 255, 255);

            var text = new GameObject("label", typeof(RectTransform)).AddComponent <Text>();

            RectTransformExtensions.SetParams(text.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(text.rectTransform, 500, 140);
            text.rectTransform.anchoredPosition = buttonPositionCenter + new Vector2(0, 80);
            text.color         = GetComponentInChildren <Text>().color;
            text.text          = "Position";
            text.fontSize      = Mathf.FloorToInt(GetComponentInChildren <Text>().fontSize * 1.8f);
            text.font          = GetComponentInChildren <Text>().font;
            text.alignment     = TextAnchor.MiddleCenter;
            text.raycastTarget = false;

            for (int i = 0; i < 4; ++i)
            {
                var button = CheckboxButton.CreateCheckboxNoText(parent, color, 100);
                button.Initialize();
                button.toggled = false;
                button.rectTransform.anchoredPosition = buttonPositionCenter + new Vector2((-1.5f + i) * buttonSpacing, 0);
                var buttonIndex = i;
                button.onToggled = (bool toggled) => {
                    SetPosition(buttonIndex);
                };
                positionButtons.Add(button);
            }

            OnProtoDeserialize(null);
        }
			public override IEnumerator GetGameObjectAsync(IOut<GameObject> gameObject)
			{
				CoroutineTask<GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);
				yield return task;
				var smallLockerPrefab = task.GetResult();
				GameObject prefab = GameObject.Instantiate(smallLockerPrefab);
				var storageAccess = prefab.EnsureComponent<VehicleStorageAccess>();
				storageAccess.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren<TextMeshProUGUI>());
#endif

				var container = prefab.EnsureComponent<StorageContainer>();
				container.width = Mod.config.LockerWidth;
				container.height = Mod.config.LockerHeight;
				container.container.Resize(Mod.config.LockerWidth, Mod.config.LockerHeight);

				var meshRenderers = prefab.GetComponentsInChildren<MeshRenderer>();
				foreach (var meshRenderer in meshRenderers)
				{
					meshRenderer.material.color = new Color(0, 0, 1);
				}

				var label = prefab.FindChild("Label");
				DestroyImmediate(label);

				var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
				storageAccess.background = LockerPrefabShared.CreateBackground(canvas.transform);
				storageAccess.icon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 15);
				storageAccess.text = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, -40, 10, "");
				storageAccess.seamothIcon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
				storageAccess.seamothCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");
				storageAccess.exosuitIcon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
				storageAccess.exosuitCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");

				storageAccess.seamothIcon.rectTransform.anchoredPosition += new Vector2(-23, 0);
				storageAccess.seamothCountText.rectTransform.anchoredPosition += new Vector2(-23, 0);
				storageAccess.exosuitIcon.rectTransform.anchoredPosition += new Vector2(23, 0);
				storageAccess.exosuitCountText.rectTransform.anchoredPosition += new Vector2(23, 0);

				if (Mod.config.UseAutosortMod)
				{
					storageAccess.autosortCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Autosort");
					storageAccess.autosortCheckbox.transform.localPosition = new Vector3(0, -104 + 19);
				}

				storageAccess.enableCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Enabled");
				storageAccess.enableCheckbox.transform.localPosition = new Vector3(0, -104);

				storageAccess.background.gameObject.SetActive(false);

#if SN1
				return prefab;
#elif BZ
				gameObject.Set(prefab);
#endif
			}
Exemplo n.º 3
0
        public static GameObject GetPrefab()
        {
            GameObject originalPrefab = Resources.Load <GameObject>("Submarine/Build/SmallLocker");
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            prefab.name = "VehicleStorageAccess";

            var container = prefab.GetComponent <StorageContainer>();

            container.width  = Mod.config.LockerWidth;
            container.height = Mod.config.LockerHeight;
            container.container.Resize(Mod.config.LockerWidth, Mod.config.LockerHeight);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(0, 0, 1);
            }

            var storageAccess = prefab.AddComponent <VehicleStorageAccess>();

            storageAccess.textPrefab = GameObject.Instantiate(prefab.GetComponentInChildren <Text>());
            var label = prefab.FindChild("Label");

            DestroyImmediate(label);

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);

            storageAccess.background       = LockerPrefabShared.CreateBackground(canvas.transform);
            storageAccess.icon             = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 15);
            storageAccess.text             = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, -40, 10, "");
            storageAccess.seamothIcon      = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
            storageAccess.seamothCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");
            storageAccess.exosuitIcon      = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
            storageAccess.exosuitCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");

            storageAccess.seamothIcon.rectTransform.anchoredPosition      += new Vector2(-23, 0);
            storageAccess.seamothCountText.rectTransform.anchoredPosition += new Vector2(-23, 0);
            storageAccess.exosuitIcon.rectTransform.anchoredPosition      += new Vector2(23, 0);
            storageAccess.exosuitCountText.rectTransform.anchoredPosition += new Vector2(23, 0);

#if USE_AUTOSORT
            storageAccess.autosortCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Autosort");
            storageAccess.autosortCheckbox.transform.localPosition = new Vector3(0, -104 + 19);
#endif

            storageAccess.enableCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Enabled");
            storageAccess.enableCheckbox.transform.localPosition = new Vector3(0, -104);

            storageAccess.background.gameObject.SetActive(false);

            return(prefab);
        }