Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (initialized)
        {
            if (lastCredits != player.GetCredits())
            {
                int diff = player.GetCredits() - lastCredits;
                marker.DisplayText(diff);
            }
            lastCredits = player.GetCredits();
            var texts = GetComponentsInChildren <UnityEngine.UI.Text>();
            texts[1].text = player.GetPower() + "";
            texts[3].text = player.unitsCommanding.Count + "/" + player.GetTotalCommandLimit();
            texts[5].text = GetCreditString(player.GetCredits()) + "";
            var rect = texts[5].rectTransform.rect;
            rect.center = texts[5].rectTransform.position;
            tooltipManager.AddBounds(rect, $"CREDITS: {player.GetCredits()}");

            UpdatePrimaryTargetInfo();

            foreach (var infos in secondaryInfosByEntity)
            {
                UpdateInfo(infos.Key ? infos.Key.gameObject : null, infos.Value);
            }
        }
    }
Example #2
0
    public void UpdateChain()
    {
        if (!editorMode)
        {
            SetReconstructButton(cursorScript.buildCost > player.GetCredits() ?
                                 ReconstructButtonStatus.NotEnoughCredits : ReconstructButtonStatus.Valid);
        }
        else
        {
            SetReconstructButton(ReconstructButtonStatus.Valid);
        }

        foreach (ShipBuilderPart shipPart in cursorScript.parts)
        {
            shipPart.isInChain = false;
            CheckPartIntersectsWithShell(shipPart);
        }

        foreach (ShipBuilderPart shipPart in cursorScript.parts)
        {
            if (shipPart.isInChain)
            {
                UpdateChainHelper(shipPart);
            }
        }

        foreach (ShipBuilderPart shipPart in cursorScript.parts)
        {
            CheckPartIntersectsWithShell(shipPart);
        }

        foreach (ShipBuilderPart part in cursorScript.parts)
        {
            if (part.validPos)
            {
                foreach (var part2 in cursorScript.parts)
                {
                    if (part != part2 && PartIsTooClose(part, part2))
                    {
                        part.validPos = false;
                        break;
                    }
                }
            }
            else
            {
                bool stillTouching = false;
                foreach (ShipBuilderPart part2 in cursorScript.parts)
                {
                    if (part2 != part && PartIsTooClose(part, part2))
                    {
                        stillTouching = true;
                        break;
                    }
                }
                if (!stillTouching)
                {
                    part.validPos = true;
                }
            }
        }

        foreach (ShipBuilderPart shipPart in cursorScript.parts)
        {
            if (!shipPart.isInChain || !shipPart.validPos)
            {
                SetReconstructButton(ReconstructButtonStatus.PartInvalidPosition);
                return;
            }
        }

        CheckPartSizes();
        CheckAbilityCaps();
    }
Example #3
0
    public void Save()
    {
        save.timePlayed += Time.timeSinceLevelLoad / 60;
        if (SaveMenuHandler.migratedTimePlayed != null)
        {
            save.timePlayed += (int)SaveMenuHandler.migratedTimePlayed;
            SaveMenuHandler.migratedTimePlayed = null;
        }
        string currentPath = File.ReadAllLines(Application.persistentDataPath + "\\CurrentSavePath")[0];

        save.position       = player.spawnPoint;
        save.currentHealths = player.currentHealth;
        if (player.currentHealth[1] <= 0)
        {
            save.currentHealths = player.GetMaxHealth();
        }
        save.currentPlayerBlueprint = JsonUtility.ToJson(player.blueprint);
        save.credits     = player.GetCredits();
        save.abilityCaps = player.abilityCaps;
        save.shards      = player.shards;
        if (save.resourcePath == "" || save.resourcePath.Contains("main"))
        {
            save.resourcePath = SectorManager.instance.resourcePath;
        }
        save.characters = SectorManager.instance.characters;
        save.version    = VersionNumberScript.version;


        for (int i = 0; i < taskManager.traversers.Count; i++)
        {
            var traverser      = taskManager.traversers[i];
            var missionName    = traverser.nodeCanvas.missionName;
            var lastCheckpoint = traverser.lastCheckpointName;
            save.missions.Find((m) => m.name == traverser.nodeCanvas.missionName).checkpoint = lastCheckpoint;
        }

        // Calculate the save episode by finding the maximal active mission's epsiode.
        save.episode = 0;
        foreach (var mission in save.missions)
        {
            if (mission.status != Mission.MissionStatus.Inactive)
            {
                if (save.episode < mission.episode)
                {
                    save.episode = mission.episode;
                }
            }
        }

        Dictionary <string, int> variables = taskManager.taskVariables;

        string[] keys   = new string[taskManager.taskVariables.Count];
        int[]    values = new int[taskManager.taskVariables.Count];
        int      index  = 0;

        foreach (var pair in taskManager.taskVariables)
        {
            keys[index]   = pair.Key;
            values[index] = pair.Value;
            index++;
        }
        save.taskVariableNames  = keys;
        save.taskVariableValues = values;
        save.reputation         = player.reputation;

        string saveJson = JsonUtility.ToJson(save);

        File.WriteAllText(currentPath, saveJson);
    }