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(); } }
//城市属性同步 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(); } }
/// <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); } }
void BeginHeroAssign(WorldObj.Nationality _nationality, string _randomHero) { foreach (var item in WorldObj.allCities) { if (item.nationality == _nationality) { item.heros.Add(_randomHero); } } }
void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.isWriting) { stream.SendNext(nationality); } else { nationality = (WorldObj.Nationality)stream.ReceiveNext(); } }
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; } }
/// <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)); }
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); }
public void AssignNationality(WorldObj.Nationality _nationality) { nationality = _nationality; }
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); }
public void GiveNationalityRPC(WorldObj.Nationality _nationality) { nationality = _nationality; }