예제 #1
0
 public void Update(MiniMapTeamPlayInfo data, float rate, Vector2 selfPlayPos, float miniMapRepresentWHByRice, MapLevel mapLevel, bool isNoTeamPlayer)
 {
     UodateLocation(data, rate, ref selfPlayPos, miniMapRepresentWHByRice);
     UpdatePlayNum(data, mapLevel, isNoTeamPlayer);
     UpdatePlayStatue(ref selfPlayPos, data, mapLevel);
     UpdatePlayFaceDirection(data);
 }
예제 #2
0
        private PlayerInfo CreatePlayerInfo(MiniMapTeamPlayInfo PlayInfo)
        {
            var info = new PlayerInfo();

            info.Init(GameObject.Instantiate(FindChildGo("playerInfo").gameObject, FindChildGo("Show")));
            info.UpdateInfo(PlayInfo.Num, PlayInfo.Color, PlayInfo.PlayerName, PlayInfo.EntityId, 0, playerInfoUIAdapter.CountdownTipDataList, playerInfoUIAdapter.GetGameRule(), playerInfoUIAdapter.HpPercent);
            info.UpdateLocation(PlayInfo.TopPos);
            return(info);
        }
예제 #3
0
        private void UodateLocation(MiniMapTeamPlayInfo data, float rate, ref Vector2 selfPlayPos, float miniMapRepresentWHByRice)
        {
            var shiftVec = data.Pos.ShiftedUIVector2();

            if (_isPlayer.Equals(data.IsPlayer) && _pos.Equals(shiftVec) && _selfPlayPos.Equals(selfPlayPos) &&
                _rate.Equals(rate) && _mapWidth.Equals(miniMapRepresentWHByRice))
            {
                return;
            }

            _isPlayer    = data.IsPlayer;
            _pos         = shiftVec;
            _selfPlayPos = selfPlayPos;
            _rate        = rate;
            _mapWidth    = miniMapRepresentWHByRice;

            if (data.IsPlayer == true)
            {
                rectTransform.anchoredPosition = _pos * rate;
                UIUtils.SetActive(direction, false);
            }
            else
            {
                var offset = new Vector2(rectTransform.sizeDelta.y + directionRectTf.sizeDelta.y, rectTransform.sizeDelta.y + directionRectTf.sizeDelta.y) / (2 * rate);
                var result = UIUtils.MathUtil.IsInSquare(selfPlayPos, miniMapRepresentWHByRice, miniMapRepresentWHByRice, offset, true, _pos);
                tran.GetComponent <RectTransform>().anchoredPosition = (selfPlayPos + result.ContactPoint) * rate;
                if (!result.IsContact)
                {
                    UIUtils.SetActive(direction, false);
                }
                else
                {
                    UIUtils.SetActive(direction, true);
                    {
                        Vector2 fromVector = new Vector2(0, 1);
                        Vector2 toVector   = tran.GetComponent <RectTransform>().anchoredPosition.normalized;

                        float angle = UnityEngine.Vector2.Angle(fromVector, toVector);                //求出两向量之间的夹角
                        UnityEngine.Vector3 normal = UnityEngine.Vector3.Cross(fromVector, toVector); //叉乘求出法线向量
                        if (normal.z < 0)
                        {
                            angle = 360 - angle;
                        }
                        direction.localEulerAngles = new UnityEngine.Vector3(0, 0, (angle + 180) % 360);
                    }
                }
            }
        }
예제 #4
0
        private PlayerInfo CreatePlayerInfo(MiniMapTeamPlayInfo PlayInfo)
        {
            var info = new PlayerInfo();

            info.Init(GameObject.Instantiate(FindChildGo("playerInfo").gameObject, FindChildGo("Show")));
            info.UpdateInfo(PlayInfo.Num, PlayInfo.Color, PlayInfo.PlayerName, PlayInfo.EntityId, 0, 1);
            if (PlayInfo.TopPos == Vector3.zero)
            {
                info.SetActive(false);
            }
            else
            {
                info.UpdateLocation(PlayInfo.TopPos);
            }
            return(info);
        }
예제 #5
0
        private void RefreshPlayTeamItem(Transform tran, MiniMapTeamPlayInfo data)
        {
            //控制位置和方向
            {
                var direction = tran.Find("direction");
                if (direction == null)
                {
                    return;
                }
                var directRT = direction.GetComponent <RectTransform>();
                var tranRT   = tran.GetComponent <RectTransform>();

                var offset = new Vector2(tranRT.sizeDelta.y + directRT.sizeDelta.y, tranRT.sizeDelta.y + directRT.sizeDelta.y) / (2 * rate);
                var result = UIUtils.MathUtil.IsInSquare(PlayRefePosByRice, MaxMapRepresentWHByRice, MaxMapRepresentWHByRice, offset, true, data.Pos.ShiftedUIVector2());
                tran.GetComponent <RectTransform>().anchoredPosition = playRefePosByPixel + result.ContactPoint * rate;

                if (!result.IsContact)
                {
                    UIUtils.SetActive(direction, false);
                    UIUtils.SetActive(tran, true);
                }
                else
                {
                    UIUtils.SetActive(tran, false);
                    UIUtils.SetActive(direction, false);
//                    {
//                        Vector2 fromVector = new Vector2(0, 1);
//                        Vector2 toVector = tran.GetComponent<RectTransform>().anchoredPosition.normalized;
//
//                        float angle = UnityEngine.Vector2.Angle(fromVector, toVector); //求出两向量之间的夹角
//                        UnityEngine.Vector3 normal = UnityEngine.Vector3.Cross(fromVector, toVector);//叉乘求出法线向量
//                        if (normal.z < 0)
//                        {
//                            angle = 360 - angle;
//                        }
//                        direction.localEulerAngles = new UnityEngine.Vector3(0, 0, (angle + 180) % 360);
//                    }
                }
            }

            //编号和编号背景色
            playMarkUtil.UpdatePlayNumAndColor(tran, ref PlayRefePosByRice, data, false);

            //控制朝向
            playMarkUtil.UpdatePlayFaceDirection(tran, data);
        }
예제 #6
0
        private void UpdatePlayNum(MiniMapTeamPlayInfo data, MapLevel mapLevel, bool isNoTeamPlayer)
        {
            if (data.Num.Equals(_num) && data.Color.Equals(_color) && isNoTeamPlayer.Equals(_isNoTeamPlayer))
            {
                return;
            }
            _isNoTeamPlayer = isNoTeamPlayer;
            _num            = data.Num;
            _color          = data.Color;
            //刷新编号

            if (number.gameObject.activeSelf)
            {
                if (numberText)
                {
                    if (data.IsPlayer)
                    {
                        if (isNoTeamPlayer)
                        {
                            numberText.text = string.Empty;
                        }
                        else
                        {
                            numberText.text = data.Num.ToString();
                        }
                    }
                    else
                    {
                        numberText.text = data.Num.ToString();
                    }
                }
            }

            //刷新编号背景图
//            var temperBgSprite = SpriteComon.GetInstance().GetSpriteByName("mark");
//            if (bgImage.sprite != temperBgSprite)
//            {
//                bgImage.sprite = temperBgSprite;
//            }
            bgImage.color = data.Color;
        }
예제 #7
0
        public void UpdatePlayFaceDirection(Transform tran, MiniMapTeamPlayInfo data)
        {
            var faceDirection = tran.Find("faceDireciton");

            if (faceDirection)
            {
                if (data.Statue != MiniMapPlayStatue.DEAD) //非死亡状态
                {
                    UIUtils.SetActive(faceDirection, true);

                    float angular = data.FaceDirection % 360;
                    angular = angular < 0 ? 360 + angular : angular;

                    faceDirection.localEulerAngles = new UnityEngine.Vector3(0, 0, -angular);
                }
                else
                {
                    UIUtils.SetActive(faceDirection, false);
                }
            }
        }
예제 #8
0
        private void UpdatePlayFaceDirection(MiniMapTeamPlayInfo data)
        {
            if (data.Statue.Equals(_playStatue) && data.FaceDirection.Equals(_faceDirection))
            {
                return;
            }
            _playStatue    = data.Statue;
            _faceDirection = data.FaceDirection;

            if (data.Statue != MiniMapPlayStatue.DEAD) //非死亡状态
            {
                UIUtils.SetActive(faceDirectionTf, true);

                float angular = data.FaceDirection % 360;
                angular = angular < 0 ? 360 + angular : angular;

                faceDirectionTf.localEulerAngles = new UnityEngine.Vector3(0, 0, -angular);
            }
            else
            {
                UIUtils.SetActive(faceDirectionTf, false);
            }
        }
예제 #9
0
        public void Update(List <MiniMapTeamPlayInfo> TeamInfos, Vector2 selfPlayPos, float rate, float miniMapRepresentWHByRice, MapLevel mapLevel)
        {
            if (TeamInfos.Count > 0)
            {
                isNoTeamPlayer = (TeamInfos.Count == 1) ? true : false;
                for (int i = 0; i < TeamInfos.Count; i++)
                {
                    MiniMapTeamPlayInfo data = TeamInfos[i];
                    PlayerItem          playerItem;
                    playerItemDic.TryGetValue(data.PlayerId, out playerItem);
                    if (playerItem == null)
                    {
                        playerItem = new PlayerItem(GameObject.Instantiate(playItemModel, tran, true));
                        playerItemDic[data.PlayerId] = playerItem;
                    }

                    playerItem.IsOutDate = false;
                    playerItem.Update(data, rate, selfPlayPos, miniMapRepresentWHByRice, mapLevel, isNoTeamPlayer);
                }
            }

            ClearOutDateItem();
        }
        public void OnFireOnce()
        {
            _playerEntity.statisticsData.Statistics.ShootingCount += 1;
            //服务端不需要处理,uicontext为null
            if (null != _uiContext && _uiContext.hasMap)
            {
                var map = _uiContext.map;

                MiniMapTeamPlayInfo playerInfo = null;
                foreach (var player in map.TeamInfos)
                {
                    if (_playerEntity.playerInfo.PlayerId == player.PlayerId)
                    {
                        playerInfo = player;
                    }
                }

                if (null != playerInfo)
                {
                    playerInfo.IsShooting = true;
                    playerInfo.ShootingCount++;
                }
            }
        }
예제 #11
0
        public void OnBulletFire(PlayerWeaponController controller, WeaponSideCmd cmd)
        {
            controller.RelatedStatisticsData.ShootingCount += 1;
            //服务端不需要处理,uicontext为null
            if (null != _uiContext && _uiContext.hasMap)
            {
                var map = _uiContext.map;

                MiniMapTeamPlayInfo playerInfo = null;
                foreach (var player in map.TeamInfos)
                {
                    if (controller.RelatedPlayerInfo.PlayerId == player.PlayerId)
                    {
                        playerInfo = player;
                    }
                }

                if (null != playerInfo)
                {
                    playerInfo.IsShooting = true;
                    playerInfo.ShootingCount++;
                }
            }
        }
예제 #12
0
        private void UpdatePlayStatue(ref Vector2 referPos, MiniMapTeamPlayInfo data, MapLevel mapLevel)
        {
            var shiftVec = data.Pos.ShiftedUIVector2();

            if (referPos.Equals(_referPos) && data.Statue.Equals(_miniMapPlayStatue) &&
                shiftVec.Equals(_infoPos) && data.ShootingCount.Equals(_shootingCount))
            {
                return;
            }
            _referPos          = referPos;
            _miniMapPlayStatue = data.Statue;
            _infoPos           = shiftVec;
            _shootingCount     = data.ShootingCount;

            switch (data.Statue)
            {
            case MiniMapPlayStatue.NORMAL:        //常态
            {
                UIUtils.SetActive(number, !MapLevel.Min.Equals(mapLevel));
                UIUtils.SetActive(stateIcon, false);
                if (data.IsPlayer)
                {
                    UIUtils.SetActive(loftIcon, false);
                }
                else
                {
//                            UIUtils.SetActive(loftIcon, true);
//                            var temperSprite = SpriteComon.GetInstance().GetSpriteByName("Loft_icon");
//                            if (temperSprite != null && loftIconImage.sprite != temperSprite)
//                            {
//                                loftIconImage.sprite = temperSprite;
//                            }
//
//                            if (data.Pos.y > referPos.y)       //上方
//                            {
//                                if (loftIcon.transform.localScale != Vector3.one)
//                                    loftIcon.transform.localScale = Vector3.one;
//                            }
//                            else if (data.Pos.y <= referPos.y)   //下方
//                            {
//                                if (loftIcon.transform.localScale != new UnityEngine.Vector3(1, -1, 1))
//                                    loftIcon.transform.localScale = new UnityEngine.Vector3(1, -1, 1);
//                            }
                }

                if (data.ShootingCount > 0)           //在射击状态下
                {
                    if (!tranCTween.ContainsKey(tran) || tranCTween[tran] == null)
                    {
                        var temperTween = UIUtils.CallTween(1, 1.5f, (value) =>
                            {
                                bgRectTf.localScale = new UnityEngine.Vector3((float)value, (float)value, 1.0f);
                            },
                                                            (value) =>
                            {
                                bgRectTf.localScale = Vector3.one;
                                data.ShootingCount--;
                                tranCTween[tran].Kill();
                                tranCTween[tran] = null;
                            },
                                                            0.1f);

                        if (!tranCTween.ContainsKey(tran))
                        {
                            tranCTween.Add(tran, temperTween);
                        }
                        else
                        {
                            tranCTween[tran] = temperTween;
                        }
                    }
                }
                else
                {
                    if (tranCTween.ContainsKey(tran) && tranCTween[tran] != null)
                    {
                        tranCTween[tran].Kill();
                        tranCTween[tran] = null;
                    }
                    if (bgRectTf.localScale != Vector3.one)
                    {
                        bgRectTf.localScale = Vector3.one;
                    }
                }
            }
            break;

            case MiniMapPlayStatue.TIAOSAN:        //跳伞
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_parachute");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.ZAIJU:        //载具
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_drive");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.HURTED:        //受伤
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_hurt");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.DEAD:        //死亡
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_die");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            default:
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, false);
            }
            break;
            }
        }
예제 #13
0
        public void UpdatePlayNumAndColor(Transform tran, ref Vector2 referPos, MiniMapTeamPlayInfo data, bool isMimiMap)
        {
            var numberBg = tran.Find("bg");

            if (numberBg)
            {
                //刷新编号
                var number = numberBg.Find("number");
                if (number)
                {
                    if (MapLevel.Min.Equals(adapter.MapLevel))
                    {
                        number.gameObject.SetActive(false);
                    }
                    else
                    {
                        number.gameObject.SetActive(true);
                        var numberText = number.GetComponent <Text>();
                        if (numberText)
                        {
                            if (data.IsPlayer)
                            {
                                if (isNoTeamPlayer)
                                {
                                    numberText.text = "";
                                }
                                else
                                {
                                    numberText.text = data.Num.ToString();
                                }
                            }
                            else
                            {
                                numberText.text = data.Num.ToString();
                            }
                        }
                    }
                }

                var numberBgCom = numberBg.GetComponent <Image>();
                var stateIcon   = numberBg.Find("icon");
                var loftIcon    = numberBg.Find("loftIcon");

                if (numberBgCom == null || stateIcon == null || loftIcon == null)
                {
                    return;
                }
                var stateIconCom = stateIcon.GetComponent <Image>();
                var loftIconCom  = loftIcon.GetComponent <Image>();

                //刷新编号背景图
//                var temperBgSprite = SpriteComon.GetInstance().GetSpriteByName("mark");
//                if (numberBgCom.sprite != temperBgSprite)
//                {
//                    numberBgCom.sprite = temperBgSprite;
//                }
                numberBgCom.color = data.Color;

                switch (data.Statue)
                {
                case MiniMapPlayStatue.NORMAL:        //常态
                {
                    UIUtils.SetActive(number, true);
                    UIUtils.SetActive(stateIcon, false);
                    if (data.IsPlayer)
                    {
                        UIUtils.SetActive(loftIcon, false);
                    }
                    else
                    {
                        UIUtils.SetActive(loftIcon, true);
                        var temperSprite = SpriteComon.GetInstance().GetSpriteByName("Loft_icon");
                        if (temperSprite != null && loftIconCom.sprite != temperSprite)
                        {
                            loftIconCom.sprite = temperSprite;
                        }
                        var wpos = data.Pos.ShiftedUIVector2();
                        if (wpos.y > referPos.y)               //上方
                        {
                            if (loftIcon.transform.localScale != Vector3.one)
                            {
                                loftIcon.transform.localScale = Vector3.one;
                            }
                        }
                        else if (wpos.y <= referPos.y)           //下方
                        {
                            if (loftIcon.transform.localScale != new UnityEngine.Vector3(1, -1, 1))
                            {
                                loftIcon.transform.localScale = new UnityEngine.Vector3(1, -1, 1);
                            }
                        }
                    }

                    if (data.ShootingCount > 0)           //在射击状态下
                    {
                        if (!tranCTween.ContainsKey(tran) || tranCTween[tran] == null)
                        {
                            var temperTween = UIUtils.CallTween(1, 1.5f, (value) =>
                                {
                                    numberBg.GetComponent <RectTransform>().localScale = new UnityEngine.Vector3((float)value, (float)value, 1.0f);
                                },
                                                                (value) =>
                                {
                                    numberBg.GetComponent <RectTransform>().localScale = Vector3.one;
                                    data.ShootingCount--;
                                    tranCTween[tran].Kill();
                                    tranCTween[tran] = null;
                                },
                                                                0.1f);

                            if (!tranCTween.ContainsKey(tran))
                            {
                                tranCTween.Add(tran, temperTween);
                            }
                            else
                            {
                                tranCTween[tran] = temperTween;
                            }
                        }
                    }
                    else
                    {
                        if (tranCTween.ContainsKey(tran) && tranCTween[tran] != null)
                        {
                            tranCTween[tran].Kill();
                            tranCTween[tran] = null;
                        }
                        if (numberBg.GetComponent <RectTransform>().localScale != Vector3.one)
                        {
                            numberBg.GetComponent <RectTransform>().localScale = Vector3.one;
                        }
                    }
                }
                break;

                case MiniMapPlayStatue.TIAOSAN:        //跳伞
                {
                    UIUtils.SetActive(number, false);
                    UIUtils.SetActive(loftIcon, false);
                    UIUtils.SetActive(stateIcon, true);

                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_parachute");
                    if (temperSprite != null && stateIconCom.sprite != temperSprite)
                    {
                        stateIconCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.ZAIJU:        //载具
                {
                    UIUtils.SetActive(number, false);
                    UIUtils.SetActive(loftIcon, false);
                    UIUtils.SetActive(stateIcon, true);

                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_drive");
                    if (temperSprite != null && stateIconCom.sprite != temperSprite)
                    {
                        stateIconCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.HURTED:        //受伤
                {
                    UIUtils.SetActive(number, false);
                    UIUtils.SetActive(loftIcon, false);
                    UIUtils.SetActive(stateIcon, true);

                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_hurt");
                    if (temperSprite != null && stateIconCom.sprite != temperSprite)
                    {
                        stateIconCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.DEAD:        //死亡
                {
                    UIUtils.SetActive(number, false);
                    UIUtils.SetActive(loftIcon, false);
                    UIUtils.SetActive(stateIcon, true);

                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_die");
                    if (temperSprite != null && stateIconCom.sprite != temperSprite)
                    {
                        stateIconCom.sprite = temperSprite;
                    }
                }
                break;

                default:
                {
                    UIUtils.SetActive(number, false);
                    UIUtils.SetActive(loftIcon, false);
                    UIUtils.SetActive(stateIcon, false);
                }
                break;
                }
            }
        }
예제 #14
0
        public void UIUpdate(int frameTime)
        {
            if (SingletonManager.Get <FreeUiManager>().Contexts1 == null ||
                SingletonManager.Get <FreeUiManager>().Contexts1.ui.uISessionEntity.uISession == null ||
                SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity == null)
            {
                return;
            }

            UpdatePlaine();

            PlayerEntity selfEntity = SingletonManager.Get <FreeUiManager>().Contexts1.ui.uI.Player;

            var data = SingletonManager.Get <FreeUiManager>().Contexts1.ui.map;

            data.TeamInfos.Clear();
            _teamNums = "";

            var map = SingletonManager.Get <FreeUiManager>().Contexts1.ui.map;

            map.TeamPlayerMarkInfos.Clear();

            var modeId = SingletonManager.Get <FreeUiManager>().Contexts1.session.commonSession.RoomInfo.ModeId;

            foreach (PlayerEntity playerEntity in SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntities())
            {
                try
                {
                    if (playerEntity.hasPlayerInfo && playerEntity.hasPosition &&
                        ((!GameRules.IsBio(modeId) && playerEntity.playerInfo.TeamId == selfEntity.playerInfo.TeamId) ||
                         (GameRules.IsBio(modeId) && playerEntity.hasGamePlay && selfEntity.gamePlay.IsMatchJob(playerEntity.gamePlay.JobAttribute))))
                    {
                        if (!infoMap.ContainsKey(playerEntity.playerInfo.PlayerId))
                        {
                            MiniMapTeamPlayInfo info = new MiniMapTeamPlayInfo(playerEntity.playerInfo.PlayerId, playerEntity.playerInfo.EntityId, true, 1,
                                                                               MapUtils.TeamColor(playerEntity.playerInfo.Num), MiniMapPlayStatue.NORMAL, new Vector3(500, 0, 300), 45f,
                                                                               new List <MiniMapPlayMarkInfo>()
                            {
                                new MiniMapPlayMarkInfo(new Vector3(500, 250), 1, Color.black),
                            }, false, 0,
                                                                               playerEntity.playerInfo.PlayerName, (int)playerEntity.gamePlay.CurHp, playerEntity.gamePlay.MaxHp, (int)playerEntity.gamePlay.InHurtedHp, false, playerEntity.position.Value);

                            infoMap[playerEntity.playerInfo.PlayerId] = info;
                        }

//                        Vector3 leftMinPos = TerrainCommonData.leftMinPos;

                        MiniMapTeamPlayInfo oneInfo = infoMap[playerEntity.playerInfo.PlayerId];

                        if (playerEntity == selfEntity)
                        {
                            oneInfo.IsPlayer = true;
                            data.CurPlayer   = oneInfo;
                        }
                        else
                        {
                            oneInfo.IsPlayer = false;
                        }

                        if (oneInfo.Num != playerEntity.playerInfo.Num)
                        {
                            oneInfo.Num        = playerEntity.playerInfo.Num;
                            oneInfo.PlayerName = playerEntity.playerInfo.PlayerName;
                            oneInfo.Color      = MapUtils.TeamColor(oneInfo.Num);
                        }

                        //pos,rot

                        /*if (playerEntity.hasControlledVehicle)
                         * {
                         *  //车上
                         *  Transform trans = playerEntity.GetVehicleSeatTransform(SingletonManager.Get<FreeUiManager>().Contexts1.vehicle);
                         *  oneInfo.Pos = new Vector2(trans.position.x - leftMinPos.x, trans.position.z - leftMinPos.z);
                         *  oneInfo.FaceDirection = trans.eulerAngles.y;
                         * }
                         * else */
                        if (playerEntity.gamePlay.GameState == GameState.AirPlane)
                        {
                            //飞机上(位置已做过偏移,这里不再偏移)
                            AirPlaneData planeData = data.PlaneData;
                            oneInfo.Pos           = new MapFixedVector2(planeData.Pos.WorldVector3().To2D());
                            oneInfo.Pos3D         = new MapFixedVector3(planeData.Pos.WorldVector3());
                            oneInfo.FaceDirection = planeData.Direction;
                        }
                        else
                        {
//                            oneInfo.Pos = new Vector2(playerEntity.position.Value.x - leftMinPos.x, playerEntity.position.Value.z - leftMinPos.z);
                            oneInfo.Pos           = new MapFixedVector2(playerEntity.position.FixedVector3.To2D());
                            oneInfo.Pos3D         = new MapFixedVector3(playerEntity.position.FixedVector3);
                            oneInfo.FaceDirection = playerEntity.orientation.Yaw;
                        }

                        //Test Trace
                        if (oneInfo.IsPlayer)
                        {
                            TerrainTestSystem.yaw = oneInfo.FaceDirection;
                        }
                        if (_teamNums.Equals(""))
                        {
                            _teamNums = oneInfo.Num.ToString();
                        }
                        else
                        {
                            _teamNums += "|" + oneInfo.Num;
                        }

                        //status
                        if (playerEntity.gamePlay.IsLifeState(EPlayerLifeState.Dead))
                        {
                            oneInfo.Statue = MiniMapPlayStatue.DEAD;
                            data.RemoveMapMark(playerEntity.playerInfo.PlayerId);
                        }
                        else if (playerEntity.gamePlay.IsLifeState(EPlayerLifeState.Dying))
                        {
                            oneInfo.Statue = MiniMapPlayStatue.HURTED;
                        }
                        else
                        {
                            if (playerEntity.IsOnVehicle())
                            {
                                oneInfo.Statue = MiniMapPlayStatue.ZAIJU;
                            }
                            else if (PlayerIsDrop(playerEntity))
                            {
                                oneInfo.Statue = MiniMapPlayStatue.TIAOSAN;
                            }
                            else
                            {
                                oneInfo.Statue = MiniMapPlayStatue.NORMAL;
                            }
                        }

                        //map mark
                        oneInfo.MarkList.Clear();
                        if (oneInfo.IsPlayer)
                        {
                            foreach (var mark in data.MapMarks.Values)
                            {
                                oneInfo.MarkList.Add(mark);

                                TeamPlayerMarkInfo lmark = new TeamPlayerMarkInfo();
                                lmark.Angel     = CommonMathUtil.GetAngle(mark.Pos, oneInfo.Pos.ShiftedUIVector2());
                                lmark.MarkColor = MapUtils.TeamColor(mark.Num);
                                map.TeamPlayerMarkInfos.Add(lmark);
                            }
                            TerrainTestSystem.mark = map.TeamPlayerMarkInfos.Count;
                        }

                        //New
                        oneInfo.PlayerName    = playerEntity.playerInfo.PlayerName;
                        oneInfo.CurHp         = (int)playerEntity.gamePlay.CurHp;
                        oneInfo.MaxHp         = playerEntity.gamePlay.MaxHp;
                        oneInfo.CurHpInHurted = (int)playerEntity.gamePlay.InHurtedHp;
                        oneInfo.IsMark        = data.MapMarks.ContainsKey(oneInfo.PlayerId) ? true : false;
                        oneInfo.TopPos        = PlayerEntityUtility.GetPlayerTopPosition(playerEntity);
                        oneInfo.EntityId      = playerEntity.entityKey.Value.EntityId;
                        data.TeamInfos.Add(oneInfo);
                    }
                }
                catch (Exception e)
                {
                    Debug.LogErrorFormat(e.Message);
                }
            }

            TerrainTestSystem.teamCnt = data.TeamInfos.Count;
            TerrainTestSystem.teamNum = _teamNums;
        }
예제 #15
0
        private void RefreshTeamItem(Transform tran, MiniMapTeamPlayInfo data)
        {
            //刷新位置
            var tranRt = tran.GetComponent <RectTransform>();

            tranRt.anchoredPosition = -1 * new Vector2(0, teamInfoHeight + teamItemInterval);
            teamInfoHeight         += modelHeight + teamItemInterval;

            //刷新编号和编号背景色
            var numberGo    = tran.Find("Number");
            var numberImage = numberGo.GetComponent <Image>();

            if (numberImage)
            {
                if (data.IsDead)  //死亡状态
                {
                    numberImage.color = new Color(data.Color.r, data.Color.g, data.Color.b, 0.5f);
                }
                else
                {
                    numberImage.color = data.Color;
                }

                var numberText = numberGo.Find("NumberText");
                if (numberText)
                {
                    var numberTextCom = numberText.GetComponent <Text>();
                    if (numberTextCom)
                    {
                        numberTextCom.text = data.Num.ToString();
                    }
                }
            }

            //刷新名字
            var nameGo   = tran.Find("Name");
            var nameText = nameGo.GetComponent <Text>();

            if (nameText)
            {
                nameText.text = data.PlayerName;
                if (data.IsDead)  //死亡状态
                {
                    nameText.color = new Color(nameText.color.r, nameText.color.g, nameText.color.b, 0.5f);
                }
                else
                {
                    nameText.color = new Color(nameText.color.r, nameText.color.g, nameText.color.b, 1);
                }
            }

            //刷新血量
            var       hpGo       = tran.Find("Hp");
            var       hpSlider   = hpGo.GetComponent <Slider>();
            var       fillBg     = hpGo.Find("Background"); //血条背景
            var       fillParent = hpGo.Find("FillArea");
            Transform fillFront  = null;

            fillFront = fillParent.Find("Fill");      //血量填充

            if (hpSlider && fillParent && fillFront && fillBg)
            {
                var fillFrontImgCom = fillFront.GetComponent <Image>();
                if (data.IsDead)    //死亡状态
                {
                    hpSlider.value = 0;
                }
                else if (data.IsInHurtedStatue) //受伤状态
                {
                    fillFrontImgCom.color = Color.red;
                    hpSlider.value        = (float)data.CurHpInHurted / data.MaxHp;
                }
                else                            //正常状态
                {
                    hpSlider.value = (float)data.CurHp / data.MaxHp;
                    if (hpSlider.value < 0.3f)
                    {
                        fillFrontImgCom.color = new UnityEngine.Color(237f / 255f, 129f / 255f, 129f / 255f, 1.0f);
                    }
                    else
                    {
                        fillFrontImgCom.color = new UnityEngine.Color(247f / 255f, 238f / 255f, 201f / 255f, 1.0f);
                    }
                }
            }

            //刷新标记
            var markGo     = tran.Find("Mark");
            var markImgCom = markGo.GetComponent <Image>();

            if (markGo != null && markImgCom != null)
            {
                if (data.IsDead || !data.IsMark)  //死亡状态 获取没有标记的话
                {
                    markGo.gameObject.SetActive(false);
                }
                else
                {
                    markGo.gameObject.SetActive(true);
                    markImgCom.color = data.Color;
                }
            }

            //刷新状态
            var statueBgGo   = tran.Find("StatueBg");
            var statue       = statueBgGo.Find("Statue");
            var statueImgCom = statue.GetComponent <Image>();

            statueBgGo.gameObject.SetActive(true);
            if (statueBgGo != null && statue != null && statueImgCom != null)
            {
                switch (data.Statue)
                {
                case MiniMapPlayStatue.TIAOSAN:      //跳伞
                {
                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_parachute");
                    if (temperSprite != null && temperSprite != statueImgCom.sprite)
                    {
                        statueImgCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.ZAIJU:      //载具
                {
                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_drive");
                    if (temperSprite != null && temperSprite != statueImgCom.sprite)
                    {
                        statueImgCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.HURTED:      //受伤
                {
                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_hurt");
                    if (temperSprite != null && temperSprite != statueImgCom.sprite)
                    {
                        statueImgCom.sprite = temperSprite;
                    }
                }
                break;

                case MiniMapPlayStatue.DEAD:      //死亡
                {
                    var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_die");
                    if (temperSprite != null && temperSprite != statueImgCom.sprite)
                    {
                        statueImgCom.sprite = temperSprite;
                    }
                }
                break;

                default:
                {
                    statueBgGo.gameObject.SetActive(false);
                }
                break;
                }
            }
        }