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); } }
// 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); }
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); }
// 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); } }); }