示例#1
0
        /// <summary>
        /// 玩家地块
        /// </summary>
        /// <param name="gameObj"></param>
        /// <param name="voMapItem"></param>
        private void UpdatePlayer(GameObject gameObj, VoMapItem voMapItem)
        {
            var transform     = gameObj.transform;
            var imageBg       = transform.Find("ImageBg").GetComponent <Image>();
            var onImage       = transform.Find("ImageBg").GetComponent <OnImage>();
            var txtLv         = transform.Find("TxtLv").GetComponent <Text>();
            var txtName       = transform.Find("TxtName").GetComponent <Text>();
            var txtPos        = transform.Find("TxtPos").GetComponent <Text>();
            var txtFR         = transform.Find("TxtFR").GetComponent <Text>();
            var imgBattle     = transform.Find("ImgBattle").gameObject;
            var imgFlag       = transform.Find("ImgFlag").gameObject;
            var imgSelfLegion = transform.Find("ImgSelfLegion").gameObject;
            var imgTeamLegion = transform.Find("ImgTeamLegion").gameObject;
            var sliderFR      = transform.Find("SliderFR").GetComponent <Slider>();
            var player        = voMapItem.WorldUnit.player;
            var flag          = voMapItem.WorldUnit.flag;

            imageBg.sprite = m_MapAtlas.GetSprite(voMapItem.CitySprite);
            imageBg.SetNativeSize();
            AddListener(onImage, voMapItem);
            txtLv.text = (player.level + 1).ToString();
            var isMyself    = m_VoMyPlayer.id == player.id;
            var isHasLegion = !string.IsNullOrEmpty(player.legion);
            var isMyLegion  = isHasLegion && string.Equals(m_VoMyPlayer.legion, player.legion);

            imgSelfLegion.SetActive(isMyself && isHasLegion);
            imgTeamLegion.SetActive(!isMyself && isMyLegion);
            var color = isMyself ? "#f5d70f" : (isMyLegion ? "#71c8fa" : "#e23f3f"); //自身黄色、同军团绿色、敌人红色

            txtName.text   = "<color=" + color + ">" + player.nickname + "</color>";
            txtPos.text    = "(" + voMapItem.position.x + "," + voMapItem.position.y + ")";
            sliderFR.value = (float)(player.fr_val / (player.fr_max > 0 ? player.fr_max : 1));
            imgFlag.SetActive(sliderFR.value < 0.5f);
            txtFR.text = player.fr_val + "/" + player.fr_max;
        }
示例#2
0
        /// <summary>
        /// 回收地块之后,需要激活未显示的新地块
        /// </summary>
        private void ActiveMapItem(Vector2 position)
        {
            var posX = (int)(position.x - m_HalfCountX);
            var posY = (int)(position.y - m_HalfCountY);

            for (int node = posX; node < posX + InitCountX; node++)
            {
                for (int repo = posY; repo < posY + InitCountY; repo++)
                {
                    var pointPos = new Vector2(node, repo);
                    if (!IsPosActive(pointPos))
                    {
                        var voMapItem = new VoMapItem();
                        voMapItem.position      = pointPos;
                        voMapItem.IsOutofBounds = pointPos.IsOutofBounds(MinPos, MaxPos);
                        voMapItem.IsMapDeep     = (pointPos.x + pointPos.y) % 2 == 0;
                        voMapItem.ObjMapItem    = m_MapsPool.GetGameObject();
                        ShowMapItem(voMapItem);
                        if (!voMapItem.IsOutofBounds)
                        {
                            voMapItem.ObjBuildItem = m_BuildsPool.GetGameObject();
                            ShowResources(voMapItem);
                        }
                        m_MapActiveDic.Add(pointPos, voMapItem);
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// 空地块
        /// </summary>
        /// <param name="gameObj"></param>
        /// <param name="voMapItem"></param>
        private void UpdateNone(GameObject gameObj, VoMapItem voMapItem)
        {
            var transform = gameObj.transform;
            var imageBg   = transform.Find("ImageBg").GetComponent <Image>();
            var onImage   = transform.Find("ImageBg").GetComponent <OnImage>();

            imageBg.sprite = m_MapAtlas.GetSprite(voMapItem.NoneSprite);
            imageBg.SetNativeSize();
            AddListener(onImage, voMapItem);
        }
示例#4
0
        /// <summary>
        /// 随机在地图上创建建筑
        /// </summary>
        /// <param name="objects"></param>
        /// <param name="node"></param>
        /// <param name="repo"></param>
        private void ShowResources(VoMapItem voMapItem)
        {
            var gameObj       = voMapItem.ObjBuildItem;
            var position      = voMapItem.position;
            var localPosition = GetPosition(position.x, position.y);

            gameObj.name = "BuildItem" + position.x + "x" + position.y;
            gameObj.transform.SetParent(m_BuildsTrans);
            gameObj.transform.localScale    = Vector3.one;
            gameObj.transform.localPosition = localPosition;
            gameObj.transform.localRotation = Quaternion.identity;
            gameObj.GetComponent <RectTransform>().pivot = m_HalfPivot;
            UpdateResources(voMapItem);
        }
示例#5
0
        /// <summary>
        /// 在地图上显示某地图块
        /// </summary>
        /// <param name="gameObj">地块对象</param>
        /// <param name="position">坐标位置</param>
        private void ShowMapItem(VoMapItem voMapItem)
        {
            var gameObj       = voMapItem.ObjMapItem;
            var position      = voMapItem.position;
            var localPosition = GetPosition(position.x, position.y);

            gameObj.name = "MapItem" + position.x + "x" + position.y;
            gameObj.transform.SetParent(m_MapsTrans);
            gameObj.transform.localScale    = Vector3.one;
            gameObj.transform.localPosition = localPosition;
            gameObj.transform.localRotation = Quaternion.identity;
            gameObj.GetComponent <RectTransform>().pivot = m_HalfPivot;
            gameObj.GetComponent <Image>().sprite        = m_MapAtlas.GetSprite(voMapItem.MapSprite);
        }
示例#6
0
        /// <summary>
        /// 资源地块
        /// </summary>
        /// <param name="gameObj"></param>
        /// <param name="voMapItem"></param>
        private void UpdateRes(GameObject gameObj, VoMapItem voMapItem)
        {
            var transform   = gameObj.transform;
            var flag        = voMapItem.WorldUnit.flag;
            var imageBg     = transform.Find("ImageBg").GetComponent <Image>();
            var onImage     = transform.Find("ImageBg").GetComponent <OnImage>();
            var txtLv       = transform.Find("TxtLv").GetComponent <Text>();
            var imgFlagSelf = transform.Find("ImgFlagSelf").gameObject;
            var imgFlagTeam = transform.Find("ImgFlagTeam").gameObject;

            imgFlagSelf.SetActive(flag == WorldFlag.Self);
            imgFlagTeam.SetActive(flag == WorldFlag.Friend);
            txtLv.text     = voMapItem.WorldUnit.res.level.ToString();
            imageBg.sprite = m_MapAtlas.GetSprite(voMapItem.ResSprite);
            imageBg.SetNativeSize();
            AddListener(onImage, voMapItem);
        }
示例#7
0
        /// <summary>
        /// 刷新显示城池、资源等
        /// </summary>
        /// <param name="voMapItem"></param>
        private void UpdateResources(VoMapItem voMapItem)
        {
            var gameObj   = voMapItem.ObjBuildItem;
            var transform = gameObj.transform;
            var panelCity = transform.Find("PanelCity").gameObject;
            var panelRes  = transform.Find("PanelRes").gameObject;
            var panelNone = transform.Find("PanelNone").gameObject;

            void ShowByType(MapType mapType)
            {
                panelCity.SetActive(mapType == MapType.Player);
                panelRes.SetActive(mapType == MapType.Resource);
                panelNone.SetActive(mapType == MapType.None);
            }

            if (null != voMapItem.WorldUnit)
            {
                var unitType = voMapItem.WorldUnit.unitType;
                ShowByType(unitType);
                switch (unitType)
                {
                case MapType.Player:
                    UpdatePlayer(panelCity, voMapItem);
                    break;

                case MapType.Resource:
                    UpdateRes(panelRes, voMapItem);
                    break;

                case MapType.None:
                    UpdateNone(panelNone, voMapItem);
                    break;
                }
            }
            else
            {
                ShowByType(MapType.None);
                UpdateNone(panelNone, voMapItem);
            }
        }
示例#8
0
        /// <summary>
        /// 单击建筑
        /// </summary>
        /// <param name="gameObj"></param>
        private void OnItemClick(OnImage onImage, VoMapItem voMapItem)
        {
            Util.Log("触发坐标:{0:G},{1:G}", voMapItem.position.x, voMapItem.position.y);
            void WorldMove()
            {
                Util.CallMethod(name, "WorldMove", voMapItem.position.x, voMapItem.position.y);
            }

            if (null == voMapItem.WorldUnit)
            {
                //移动到该位置
                TweenImage(onImage, WorldMove);
                return;
            }
            var unitType = voMapItem.WorldUnit.unitType;

            switch (unitType)
            {
            case MapType.None:    //移动到该位置
                TweenImage(onImage, WorldMove);
                break;

            case MapType.Player:
                var player = voMapItem.WorldUnit.player;
                if (null == player)
                {
                    return;
                }
                Util.CallMethod(name, "CheckPlayer", voMapItem.position.x, voMapItem.position.y, player.id);
                break;

            case MapType.Resource:     //攻击某点
                Util.CallMethod(name, "CheckRes", voMapItem.position.x, voMapItem.position.y, voMapItem.WorldUnit.res.id);
                break;
            }
        }
示例#9
0
 /// <summary>
 /// 添加监听
 /// </summary>
 /// <param name="gameObj"></param>
 /// <param name="voMapItem"></param>
 private void AddListener(OnImage onImage, VoMapItem voMapItem)
 {
     //添加监听
     onImage.onDistance.RemoveAllListeners();
     onImage.onDistance.AddListener(delegate { OnItemClick(onImage, voMapItem); });
 }