private InterestRegions GetDataInterestRegion(List <Region> listInterestRegion) { InterestRegions dataInterest = new InterestRegions() { listRegion = new List <MPosition>() }; foreach (var region in listInterestRegion) { MPosition data = new MPosition() { x = region.x, y = region.y }; dataInterest.listRegion.Add(data); } return(dataInterest); }
private void SendNewInfoToPeer(ActorPeer peer, IActor player) { List <IActor> listPlayerInRegion = new List <IActor>(); List <IActor> listCreepInRegion = new List <IActor>(); List <Region> listInterestRegion = GetInterestRegion(); foreach (var region in listInterestRegion) { listPlayerInRegion.AddRange(region.listPlayer); listCreepInRegion.AddRange(region.listCreep); } listPlayerInRegion.Remove(player); InterestRegions dataInterest = GetDataInterestRegion(listInterestRegion); dataInterest.playerPosition = new MPosition() { x = player.posX, y = player.posY }; EventData evtDataCrrepAndOtherPlayers = new EventData() { Code = (byte)AckEventType.CreateActor, Parameters = new Dictionary <byte, object>() { { (byte)Parameter.Player, GeneralFunc.Serialize(listPlayerInRegion) }, { (byte)Parameter.Creep, GeneralFunc.Serialize(listCreepInRegion) }, { (byte)Parameter.Regions, GeneralFunc.Serialize(dataInterest) } } }; peer.SendEvent(evtDataCrrepAndOtherPlayers, new SendParameters()); }
private InterestRegions GetDataInterestRegion(List<Region> listInterestRegion) { InterestRegions dataInterest = new InterestRegions() { listRegion = new List<MPosition>() }; foreach (var region in listInterestRegion) { MPosition data = new MPosition() { x = region.x, y = region.y }; dataInterest.listRegion.Add(data); } return dataInterest; }
public void OnEvent(EventData eventData) { Debug.Log((AckEventType)eventData.Code); //server raised an event switch ((AckEventType)eventData.Code) { // store player ID case AckEventType.AssignPlayerID: IActor player = GeneralFunc.Deserialize <IActor>(eventData.Parameters[0] as byte[]); GameActor playerCreated = Instantiate ( playerPref, new Vector3(player.posX, 0.5f, player.posY), playerPref.transform.rotation ) as GameActor; playerCreated.SetActor(player); playerCreated.GetComponent <OwnerInfo>().SetOwnerID(player.peerID); StarCollectorClient.playerID = player.peerID; playerCreated.GetComponent <CheckRegion>().Load(); break; // create actor case AckEventType.CreateActor: if (eventData.Parameters.ContainsKey((byte)Parameter.Creep)) { List <IActor> listAllCreep = GeneralFunc.Deserialize <List <IActor> >(eventData.Parameters[(byte)Parameter.Creep] as byte[]); Debug.Log("count all creep :" + listAllCreep.Count); List <IActor> listSameCreep = GetListSameActor(listAllCreep, GameActor.listCreep); List <IActor> listNewCreep = listAllCreep.Except(listSameCreep).ToList(); List <GameActor> listDeleteCreep = GameActor.listCreep.Where(a => !listAllCreep.Any(b => b.actorID == a.actor.actorID)).ToList(); foreach (var creepDelete in listDeleteCreep) { creepDelete.Destruct(); } foreach (var creep in listNewCreep) { GameActor creepCreated = Instantiate(creepPref, new Vector3(creep.posX, 0.5f, creep.posY), playerPref.transform.rotation) as GameActor; creepCreated.SetActor(creep); creepCreated.GetComponent <CheckRegion>().Load(); } } if (eventData.Parameters.ContainsKey((byte)Parameter.Regions)) { InterestRegions dataInterestRegion = GeneralFunc.Deserialize <InterestRegions>(eventData.Parameters[(byte)Parameter.Regions] as byte[]); if (dataInterestRegion.playerPosition != null) { Debug.Log(string.Format("player position -------------- x: {0} - y: {1}", dataInterestRegion.playerPosition.x, dataInterestRegion.playerPosition.y)); } //foreach (var data in dataInterestRegion.listRegion) //{ // Debug.Log(string.Format("x: {0} - y: {1}",data.x,data.y)); //} AreaController.Instance.ShowInterestRegion(dataInterestRegion.listRegion); } break; case AckEventType.DestroyActor: if (eventData.Parameters.ContainsKey((byte)Parameter.Data)) { IActor playerDestroy = GeneralFunc.Deserialize <IActor>(eventData.Parameters[(byte)Parameter.Data] as byte[]); GameActor gameActorDestroy = GameActor.listPlayer.Where(a => a.actor.actorID == playerDestroy.actorID).FirstOrDefault(); if (gameActorDestroy != null) { gameActorDestroy.Destruct(); } } break; // log chat messages case AckEventType.ChatMessage: break; } }