public void LoadVesselParts(string buildString) { List <VesselPart> parts = GameStringsHelper.PartsListFromBuildString(buildString); foreach (VesselPart part in parts) { PixelGridButton button = PixelGridManager.Instance().ButtonFromRelativePosition(part.position); PartPlacementManager.Instance().PlacePart(button, part); } }
public void SpawnButtons(int buttonSize) { colorButtons = new Dictionary <int, HashSet <UnityEngine.UI.Image> >(); if (SpriteManager.SPRITE_SIZE % buttonSize != 0) { throw new UnityException(buttonSize.ToString() + " does not divide " + SpriteManager.SPRITE_SIZE + "!"); } for (int i = 0; i < buttonGrid.GetLength(0); i++) { for (int j = 0; j < buttonGrid.GetLength(1); j++) { UnityEngine.UI.Button button = buttonGrid[i, j]; Destroy(button.gameObject); } } int buttonGridSize = SpriteManager.SPRITE_SIZE / buttonSize; buttonGrid = new UnityEngine.UI.Button[buttonGridSize, buttonGridSize]; for (int i = 0; i < buttonGrid.GetLength(0); i++) { for (int j = 0; j < buttonGrid.GetLength(1); j++) { GameObject buttonObject = new GameObject("Button " + i.ToString() + j.ToString()); UnityEngine.UI.Button buttonComponent = buttonObject.AddComponent <UnityEngine.UI.Button>(); RectTransform rectTransform = buttonObject.AddComponent <RectTransform>(); buttonObject.transform.SetParent(gameObject.transform); rectTransform.anchorMin = new Vector2((float)i / buttonGridSize, (float)j / buttonGridSize); rectTransform.anchorMax = new Vector2((float)(i + 1) / buttonGridSize, (float)(j + 1) / buttonGridSize); rectTransform.offsetMin = Vector2.zero; rectTransform.offsetMax = Vector2.zero; UnityEngine.UI.Image image = buttonObject.AddComponent <UnityEngine.UI.Image>(); image.sprite = SpriteManager.Instance().SpriteFromName("square"); image.color = Color.black; //buttonScript.targetGraphic = image; PixelGridButton buttonScript = buttonObject.AddComponent <PixelGridButton>(); buttonScript.Initialize(new Vector2(i, j)); buttonComponent.onClick.AddListener(buttonScript.OnClicked); UnityEngine.EventSystems.EventTrigger eventTrigger = buttonObject.AddComponent <UnityEngine.EventSystems.EventTrigger>(); UnityEngine.EventSystems.EventTrigger.Entry entry = new UnityEngine.EventSystems.EventTrigger.Entry(); entry.eventID = UnityEngine.EventSystems.EventTriggerType.PointerEnter; entry.callback.AddListener((eventData) => { buttonScript.MouseEnter(); }); eventTrigger.triggers.Add(entry); buttonGrid[i, j] = buttonComponent; } } if (PartPlacementManager.Instance() != null) { PartPlacementManager.Instance().ResetParts(); } }
public void Save() { string name = input.text; PixelGridManager.Instance().SaveTexture(name); string buildstring = "build "; buildstring += name + " "; buildstring += sizeSlider.value.ToString() + " "; buildstring += qualitySlider.value.ToString() + " "; foreach (VesselPart part in PartPlacementManager.Instance().GetListOfParts()) { if (part.partType == VesselPartType.Bay) { buildstring += "-bay "; } else if (part.partType == VesselPartType.Engine) { buildstring += "-engine "; } else if (part.partType == VesselPartType.Launcher) { buildstring += "-launcher "; } buildstring += part.size.ToString() + " "; buildstring += part.quality1.ToString() + " "; buildstring += part.quality2.ToString() + " "; Vector2 positionInRelativeForm = PixelGridManager.Instance().GetRelativeForm(part.position); buildstring += positionInRelativeForm.x.ToString() + " "; buildstring += positionInRelativeForm.y.ToString() + " "; buildstring += part.facing.ToString() + " "; } string vesselDir = GameStringsHelper.VesselDirectory(); if (!System.IO.Directory.Exists(vesselDir)) { System.IO.Directory.CreateDirectory(vesselDir); } string path = GameStringsHelper.VesselNameToPath(name); if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); } System.IO.File.WriteAllText(path, buildstring); }
public void ButtonClicked(PixelGridButton button) { if (currentTool == ToolType.placePart) { PartPlacementManager.Instance().PlacePartFromUI(button); currentTool = ToolType.noTool; } else if (currentTool == ToolType.deletePart) { PartPlacementManager.Instance().DeletePart(button); } else if (currentTool == ToolType.paint) //regular color-painting click { UnityEngine.UI.Image image = button.gameObject.GetComponent <UnityEngine.UI.Image>(); image.color = SelectedColor(); foreach (int key in colorButtons.Keys) { colorButtons[key].Remove(image); } ColorButtonsAdd(selectedColor, image); } }