public static void CloneBoard()
    {
        RaycastHit hit;

        if (Physics.Raycast(FirstPersonInteraction.Ray(), out hit, Settings.ReachDistance, Wire.IgnoreWiresLayermask))
        {
            if (hit.collider.tag == "CircuitBoard")
            {
                GameObject CloneThis = hit.collider.gameObject;
                if (Input.GetButton("Mod"))
                {
                    GameObject RootBoard = hit.collider.transform.root.gameObject;
                    if (RootBoard.tag == "CircuitBoard")
                    {
                        CloneThis = RootBoard;
                    }
                }

                GameObject newboard = Object.Instantiate(CloneThis, new Vector3(0, -2000, 0), Quaternion.identity); // instantiated so far away so that nothing can interfere with connection.findpoints's raycasts
                RecalculateClustersOfBoard(newboard);
                BoardPlacer.NewBoardBeingPlaced(newboard);

                GameplayUIManager.UIState = UIState.BoardBeingPlaced;
                return;
            }
        }

        SoundPlayer.PlaySoundGlobal(References.Sounds.FailDoSomething);
        GameplayUIManager.UIState = UIState.None;
    }
    // sets the board being looked at to the board being placed so it can be moved/rotated/deleted without removing all its children first
    public static void MoveExistingBoard()
    {
        RaycastHit hit;

        if (Physics.Raycast(FirstPersonInteraction.Ray(), out hit, Settings.ReachDistance, Wire.IgnoreWiresLayermask))
        {
            if (hit.collider.tag == "CircuitBoard")
            {
                GameObject MoveThis = hit.collider.gameObject;
                if (Input.GetButton("Mod"))
                {
                    GameObject RootBoard = hit.collider.transform.root.gameObject;
                    if (RootBoard.tag == "CircuitBoard")
                    {
                        MoveThis = RootBoard;
                    }                                                              // make sure to check for circuitboard in case of mounts
                }
                BoardPlacer.NewBoardBeingPlaced(MoveThis);

                GameplayUIManager.UIState = UIState.BoardBeingPlaced;
                return;
            }
        }

        SoundPlayer.PlaySoundGlobal(References.Sounds.FailDoSomething);
        GameplayUIManager.UIState = UIState.None;
    }
Exemple #3
0
 private static void Prefix(BoardPlacer __instance)
 {
     if (BoardPlacer.BoardBeingPlaced == null)
     {
         IGConsole.Log("null board?");
     }
     foreach (BuildListener listener in instances)
     {
         listener.OnPlaceBoard(BoardPlacer.BoardBeingPlaced);
     }
 }
    public static void CreateNewBoard(int x, int z)
    {
        GameObject NewBoard = Object.Instantiate(References.Prefabs.CircuitBoard, BoardPlacer.ReferenceObject.transform);

        // set the board's dimensions
        CircuitBoard board = NewBoard.GetComponent <CircuitBoard>();

        board.x = x;
        board.z = z;
        board.CreateCuboid();

        BoardPlacer.NewBoardBeingPlaced(NewBoard);
    }
    public static void RestoreMostRecentlyDeletedBoard()
    {
        string[] BoardBackups = Directory.GetFiles(Application.persistentDataPath + "/backups/_____deletedboards");
        System.Array.Sort(BoardBackups);

        SavedObjectV2 save        = (SavedObjectV2)FileUtilities.LoadFromFile(BoardBackups[BoardBackups.Length - 1]);
        GameObject    LoadedBoard = SavedObjectUtilities.LoadSavedObject(save);

        LoadedBoard.transform.position = new Vector3(0, -2000, 0);
        RecalculateClustersOfBoard(LoadedBoard);

        BoardPlacer.NewBoardBeingPlaced(LoadedBoard);
        GameplayUIManager.UIState = UIState.BoardBeingPlaced;
    }
    public void Load()
    {
        if (SelectedBoard == null)
        {
            return;
        }

        SavedObjectV2 save        = (SavedObjectV2)FileUtilities.LoadFromFile(SelectedBoard.FilePath);
        GameObject    LoadedBoard = SavedObjectUtilities.LoadSavedObject(save);

        HideAll();

        LoadedBoard.transform.position = new Vector3(0, -2000, 0);
        BoardFunctions.RecalculateClustersOfBoard(LoadedBoard);

        BoardPlacer.NewBoardBeingPlaced(LoadedBoard);
        GameplayUIManager.UIState = UIState.BoardBeingPlaced;
    }
Exemple #7
0
    public void Done(bool CancelPlacement = false)
    {
        // shitty hack to make sure a new board is generated on the next new board menu open. Works by tricking the caching system into thinking SizeX has changed
        PreviousSizeX = -69696969;

        // close the menu and disable the script
        NewBoardCanvas.enabled = false;

        if (CancelPlacement)
        {
            GameplayUIManager.UIState = UIState.None;
            BoardPlacer.CancelPlacement();
        }
        else
        {
            GameplayUIManager.UIState = UIState.BoardBeingPlaced;
        }

        //Input.ResetInputAxes(); // so that if V is used to place the board (a double tap), the board menu is not opened again // unnecessary now that we have UI states?
    }
Exemple #8
0
 private void Init()
 {
     if (boardPlacer != null)
     {
         return;
     }
     boardPlacer = GameObject.FindObjectOfType <BoardPlacer>();
     if (!boardPlacer)
     {
         IGConsole.Error("Could not find BoardPlacer");
         return;
     }
     IGConsole.Log("Board placer found");
     _SetChildCircuitsMegaMeshStatus = boardPlacer.GetType()
                                       .GetMethod("SetChildCircuitsMegaMeshStatus", BindingFlags.NonPublic | BindingFlags.Instance);
     if (_SetChildCircuitsMegaMeshStatus == null)
     {
         IGConsole.Error("Could not get SCCMMS method");
         return;
     }
     IGConsole.Log("Got SCCMMS method");
 }
Exemple #9
0
 protected override void Start()
 {
     base.Start();
     moveCalculator = GetComponent <MoveCalculator>();
     boardPlacer    = GetComponent <BoardPlacer>();
 }
Exemple #10
0
    public void RunNewBoardMenu()
    {
        // caching system makes sure a new board is only generated on frames where it matters
        if (PreviousSizeX != SizeX || CachedSizeY != SizeY)
        {
            BoardFunctions.CreateNewBoard(SizeX, SizeY);
        }
        PreviousSizeX = SizeX;
        CachedSizeY   = SizeY;

        // create the menu if space or enter or V are pressed
        if (Input.GetButtonDown("Jump") || Input.GetButtonDown("Submit") || Input.GetButtonDown("BoardMenu") || Input.GetButtonDown("Confirm")) // the last check is so you can place the same new board by double tapping v
        {
            Done();
        }

        // cancel if esc is pressed
        if (Input.GetButtonDown("Cancel"))
        {
            Done(true);
        }

        // tab between input fields
        if (Input.GetButtonDown("tab"))
        {
            if (SizeXInput.isFocused)
            {
                SizeYInput.ActivateInputField();
            }
            else
            {
                SizeXInput.ActivateInputField();
            }
        }

        if (GameplayUIManager.ScrollUp(false))
        {
            if (Input.GetButton("Mod"))
            {
                SizeXSlider.value += 1;
            }
            else
            {
                SizeYSlider.value += 1;
            }
        }

        if (GameplayUIManager.ScrollDown(false))
        {
            if (Input.GetButton("Mod"))
            {
                SizeXSlider.value -= 1;
            }
            else
            {
                SizeYSlider.value -= 1;
            }
        }

        // lets you rotate in the new board menu
        StuffPlacer.PollRotationInput();
        BoardPlacer.PollForBoardRotation();
        BoardPlacer.PollForBoardFlatness();

        RaycastHit hit;

        if (Physics.Raycast(FirstPersonInteraction.Ray(), out hit, Settings.ReachDistance))
        {
            StuffPlacer.MoveThingBeingPlaced(hit, false, true);
        }
    }
    // run every frame by BehaviorManager
    public static void RunGameplayUI()
    {
        if (Input.GetButtonDown("ToggleHelp"))
        {
            HelpMenu.ToggleHelp();
        }
        if (Input.GetButtonDown("ToggleFullscreen"))
        {
            OptionsMenu.Instance.FullscreenToggle.isOn = !OptionsMenu.Instance.FullscreenToggle.isOn;
        }
        if (Input.GetButtonDown("ToggleGameplayUI"))
        {
            GameplayUICanvas.ToggleVisibility();
        }


        switch (UIState)
        {
        case UIState.None:
            FirstPersonInteraction.DoInteraction();
            break;

        case UIState.BoardMenu:
            BoardMenu.Instance.RunBoardMenu();
            break;

        case UIState.NewBoardMenu:
            NewBoardMenu.Instance.RunNewBoardMenu();
            break;

        case UIState.PaintBoardMenu:
            PaintBoardMenu.Instance.RunPaintMenu();
            break;

        case UIState.TextEditMenu:
            TextEditMenu.Instance.RunTextMenu();
            break;

        case UIState.PauseMenuOrSubMenu:
            PauseMenu.Instance.RunPauseMenu();
            break;

        case UIState.BoardBeingPlaced:
            BoardPlacer.RunBoardPlacing();
            break;

        case UIState.ChooseDisplayColor:
            EditDisplayColorMenu.Instance.RunDisplayColorMenu();
            break;

        case UIState.NoisemakerMenu:
            NoisemakerMenu.Instance.RunNoisemakerMenu();
            break;

        case UIState.SaveBoard:
            SaveBoardMenu.Instance.RunSaveBoardMenu();
            break;

        case UIState.LoadBoard:
            LoadBoardMenu.Instance.RunLoadBoardMenu();
            break;

        case UIState.StackBoardMenu:
            StackBoardMenu.Instance.RunStackBoardMenu();
            break;

            // states without anything to do are not listed here
        }
    }