void loadTerminalFromFile() { // Load terminal from file data TerminalObject gameTerminal = terminal.gameObject.GetComponent <TerminalObject>(); terminalData = TerminalData.loadTerminalFromFile(gameTerminal); if (terminalData == null) { return; } state = windowState.loaded; }
private void SetupObjectContent() { foreach (GameObject entry in objectEntries) { Destroy(entry); } objectEntries.Clear(); BaseObject[] baseObjects = terminal.baseObjects.OrderBy((bo) => bo.CanAfford()).ToArray(); BaseObject currentObject; if (targetSlotIsWallSlot) { currentObject = terminal.wallSlots[slotId].BaseObject; } else { currentObject = terminal.groundSlots[slotId].BaseObject; } foreach (BaseObject baseObject in baseObjects) { if (baseObject.isWallObject == targetSlotIsWallSlot) { GameObject entry = Instantiate(objectEntryPrefab, objectContent); TerminalObject terminalObject = entry.GetComponent <TerminalObject>(); BaseObject targetObject = baseObject; bool alreadyInSlot = false; if (currentObject != null && currentObject.Equals(baseObject)) { SelectedObjectEntry = terminalObject; targetObject = targetObject.Copy(); targetObject.oreCost = 0; alreadyInSlot = true; } else { entry.GetComponent <Image>().color = unselectedColor; } terminalObject.Setup(targetObject, this, alreadyInSlot); entry.GetComponent <Button>().interactable = baseObject.CanAfford(); objectEntries.Add(entry); } } }
void InteractFinder() { //Raycast RaycastHit hit; if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, interactRange)) { //If a terminal is found TerminalObject termObj = hit.transform.GetComponent <TerminalObject>(); if (termObj != null) { //Show interact key popup interactScreen.SetActive(true); //Allow interact with terminal //If interact, use the menumanager to open terminal menu if (Input.GetKeyDown(KeyCode.E)) { termObj.OpenTerminal(); if (interactScreen != null) { interactScreen.SetActive(false); } } } else { if (interactScreen != null) { interactScreen.SetActive(false); } } IEnumerator closeTerminalTrue() { yield return(new WaitForSeconds(0.1f)); pressedOpen = true; } } }
public static TerminalData loadTerminalFromFile(TerminalObject gameTerminal) { if (gameTerminal == null || gameTerminal.id == null) { return(null); } TerminalData tData = terminals.Find(t => t.id == gameTerminal.id); if (tData == null) { tData = new TerminalData(gameTerminal); } // No need to check if the right directory exists because that's where the class files are stored // Load Screens from file int i = 0; while (File.Exists(getScreenFileName(i, gameTerminal.id))) { StreamReader reader = new StreamReader(getScreenFileName(i, gameTerminal.id)); string line; string id; string text = ""; id = reader.ReadLine(); // ID is first line of save file while ((line = reader.ReadLine()) != null) { text += line + System.Environment.NewLine; } // Create screen TScreen screen = new TScreen(tData, text, i, id); // Add screen to terminal TScreen oldScreen = tData.screens.Find(s => s.index == i); if (oldScreen == null) { // if screen doesn't exist, add it to screens tData.screens.Add(screen); } else { // if screen already exists, replace it with file screen oldScreen = screen; } reader.Close(); i++; } // load all options for screens string screenOptionsPath = SAVE_PATH + gameTerminal.id + SCREEN_OPTIONS_POSTFIX; if (File.Exists(screenOptionsPath)) { StreamReader optionReader = new StreamReader(screenOptionsPath); string line; i = 0; while ((line = optionReader.ReadLine()) != null) { TScreen screen = tData.screens[i]; string[] ops = line.Split('|'); int j = 0; int n = 0; while (j < ops.Length - 1) { SOption newOption = new SOption(n++, screen); newOption.text = ops [j]; int.TryParse(ops [j + 1], out newOption.destination); // Check for old version of option SOption oldOption = screen.options.Find(o => o.index == newOption.index); if (oldOption == null) { screen.options.Add(newOption); } else { oldOption = newOption; } j += 2; } i++; } } return(tData); }
public TerminalData(TerminalObject tObj) { this.id = tObj.id; this.terminalObject = tObj; terminals.Add(this); }