コード例 #1
0
    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);
        }
    }
コード例 #2
0
    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();
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
    // Start is called before the first frame update
    void Awake()
    {
        instance = this;

        UpdateDemoImage();
    }