/// <summary> /// 处理使用修养 /// </summary> /// <param name="mapPointDto"></param> private void processRest(MapPointDto mapPointDto) { //镜像对称 int totalX = 12; int totalZ = 8; int movetype = -1; int realx = totalX - mapPointDto.mapPoint.X; int realz = totalZ - mapPointDto.mapPoint.Z; if (mapPointDto.LandArmyRace == -1) { //如果是飞行单位使用了修养 movetype = ArmyMoveType.SKY; } foreach (var item in OtherArmyCtrlList) { if (item.armyState.Position.X == realx && item.armyState.Position.Z == realz && item.armyState.MoveType == movetype) { item.armyState.Hp++; break; } } Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "对方(" + realx + "," + realz + ")使用修养卡"); //移除卡牌 Dispatch(AreoCode.CHARACTER, CharacterEvent.REMOVE_OTHER_CARDS, "移除手牌"); }
private void Start() { Bind(CharacterEvent.SELECT_ORDERCARD); //Bind(CharacterEvent.SET_MY_LAND_SKY); selectArmyCtrlDelegate = processSelectArmyDelegate; myArmyCtrlManager = GetComponent <MyArmyCtrlManager>(); mapPointDto = new MapPointDto(); socketMsg = new SocketMsg(); }
// Use this for initialization void Start() { Bind(MapEvent.SELECT_ARMYCARD); Bind(MapEvent.CANCEL_SELECT_ARMYCARD); Bind(MapEvent.SET_OTHER_ARMY); Bind(MapEvent.MOVE_MY_ARMY); Bind(MapEvent.MOVE_OTHER_ARMY); myCharacterCtrl = GetComponent <MyCharacterCtrl>(); myArmyCtrls = GetComponent <MyArmyCtrlManager>(); socketMsg = new SocketMsg(); pointDto = new MapPointDto(); mapMoveDto = new MapMoveDto(); }
/// <summary> /// 处理地图放置兵种请求 /// </summary> /// <param name="mapPointDto"></param> private void processMapSetArmy(ClientPeer clientPeer, MapPointDto mapPointDto) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); //向房间内其他人发送兵种放置消息 fightRoom.Broadcast(OpCode.FIGHT, FightCode.MAP_SET_ARMY_SBOD, mapPointDto, clientPeer); // } ); }
/// <summary> /// 处理修养请求 /// </summary> /// <param name="clientPeer"></param> /// <param name="active"></param> private void processDealRestAttack(ClientPeer clientPeer, MapPointDto mapPointDto) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); fightRoom.Broadcast(OpCode.FIGHT, FightCode.DEAL_REST_SBOD, mapPointDto, clientPeer); //向房间内其他人发送修养广播 //在服务器移除修养指令卡 fightRoom.RemoveCard(uid, CardType.ORDERCARD, OrderCardType.REST); } ); }
/// <summary> /// 处理设置其他人兵种 /// </summary> /// <param name="mapPointDto"></param> private void processMapSetArmySbod(MapPointDto mapPointDto) { Dispatch(AreoCode.MAP, MapEvent.SET_OTHER_ARMY, mapPointDto); }
/// <summary> /// 处理修养广播 /// </summary> /// <param name="mapPointDto"></param> private void processRestSBOD(MapPointDto mapPointDto) { Dispatch(AreoCode.ARMY, ArmyEvent.OTHER_USE_REST, mapPointDto); }
/// <summary> /// 处理设置其他人放置兵种 /// </summary> /// <param name="mapPointDto"></param> private void processSetOtherArmy(MapPointDto mapPointDto) { //镜像对称 int totalX = 12; int totalZ = 8; int x = mapPointDto.mapPoint.X; int z = mapPointDto.mapPoint.Z; int otherx = totalX - x; int otherz = totalZ - z;//对方兵种真实位置 MapPointCtrl mapPointCtrl = null; GameObject prefab; foreach (var item in MapManager.mapPointCtrls) { if (item.mapPoint.X == otherx && item.mapPoint.Z == otherz) { mapPointCtrl = item; break; } } //fixbug 放置第二个单位时会额外放置第一个单位 if (mapPointCtrl) { //传送的地图数据陆地单位不为空,且该地块上单位为空 if (mapPointDto.LandArmyRace != -1 && mapPointCtrl.LandArmyRace == -1) { //陆地单位 mapPointCtrl.mapPoint.X = otherx; mapPointCtrl.mapPoint.Z = otherz; mapPointCtrl.LandArmyRace = mapPointDto.LandArmyRace; mapPointCtrl.LandArmyName = mapPointDto.LandArmyName; setArmyPrefab(mapPointCtrl.LandArmyRace, mapPointCtrl.LandArmyName, out prefab); GameObject army = mapPointCtrl.SetLandArmy(prefab, false); //初始化敌方兵种信息 army.gameObject.GetComponent <OtherArmyCtrl>().Init(mapPointDto.LandArmyRace, mapPointDto.LandArmyName, mapPointCtrl); army.gameObject.GetComponent <OtherArmyCtrl>().armyState.Position = new Protocol.Constants.Map.MapPoint(otherx, otherz); //army.gameObject.GetComponent<OtherArmyCtrl>().armyState.CanFly = false; army.gameObject.GetComponent <OtherArmyCtrl>().armyState.MoveType = ArmyMoveType.LAND; mapPointCtrl.UpdateLandArmy(army); //向其他人添加兵种 Dispatch(AreoCode.ARMY, ArmyEvent.ADD_OTHER_ARMY, army); } if (mapPointDto.SkyArmyRace != -1 && mapPointCtrl.SkyArmyRace == -1) { //飞行单位 mapPointCtrl.mapPoint.X = otherx; mapPointCtrl.mapPoint.Z = otherz; mapPointCtrl.SkyArmyRace = mapPointDto.SkyArmyRace; mapPointCtrl.SkyArmyName = mapPointDto.SkyArmyName; setArmyPrefab(mapPointCtrl.SkyArmyRace, mapPointCtrl.SkyArmyName, out prefab); GameObject army = mapPointCtrl.SetSkyArmy(prefab, false); //初始化敌方兵种信息 army.gameObject.GetComponent <OtherArmyCtrl>().Init(mapPointDto.SkyArmyRace, mapPointDto.SkyArmyName, mapPointCtrl); army.gameObject.GetComponent <OtherArmyCtrl>().armyState.Position = new Protocol.Constants.Map.MapPoint(otherx, otherz); army.gameObject.GetComponent <OtherArmyCtrl>().armyState.MoveType = ArmyMoveType.SKY; mapPointCtrl.UpdateSkyArmy(army); Dispatch(AreoCode.ARMY, ArmyEvent.ADD_OTHER_ARMY, army); } } }