Пример #1
0
    /// <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);
        }
    }
Пример #2
0
    // 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;
    }
Пример #3
0
    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());
    }
Пример #4
0
    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);
    }
Пример #5
0
    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;
        }
    }
Пример #6
0
    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;
        }
    }
Пример #7
0
    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];
        }
    }
Пример #8
0
    /// <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);
        }
    }
Пример #9
0
    /// <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));
    }
Пример #10
0
    /// <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;
        }
    }
Пример #11
0
    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();
    }