/// <summary> Deletes the selected group </summary> public void DeleteTurretGroup() { if (selected_group == null) { return; } Turret [] turretarr = new Turret[selected_group.Count]; selected_group.TurretArray.CopyTo(turretarr, 0); foreach (Turret t in turretarr) { t.Group = TurretGroup.Trashbin; } TurretButton bt = null; foreach (KeyValuePair <TurretButton, TurretGroup> pair in TurretGroupGraphs) { if (pair.Value == selected_group) { bt = pair.Key; } } if (bt != null) { TurretGroupGraphs.Remove(bt); Destroy(bt.gameObject); } }
// sets all values for TurretController script using turretData, adds "click-icon-to-buy" function, changes visual cues to see if turret is bought private void SetValues(GameObject turret) { TurretController script = turret.GetComponent <TurretController>(); // script setup script.turretData = turretData; script.UpdateVariables(); Transform newShootpoint = new GameObject("Shootpoint").transform; newShootpoint.SetParent(turret.transform); script.shootPoint = newShootpoint; script.shootPoint.localPosition = new Vector2(turretData.shootpointOffsetX, 0); script.targetTag = "Enemy"; script.bullet = turretData.bullet; script.enabled = false; turret.transform.localPosition = Vector2.zero; // moving turret to middle of tower block SpriteRenderer rend = turret.GetComponent <SpriteRenderer>(); // setting up sprite (half transparent, sorting order) rend.sprite = turretData.artwork; rend.color = new Color(1, 1, 1, 0.5f); rend.sortingOrder = towerCount + 1; turret.GetComponent <BoxCollider2D>().size = new Vector2(1, 1); turret.GetComponent <BoxCollider2D>().isTrigger = true; TurretButton turrButScript = turret.GetComponent <TurretButton>(); // setting up fake turret button ("click-icon-to-buy" without using UI buttons) turrButScript.values = values; turrButScript.towerPlacement = this; turrButScript.index = towerCount; }
private void InitMenu(List <PrefabInfo> turretsPrefabs) { ClearMenu(); for (int i = 0; i < turretsPrefabs.Count; i++) { Button button = Instantiate(buttonPrefab); PrefabInfo turretInfo = turretsPrefabs[i]; TurretButton turretButton = button.GetComponent <TurretButton>(); turretButton.Init(turretInfo); turretButton.SetMoney(money); turretButtons.Add(turretButton); button.transform.SetParent(transform); button.transform.localScale = new Vector3(1, 1, 1); button.transform.position = new Vector3(Screen.width / 2, Screen.height / 2 - i * 50, 0); button.onClick.AddListener(() => SelectClick(turretButton)); } Button bQ = Instantiate(buttonPrefab); bQ.GetComponentInChildren <Text>().text = "Quit Menu"; bQ.transform.SetParent(transform); bQ.transform.localScale = new Vector3(1, 1, 1); bQ.transform.position = new Vector3(Screen.width / 2, Screen.height / 2 - 3 * 50, 0); bQ.onClick.AddListener(() => SelectClickQuitBuild()); }
private void SelectClick(TurretButton turretButton) { EventObject eo = new EventObject(); eo.putData(EventDataTags.TURRET_TO_BUILD, turretButton.turretPrefab); EventManager.TriggerEvent(Events.buildPrefub.ToString() + builderId, eo); Close(turretButton.turretPrice); }
void Init() { rect.position = new Vector3(Middle.x, Middle.y); selected_turrets = new List <Turret>(); List <Turret> all_turrets = new List <Turret>(); foreach (Turret [] turrs in player_script.turrets.Values) { all_turrets.AddRange(turrs); } for (int i = 0; i < all_turrets.Count; i++) { Turret turret = all_turrets[i]; Vector3 pos = new Vector3(Middle.x + 70f, Middle.y + 150f - (50 * i)); GameObject button_object = Instantiate(source_button); button_object.transform.position = pos; button_object.transform.SetParent(mask_transform, true); TurretButton tb = button_object.GetComponent <TurretButton>(); tb.Initiate(this, (uint)i, turret); if (Edit) { if (group.Contains(turret)) { tb.On = true; } } else { if (preselected_turrets.Contains(turret)) { tb.On = true; } } TurretButton butt = button_object.GetComponent <TurretButton>(); turret_graphs.Add(butt, turret); init_positions.Add(button_object.transform.position); } slider_ratio = Mathf.Min(1, 300f / (50f * (float)all_turrets.Count)); slider.transform.SetAsFirstSibling(); if (Edit) { if (group.follow_target) { tgt_choice.value = (int)TargetChoice.target; } else { tgt_choice.value = (int)TargetChoice.cursor; } name_input.text = group.name; } }
public void UpdatePositions() { float pos_multiplyer = 300 / slider_ratio - 300; List <TurretButton> butt_list = new List <TurretButton> (turret_graphs.Keys); for (int i = 0; i < butt_list.Count; i++) { TurretButton button = butt_list[i]; Vector3 init_pos = init_positions[i]; Vector3 plus_pos = new Vector3(0, slider.value * pos_multiplyer); button.transform.position = init_pos + plus_pos; } }
public void ChangeGroup() { TurretButton selected_button = null; foreach (KeyValuePair <TurretButton, Turret> pair in TurretGraphs) { if (pair.Value == selected_turret) { selected_button = pair.Key; } } if (selected_button != null) { int group_number = selected_button.GetComponentInChildren <Dropdown>().value; selected_turret.Group = player_script.turretgroup_list [group_number]; } }
/// <summary> /// Updates the turret- and groupbuttons. /// Should be updated each frame. /// </summary> private void TurretSliderUpdate() { float act_value = scroll_bar.value; float pos_multiplyer = (Screen.height - 250) / handle_size_ratio[0] - (Screen.height - 250); List <TurretButton> all_buttons = new List <TurretButton>(TurretGraphs.Keys); float side_add = GroupSwitch ? +50 : -70; for (int i = 0; i < TurretGraphs.Count; i++) { TurretButton bt = all_buttons[i]; bt.transform.position = new Vector3(Screen.width + side_add, Screen.height - 75 - i * 50 + act_value * pos_multiplyer); } float pos_multiplyer_1 = (Screen.height - 250) / handle_size_ratio[1] - (Screen.height - 250); List <TurretButton> all_buttons_1 = new List <TurretButton>(TurretGroupGraphs.Keys); side_add = !GroupSwitch ? +50 : -70; for (int i = 0; i < TurretGroupGraphs.Count; i++) { TurretButton bt = all_buttons_1[i]; bt.transform.position = new Vector3(Screen.width + side_add, Screen.height - 75 - i * 50 + act_value * pos_multiplyer_1); } }
/// <summary> /// This should be called, if a turretgroup should be added. /// </summary> public void AddTurretGroup(TurretGroup tg) { // Adds the group to the playerobjects main script player_script.turretgroup_list.Add(tg); int groups_num = player_script.turretgroup_list.Count; // Adds new buttons GameObject obj = Instantiate(GameObject.Find("turr_slide")); obj.transform.SetParent(main_canvas); obj.transform.position = new Vector3(Screen.width + 50, Screen.height - 75 - (groups_num * 50)); obj.transform.SetAsFirstSibling(); Text txt = obj.transform.GetChild(0).GetComponent <Text>(); txt.text = tg.name; TurretButton button = obj.GetComponent <TurretButton>(); TurretGroupGraphs.Add(button, tg); obj.GetComponent <TurretButton>().Initiate(this, (uint)groups_num - 1u, tg); handle_size_ratio [1] = Mathf.Min(1, ((float)Screen.height - 250f) / (50f * (float)groups_num)); }
/// <summary> should be called, if mouse enter/exits over a button referring to a turretgroup </summary> /// <param name="button_id"> The ID of the concerned button </param> /// <param name="enter"> True, if mouse enters the button; False, if it exits it</param> public void GroupButtonHover(uint button_id, bool enter) { if (enter) { TurretGroup concerned_group = player_script.turretgroup_list [(int)button_id]; TurretButton concerned_button = null; foreach (KeyValuePair <TurretButton, TurretGroup> pair in TurretGroupGraphs) { if (pair.Value == concerned_group) { concerned_button = pair.Key; } } if (concerned_button == null) { throw new System.ArgumentException("Turretgroup ID does not exist"); } uint button_number = 0; foreach (TurretButton bt in TurretGroupGraphs.Keys) { if (bt.transform.position.y > concerned_button.transform.position.y) { button_number++; } } float plus_value = scroll_bar.value * ((Screen.height - 250) / handle_size_ratio[1] - (Screen.height - 250)); group_menu.rectTransform.position = new Vector3(Screen.width - 170, Screen.height - 150 - button_number * 50 + plus_value); selected_group = player_script.turretgroup_list [(int)button_id]; group_selected = true; } if (!enter) { group_selected = false; } }
public void ResetPlayer(Ship p_player) { PlayerShip = p_player; // Initialize player related stuff GameObject player = PlayerShip.Object; player_script = player.GetComponent <ShipControl>(); player_transform = player.transform; // Reset Collections weapon_states.Clear(); turret_states.Clear(); foreach (Weapon w in PlayerShip.Parts.GetAll <Weapon>()) { GameObject obj = Instantiate(GameObject.Find("tgt_point")) as GameObject; obj.transform.SetParent(ship_canvas); Image img = obj.GetComponent <Image>(); weapon_states.Add(w, img); } foreach (Turret t in PlayerShip.Parts.GetAll <Turret>()) { GameObject obj = Instantiate(GameObject.Find("tgt_point")) as GameObject; obj.transform.SetParent(ship_canvas); Image img = obj.GetComponent <Image>(); turret_states.Add(t, img); } // Fill turret_graphs and initialize the buttons' scripts // ------------------------------------------------------- TurretGraphs = new Dictionary <TurretButton, Turret>(); TurretGroupGraphs = new Dictionary <TurretButton, TurretGroup>(); GameObject turr_img_instance = GameObject.Find("turr_slide"); uint i = 0; foreach (Turret [] turrs in player_script.turrets.Values) { foreach (Turret turr in turrs) { GameObject obj = Instantiate(turr_img_instance); obj.transform.SetParent(SceneGlobals.permanent_canvas.transform); obj.transform.position = new Vector3(Screen.width - 50, Screen.height - 75 - (i * 50)); obj.transform.SetAsFirstSibling(); TurretButton button = obj.GetComponent <TurretButton>(); button.Initiate(this, i, turr); TurretGraphs.Add(button, turr); i++; } } handle_size_ratio[0] = Mathf.Min(1, ((float)Screen.height - 250f) / (50f * i)); // Fill group_graphs and initialize the buttons' scripts //------------------------------------------------------ for (int j = 0; j < player_script.turretgroup_list.Count; j++) { TurretGroup tg = player_script.turretgroup_list[j]; GameObject obj = Instantiate(turr_img_instance); obj.transform.SetParent(SceneGlobals.permanent_canvas.transform); obj.transform.position = new Vector3(Screen.width + 50, Screen.height - 75 - (j * 50)); obj.transform.SetAsFirstSibling(); TurretButton button = obj.GetComponent <TurretButton>(); button.Initiate(this, (uint)j, tg); TurretGroupGraphs.Add(button, tg); } handle_size_ratio [1] = Mathf.Min(1, ((float)Screen.height - 250f) / (50f * player_script.turretgroup_list.Count)); ButtonLabelUpdate(); }