坦克大战,地图编辑

来源:互联网 发布:less 1.7.3.min.js 编辑:程序博客网 时间:2024/04/27 07:52
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;


public class MapEditorUI : MonoBehaviour
{
    public static MapEditorUI instance;
    /// <summary>
    /// 1 砖块 , 2 铁块 ,3 草 ,4 水
    /// </summary>
    public int curSelect;
    public Image curImage;


    public GameObject kuaiPre;


    public Dictionary<Vector2, KuaiItem> PosKuaiDic = new Dictionary<Vector2, KuaiItem>();


    public InputField levelInput;
    public Text txtTip;


    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        Close();
    }


    public void Show()
    {
        levelInput.text = (GameManager.instance.levels.Count + 1).ToString();
        gameObject.SetActive(true);
        PosKuaiDic.Clear();
    }


    public void Close()
    {
        gameObject.SetActive(false);
    }


    public void SelectKuai(int n)
    {
        Sprite sp = Resources.Load<Sprite>("walls/" + n);
        curImage.sprite = sp;
        curSelect = n;
    }


    public void InsKuai()
    {
        Vector2 ij = KuaiItem.GetIJ(kuaiPre.GetComponent<Image>(), Input.mousePosition);


        if (curSelect == -1)
        {
            if (PosKuaiDic.ContainsKey(ij))
            {
                Destroy(PosKuaiDic[ij].gameObject);
                PosKuaiDic.Remove(ij);
            }
        }
        else if (ij.x >= 0 && ij.y >= 0 && ij.x < 26 && ij.y < 18 && !PosKuaiDic.ContainsKey(ij)
            && !(ij.x == 12 && ij.y == 0) && !(ij.x == 12 && ij.y == 1)
            && !(ij.x == 13 && ij.y == 0) && !(ij.x == 13 && ij.y == 1))
        {
            GameObject go = Instantiate(kuaiPre) as GameObject;
            KuaiItem ki = go.GetComponent<KuaiItem>();
            ki.SetInfo(ij, curSelect);
            PosKuaiDic.Add(ij, ki);
        }
    }


    public void SaveLevel()
    {
        int levelNum = int.Parse(levelInput.text);
        if (GameManager.instance.levels.Count < levelNum - 1)
        {
            Debug.Log("输入的关卡数不合法");
            return;
        }
        if (GameManager.instance.levels.Count < levelNum)
        {
            LevelData ld = new LevelData()
            {
                level = levelNum,
                enemyNum = levelNum * 4 + 10,
                mapData = new List<MapData>()


            };


            foreach (var kuai in FindObjectsOfType<KuaiItem>())
            {
                if (!kuai.isMapKuai)
                {
                    continue;
                }
                MapData md = new MapData()
                {
                    i = kuai.i,
                    j = kuai.j,
                    num = kuai.num
                };
                ld.mapData.Add(md);
            }


            GameManager.instance.levels.Add(ld);
        }
        else if (GameManager.instance.levels.Count >= levelNum)
        {
            LevelData ld = new LevelData()
            {
                level = levelNum,
                enemyNum = levelNum * 4 + 10,
                mapData = new List<MapData>()


            };


            foreach (var kuai in FindObjectsOfType<KuaiItem>())
            {
                if (!kuai.isMapKuai)
                {
                    continue;
                }
                MapData md = new MapData()
                {
                    i = kuai.i,
                    j = kuai.j,
                    num = kuai.num
                };
                ld.mapData.Add(md);
            }


            GameManager.instance.levels[levelNum - 1] = ld;
        }


        foreach (var kuai in FindObjectsOfType<KuaiItem>())
        {
            if (kuai.isMapKuai)
            {
                Destroy(kuai.gameObject);
            }
        }


        GameManager.instance.SaveLevelData();
        Close();
        StartUI.instance.Show();
    }


    public void Back()
    {
        Close();
        StartUI.instance.Show();
    }




    // Update is called once per frame
    void Update()
    {
        int i;
        bool res = int.TryParse(levelInput.text, out i);
        if (res)
        {
            if (GameManager.instance.levels.Count < i - 1)
            {
                txtTip.text = "<color=red>输入的数字必须小于【" + (GameManager.instance.levels.Count + 1) + "】</color>";
            }
            else if (GameManager.instance.levels.Count == i - 1)
            {
                txtTip.text = "<color=green>如果保存将会新增关卡第【" + i + "关】</color>";
            }
            else if (GameManager.instance.levels.Count >= i)
            {
                txtTip.text = "<color=blue>如果保存将会覆盖关卡第【" + i + "关】</color>";
            }
        }
        else
        {
            txtTip.text = "<color=red>必须输入数字</color>";
        }
    }
}
原创粉丝点击