/// <summary> /// Updates the various UI elements of the Prepare screen /// </summary> public void UpdateScreen() { string name = levelDropDown.options[levelDropDown.value].text; // Graphics g = Graphics.Instance(); GameManager gm = GameManager.Instance(); Database.LevelInfo info = Database.Instance().QueryLevelInfo(name); // *** Set the map image BaseActor ba = gm.gameSpace.transform.Find("Prepare").Find("AtlasLayer").Find("atlasMap").gameObject.GetComponent <BaseActor>(); ba.AssignAtlasSprite("icon_level_" + name); // // *** This is "fallback" code in case the Sprite Atlas breaks again. Image im = mapPanel.transform.Find("MapImage").GetComponent <Image>(); UnityEngine.Sprite o = g.GetSprite("Layout_" + name); im.sprite = o; // *** Get all the turrets in the selected level... Dictionary <Structure.StructureTypes, int> turretsInLevel = new Dictionary <Structure.StructureTypes, int>(); foreach (Structure.StructureTypes Q in info.turrets) { if (!turretsInLevel.ContainsKey(Q)) { turretsInLevel.Add(Q, 0); } // turretsInLevel[Q]++; } // *** Get all the creeps in the selected level... List <Creep.CreepTypes> creepsInLevel = new List <Creep.CreepTypes>(); foreach (Database.SpawnSequenceRunner a in info.scenario.spawns) { foreach (Database.SpawnSequenceData b in a.sequence.spawns) { creepsInLevel.Add(b.type); } } // // GameObject go; // *** Fill the creep panel for (int n = 0; n < creepIcons.Length; n++) { if (n < creepsInLevel.Count) { creepIcons[n].SetActive(true); // Image i = creepIcons[n].GetComponent <Image>(); i.sprite = g.GetSprite("icon_creep_" + creepsInLevel[n].ToString().ToLower()); } else { creepIcons[n].SetActive(false); continue; } } // ??? <-- (if higher than 16): "And more..." // *** Fill the turret panel int count = 0; foreach (KeyValuePair <Structure.StructureTypes, int> Q in turretsInLevel) { go = turretIcons[count]; go.SetActive(true); // // // *** Turret's image go.transform.Find("_TurretIcon").gameObject.GetComponent <Image>().sprite = g.GetSprite("icon_turret_" + Q.Key.ToString().ToLower()); // *** Turret's count go.transform.Find("_TurretCount").gameObject.GetComponent <Text>().text = "x" + (Q.Value).ToString(); count++; } // *** Disable the rest of the icons for (int i = count; i < turretIcons.Length; i++) { turretIcons[i].SetActive(false); } }
/// <summary> /// The initial set-up function for the Prepare screen. /// </summary> /// <param name="info"></param> public void SetupScreen(Database.LevelInfo info) { Graphics g = Graphics.Instance(); string name = levelDropDown.options[levelDropDown.value].text; // GameObject go; // *** Fill the creep panel for (int n = 0; n < creepIcons.Length; n++) { go = new GameObject("_CreepOptions"); go.transform.parent = creepPanel.transform; // Image i = go.AddComponent <Image>(); i.color = Color.cyan; i.sprite = null; // RectTransform rt = i.rectTransform; rt.anchorMin = new Vector2(0, 1); rt.anchorMax = new Vector2(0, 1); rt.pivot = new Vector2(0, 1); rt.sizeDelta = new Vector2(24, 24); rt.localScale = Vector3.one; // rt.anchoredPosition = new Vector2(8 + (8 + rt.sizeDelta.x) * (n % widthHeight), -8 - (8 + rt.sizeDelta.y) * (n / widthHeight)); // // creepIcons[n] = go; } // ??? <-- (if higher than 16): "And more..." // *** Fill the turret panel for (int count = 0; count < turretIcons.Length; count++) { go = new GameObject("_TurretOptions"); go.transform.parent = turretPanel.transform; // Image i = go.AddComponent <Image>(); i.color = Color.cyan; i.sprite = null; // RectTransform rt = i.rectTransform; rt.anchorMin = new Vector2(0, 1); rt.anchorMax = new Vector2(0, 1); rt.pivot = new Vector2(0, 1); rt.sizeDelta = new Vector2(128, 40); rt.localScale = Vector3.one; // rt.anchoredPosition = new Vector2(16, -16 - 48 * count); // *** Turret's image GameObject go_i = new GameObject("_TurretIcon"); go_i.transform.parent = go.transform; // i = go_i.AddComponent <Image>(); i.sprite = null; // rt = i.rectTransform; rt.anchorMin = new Vector2(0, 1); rt.anchorMax = new Vector2(0, 1); rt.pivot = new Vector2(0, 1); rt.sizeDelta = new Vector2(40, 40); rt.localScale = Vector3.one; // rt.anchoredPosition = new Vector2(0, 0); // *** Turret's count GameObject go_c = new GameObject("_TurretCount"); go_c.transform.parent = go.transform; // Text txt = go_c.AddComponent <Text>(); txt.text = "NA"; txt.font = (Font)Resources.Load("MVBOLI"); txt.fontSize = 24; txt.fontStyle = FontStyle.Bold; txt.alignment = TextAnchor.LowerRight; txt.color = Color.blue; // rt = txt.rectTransform; rt.anchorMin = new Vector2(1, 0); rt.anchorMax = new Vector2(1, 0); rt.pivot = new Vector2(1, 0); rt.sizeDelta = new Vector2(40, 40); rt.localScale = Vector3.one; // rt.anchoredPosition = new Vector2(-8, 0); // // turretIcons[count] = go; } // UpdateScreen(); }
public void ChangePhase(Phases p) { GameManager gm = GameManager.Instance(); Graphics g = Graphics.Instance(); g.announcementText.text = ""; // // *** Ending phase switch (phase) { } // phase = p; phaseTime = 0; // // *** Starting phase Transform layout; switch (phase) { case Phases.Initialize: levelInfo = Database.Instance().QueryLevelInfo(gm.targetLevel); // levelInfo.scenario.Reset(); // layout = layoutSpace.transform.Find(levelInfo.name); if (layout != null) { layout.gameObject.SetActive(true); } timeSlider.value = 1.0f; timeSlider.enabled = false; break; case Phases.Begin: break; case Phases.PlaceCore: g.announcementText.text = "Place the Core!"; g.announcementText.color = Color.cyan; CreateCore(new Vector2(0, 0)); break; case Phases.PlaceTurrets: g.announcementText.text = "Place your turrets!"; g.announcementText.color = Color.cyan; _placementIndex = 0; placeTurret = null; break; case Phases.Battle: battleTime = 0; timeSlider.enabled = true; break; case Phases.Victory: g.announcementText.text = "Hey!\nYou did it!!"; g.announcementText.color = Color.yellow; timeSlider.value = 1.0f; timeSlider.enabled = false; break; case Phases.Defeat: g.announcementText.color = Color.red; if (coreObj.isDead) { g.announcementText.text = "Oh no!\nThe core is destroyed..."; } else { g.announcementText.text = "Game Over!"; } timeSlider.value = 1.0f; timeSlider.enabled = false; break; case Phases.Finish: g.announcementText.text = ""; gm.ChangeModeState(GameManager.GameStateModes.Ending); // levelInfo = Database.Instance().QueryLevelInfo(gm.targetLevel); layout = layoutSpace.transform.Find(levelInfo.name); if (layout != null) { layout.gameObject.SetActive(false); } break; } }