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; }
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; }
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? }
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"); }
protected override void Start() { base.Start(); moveCalculator = GetComponent <MoveCalculator>(); boardPlacer = GetComponent <BoardPlacer>(); }
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 } }