void loadTerminalFromFile()
    {
        // Load terminal from file data
        TerminalObject gameTerminal = terminal.gameObject.GetComponent <TerminalObject>();

        terminalData = TerminalData.loadTerminalFromFile(gameTerminal);

        if (terminalData == null)
        {
            return;
        }

        state = windowState.loaded;
    }
Exemple #2
0
    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);
 }