Ejemplo n.º 1
0
    /// <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, "移除手牌");
    }
Ejemplo n.º 2
0
    private void Start()
    {
        Bind(CharacterEvent.SELECT_ORDERCARD);
        //Bind(CharacterEvent.SET_MY_LAND_SKY);

        selectArmyCtrlDelegate = processSelectArmyDelegate;

        myArmyCtrlManager = GetComponent <MyArmyCtrlManager>();
        mapPointDto       = new MapPointDto();
        socketMsg         = new SocketMsg();
    }
Ejemplo n.º 3
0
    // 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();
    }
Ejemplo n.º 4
0
        /// <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);

                //
            }
                );
        }
Ejemplo n.º 5
0
        /// <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);
            }
                );
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 处理设置其他人兵种
 /// </summary>
 /// <param name="mapPointDto"></param>
 private void processMapSetArmySbod(MapPointDto mapPointDto)
 {
     Dispatch(AreoCode.MAP, MapEvent.SET_OTHER_ARMY, mapPointDto);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 处理修养广播
 /// </summary>
 /// <param name="mapPointDto"></param>
 private void processRestSBOD(MapPointDto mapPointDto)
 {
     Dispatch(AreoCode.ARMY, ArmyEvent.OTHER_USE_REST, mapPointDto);
 }
Ejemplo n.º 8
0
    /// <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);
            }
        }
    }