Example #1
0
 void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
 {
     if (stream.isWriting)
     {
         stream.SendNext(nationality);
         stream.SendNext(word);
         stream.SendNext(heroskill);
         stream.SendNext(force);
         stream.SendNext(intelligence);
         stream.SendNext(dominance);
         stream.SendNext(politics);
         stream.SendNext(allegiance);
         stream.SendNext(charm);
         stream.SendNext(price);
     }
     else if (stream.isReading)
     {
         nationality  = (WorldObj.Nationality)stream.ReceiveNext();
         word         = (string)stream.ReceiveNext();
         heroskill    = (WorldObj.HeroSkill)stream.ReceiveNext();
         force        = (int)stream.ReceiveNext();
         intelligence = (int)stream.ReceiveNext();
         dominance    = (int)stream.ReceiveNext();
         politics     = (int)stream.ReceiveNext();
         allegiance   = (int)stream.ReceiveNext();
         charm        = (int)stream.ReceiveNext();
         price        = (int)stream.ReceiveNext();
     }
 }
Example #2
0
        //城市属性同步
        void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
        {
            if (stream.isWriting)
            {
                stream.SendNext(nationality);
                stream.SendNext(word);
                //stream.SendNext(population);
                stream.SendNext(citydefence);

                //stream.SendNext(swordmannumber);
                //stream.SendNext(archernumber);
                //stream.SendNext(cavalrynumber);

                //因为List<string>类型无法序列化,所以需要通过转化成string[]类型实现同步
                stream.SendNext(heros.ToArray());
            }
            else if (stream.isReading)
            {
                nationality = (WorldObj.Nationality)stream.ReceiveNext();
                word        = (string)stream.ReceiveNext();
                //population = (int)stream.ReceiveNext();
                citydefence = (int)stream.ReceiveNext();

                //swordmannumber = (int)stream.ReceiveNext();
                //archernumber = (int)stream.ReceiveNext();
                //cavalrynumber = (int)stream.ReceiveNext();

                //因为List<string>类型无法序列化,所以需要通过转化成string[]类型实现同步
                string[] strs = (string[])stream.ReceiveNext();
                heros = strs.ToList();
            }
        }
Example #3
0
        /// <summary>
        /// 生成旗帜
        /// </summary>
        /// <param name="_nationality">国籍</param>
        void SpawnFlag(WorldObj.Nationality _nationality)
        {
            //生成旗帜前先删除可能有的旗帜
            DestroyAllFlags();
            Transform newFlag = null;

            switch (nationality)
            {
            case WorldObj.Nationality.red:
                newFlag = Instantiate(PhotonGameManager.assetDictionary["Flag_red"].transform, transform.position, Quaternion.Euler(0f, -90f, -45f));
                break;

            case WorldObj.Nationality.blue:
                newFlag = Instantiate(PhotonGameManager.assetDictionary["Flag_blue"].transform, transform.position, Quaternion.Euler(0f, -90f, -45f));
                break;

            case WorldObj.Nationality.none:
                break;

            default:
                break;
            }
            if (newFlag)
            {
                newFlag.SetParent(transform);
                newFlag.localPosition = new Vector3(-1.3f, 1f, 1f);
            }
        }
Example #4
0
 void BeginHeroAssign(WorldObj.Nationality _nationality, string _randomHero)
 {
     foreach (var item in WorldObj.allCities)
     {
         if (item.nationality == _nationality)
         {
             item.heros.Add(_randomHero);
         }
     }
 }
Example #5
0
 void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
 {
     if (stream.isWriting)
     {
         stream.SendNext(nationality);
     }
     else
     {
         nationality = (WorldObj.Nationality)stream.ReceiveNext();
     }
 }
Example #6
0
        void PrepareStepBuildRPC(WorldObj.SoldierType _soldierType, WorldObj.Nationality _nationality)
        {
            if (!cityController)
            {
                Debug.Log("组件cityController没找到!");
            }
            //初始化刚开始建造的模型
            GameObject _newTeam = cityController.newTeam;

            if (_newTeam)
            {
                TeamObj newTeamObj = _newTeam.GetComponent <TeamObj>();
                //锁住被建队伍模型的动画和隐藏他的血条
                LockUnLockBuildingTeam(newTeamObj, true);
            }
            else
            {
                return;
            }

            switch (_soldierType)
            {
            case WorldObj.SoldierType.Tank:
                Transform model = null;
                switch (_nationality)
                {
                case WorldObj.Nationality.red:
                    model = _newTeam.transform.Find("Tank_Red");
                    break;

                case WorldObj.Nationality.blue:
                    model = _newTeam.transform.Find("Tank_Blue");
                    break;

                case WorldObj.Nationality.monster:
                    break;

                default:
                    break;
                }
                //激活基础配件
                cityController.SetActiveParts(model, new string[] { "Cylinder020", "Object031" });
                break;

            default:
                break;
            }
        }
Example #7
0
        /// <summary>
        /// 侦查信息显示
        /// </summary>
        /// <param name="_nationality">国籍</param>
        /// <param name="_action"></param>
        /// <param name="_scoutInfoType"></param>
        public void ScoutInfoShow(WorldObj.Nationality _nationality, WorldObj.AnimatorAction _action, WorldObj.ScoutInfoType _scoutInfoType, GameObject _infoSourceObj)
        {
            //没有模型激活的情况下按国籍激活模型
            Transform horsemanRed  = teamScout.Find("Horseman_Red");
            Transform horsemanBlue = teamScout.Find("Horseman_Blue");

            if (!horsemanRed.gameObject.GetActive() && !horsemanBlue.gameObject.GetActive())
            {
                switch (_nationality)
                {
                case WorldObj.Nationality.red:
                    horsemanRed.gameObject.SetActive(true);
                    break;

                case WorldObj.Nationality.blue:
                    horsemanBlue.gameObject.SetActive(true);
                    break;

                case WorldObj.Nationality.monster:
                    break;

                default:
                    break;
                }
            }

            //播放动画
            if (!teamScout)
            {
                Debug.Log("没找到teamScout!");
                return;
            }
            if (!scoutAnimator)
            {
                Debug.Log("没找到动画组件");
                return;
            }
            scoutAnimator.SetBool(Enum.GetNames(typeof(WorldObj.AnimatorAction))[(int)WorldObj.AnimatorAction.Run], false);
            scoutAnimator.SetBool(Enum.GetNames(typeof(WorldObj.AnimatorAction))[(int)_action], true);
            //输出侦查信息
            scoutInfoText.text = WorldObj.ScoutInfoDictionary[_scoutInfoType];
            //存储侦查信息源对象
            WorldObj.scoutInfoSourceObj = _infoSourceObj;
            //5秒后恢复以前的动画和侦查信息
            StartCoroutine(ResetAnimatorRun(5f, WorldObj.AnimatorAction.Run, _action, WorldObj.ScoutInfoType.none));
        }
Example #8
0
        void SpawnMonsterObjectsRPC(WorldObj.Nationality _nationality, int _soldiernumber, WorldObj.SoldierType _soldiertype, int _teamMorola, int _viewId, int _viewIdModel)
        {
            //计算出野怪位置
            Vector3 GriffinPosition = Vector3.zero;

            switch (_soldiertype)
            {
            case SoldierType.Griffin:
                bool rightposition = false;
                while (!rightposition)
                {
                    GriffinPosition = RandomPosition();
                    rightposition   = true;
                    for (int j = 0; j < citiespositions.Count; j++)
                    {
                        if (Vector3.Distance(citiespositions[j], GriffinPosition) < 2f)
                        {
                            rightposition = false;
                            break;
                        }
                    }
                }

                break;

            default:
                break;
            }
            GameObject newMonster = Instantiate(team, GriffinPosition, Quaternion.identity);

            newMonster.GetComponent <PhotonView>().viewID = _viewId;
            //给新派生的队伍对象赋值
            TeamObj teamObj = newMonster.GetComponent <TeamObj>();

            teamObj.nationality   = _nationality;
            teamObj.soldiernumber = _soldiernumber;
            teamObj.soldiertype   = _soldiertype;
            teamObj.hero          = "";
            teamObj.teamspeed     = WorldObj.BeginTeamSpeed;
            teamObj.teammorale    = WorldObj.BeginTeamMorale;
            //根据士兵类型激活队伍模型
            Transform teamModel = null;

            switch (teamObj.soldiertype)
            {
            case WorldObj.SoldierType.Griffin:
                teamModel = teamObj.transform.Find("Griffin_Yellow");
                break;
            }
            if (teamModel)
            {
                //激活队伍模型
                teamModel.gameObject.SetActive(true);
                //手动分配队伍模型的PhotonViewID
                teamModel.GetComponent <PhotonView>().viewID = _viewIdModel;
            }

            //使其不可见
            Funcs.ChangeObjectAlphaValue(teamObj.teamHealthCanvas, 0f);
            Funcs.ChangeObjectAlphaValue(teamObj.transform, 0f);
        }
Example #9
0
 public void AssignNationality(WorldObj.Nationality _nationality)
 {
     nationality = _nationality;
 }
Example #10
0
        public int price;                                                    //{ set; get; }

        #endregion

        #region Public Methods
        /// <summary>
        /// 分配国籍
        /// </summary>
        /// <param name="_nationality">国籍</param>
        public void GiveNationality(WorldObj.Nationality _nationality)
        {
            photonView.RPC("AssignNationality", PhotonTargets.All, _nationality);
        }
Example #11
0
 public void GiveNationalityRPC(WorldObj.Nationality _nationality)
 {
     nationality = _nationality;
 }