Beispiel #1
0
    private void OpenBattleProperties(int battleIndex)
    {
        battlePropertiesPanel.SetActive(true);
        currentBattleInx = battleIndex;
        //fill panel content
        var battle = availableMaps[battleIndex];

        bpMapName.text = string.Format("Map: \"{0}\":", battle.mapName);

        //BAD: it is not that smart to destroy all the gameobjects and than instantiate same.
        //Not only is it a performance issue, it also kills all the data user may has entered.
        List <GameObject> finalSolutionCandidates = new List <GameObject>();

        for (int i = 0; i < bpScrollViewContent.transform.childCount; i++)
        {
            finalSolutionCandidates.Add(bpScrollViewContent.transform.GetChild(i).gameObject);
        }
        foreach (var item in finalSolutionCandidates)
        {
            Destroy(item);
        }

        foreach (var item in battle.sides)
        {
            var side = Instantiate(bpSidePrefab);
            side.transform.SetParent(bpScrollViewContent.transform);
            var scriptDropdown = side.transform.Find(bpsAiScriptDropdown).GetComponent <Dropdown>();
            EditedTank.PopulateSavedScriptDropdown(scriptDropdown);
            EditedTank.toRepopulate.Add(scriptDropdown);
        }
    }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     dropdown = GetComponent <Dropdown>();
     logger   = new Tank.DummyLogger();
     dropdown.onValueChanged.AddListener((inx) =>
     {
         var rn = dropdown.options[inx].text;
         EditedTank.LoadScript(rn, logger);
     });
     dropdown.onValueChanged.Invoke(0);
 }
Beispiel #3
0
    public void StartBattleButtonClick()
    {
        var battle = availableMaps[currentBattleInx];

        for (int i = 0; i < battle.sides.Count && i < bpScrollViewContent.transform.childCount; i++)
        {
            var side    = bpScrollViewContent.transform.GetChild(i);
            var count   = side.transform.Find(bpsCountInputField).GetComponent <InputField>();
            var aiDpdn  = side.transform.Find(bpsAiScriptDropdown).GetComponent <Dropdown>();
            var codeFld = side.transform.Find(bpsCodeInputField).GetComponent <InputField>();
            var camTgl  = side.transform.Find(bpsAttachToggle).GetComponent <Toggle>();

            if (aiDpdn.gameObject.activeInHierarchy)
            {
                battle.sides[i].code = EditedTank.LoadScript(aiDpdn.options[aiDpdn.value].text, new Tank.DummyLogger());
            }
            else
            {
                battle.sides[i].code = codeFld.text;
            }
            battle.sides[i].count        = int.Parse(count.text);
            battle.sides[i].sideId       = i;
            battle.sides[i].attachCamera = camTgl.isOn;
        }

        var prev = SceneManager.GetActiveScene().GetRootGameObjects();

        foreach (var item in prev)
        {
            if (item.name == BattleInfo.infoGameObjectName)
            {
                Destroy(item);
            }
        }

        var preserver = new GameObject();

        preserver.name = BattleInfo.infoGameObjectName;

        var pb = preserver.AddComponent <BattleInfo>();

        pb.battle = battle;
        DontDestroyOnLoad(preserver);

        OpenScene(battle.loadSceneName);
    }
Beispiel #4
0
    // Start is called before the first frame update
    void Start()
    {
        spawner = GetComponent <TankSpawner>();
        EditedTank.PopulateSavedScriptDropdown(scriptChoise);
        EditedTank.toRepopulate.Add(scriptChoise);
        sideChoise.options.Clear();
        foreach (var item in spawner.spawnpoints)
        {
            sideChoise.options.Add(new Dropdown.OptionData(item.sideId.ToString()));
        }
        sideChoise.value = -1;
        sideChoise.value = 0;

        add.onClick.AddListener(() =>
        {
            var code = EditedTank.LoadScript(scriptChoise.options[scriptChoise.value].text, new Tank.DummyLogger());
            if (!string.IsNullOrEmpty(code))
            {
                spawner.Spawn(int.Parse(sideChoise.options[sideChoise.value].text), code);
            }
        });
    }