示例#1
0
        /// <summary>
        /// 收集下一帧操作并发送到服务器
        /// </summary>
        private void CollectNextFrameOpts()
        {
            var nfo = new NextFrameOpts
            {
                frameid = this.sync_frameid + 1,
                zoneid  = NetInfo.zoneId,
                roomid  = NetInfo.roomid,
                seatid  = NetInfo.seatid,
            };

            #region 采集操作
            //遥感
            var stick = new OptionEvent
            {
                seatid = NetInfo.seatid,
                optype = (int)OptType.JoyStick,
                x      = (int)(this._joystick.TouchDir.x * (1 << 16)),
                y      = (int)(this._joystick.TouchDir.y * (1 << 16)),
            };

            nfo.opts.Add(stick);

            //攻击

            //技能


            #endregion

            LogicServiceProxy.Instance.SendNextFrameOpts(nfo);
        }
    private void capture_player_opts()
    {
        NextFrameOpts next_frame     = new NextFrameOpts();
        ugame         ugame_instance = ugame.Instance;

        next_frame.next_frameid = this.sync_frameid + 1;
        next_frame.matchid      = ugame_instance.matchid;
        next_frame.zid          = ugame_instance.zid;
        next_frame.seatid       = ugame_instance.self_seatid;

        //攻击
        if (this.ui_attack.attack_type != (int)OptType.Invalid)   // 有攻击按钮按下了;
        {
            OptionEvent opt_attack = new OptionEvent();
            opt_attack.seatid   = ugame.Instance.self_seatid;
            opt_attack.opt_type = this.ui_attack.attack_type;
            next_frame.next_opts.Add(opt_attack);
        }
        else
        {
            // 摇杆
            OptionEvent opt_stick = new OptionEvent();
            opt_stick.seatid   = ugame.Instance.self_seatid;
            opt_stick.opt_type = (int)OptType.JoyStick;
            opt_stick.x        = (int)(this.stick.dir.x * (1 << 16)); // 16.16
            opt_stick.y        = (int)(this.stick.dir.y * (1 << 16)); // 16.16
            next_frame.next_opts.Add(opt_stick);
            // end
        }

        //发送给服务器
        logic_service_proxy.Instance.send_next_frame_opts(next_frame);
        //end
    }
示例#3
0
    private void CapturePlayerOpts()
    {
        NextFrameOpts nextFrameOpts = new NextFrameOpts();

        nextFrameOpts.frameid = this._syncFrameID + 1;
        nextFrameOpts.zid     = UGame.Instance.zid;
        nextFrameOpts.matchid = UGame.Instance.matchid;
        nextFrameOpts.seatid  = UGame.Instance.selfSeatid;

        if (this.uiAttack.attackType != (int)OptType.Invalid)
        {//有攻击按钮按下了
            //攻击操作收集
            OptionEvent optAttack = new OptionEvent();
            optAttack.seatid   = UGame.Instance.selfSeatid;
            optAttack.opt_type = this.uiAttack.attackType;
            nextFrameOpts.opts.Add(optAttack);
        }
        else
        {
            //摇杆操作收集
            OptionEvent optStick = new OptionEvent();
            optStick.seatid   = UGame.Instance.selfSeatid;
            optStick.opt_type = (int)OptType.JoyStick;
            optStick.x        = (int)(this.stick.TouchDir.x * (1 << 16)); //定点数
            optStick.y        = (int)(this.stick.TouchDir.y * (1 << 16)); //定点数
            nextFrameOpts.opts.Add(optStick);
        }



        //发送给服务器
        LogicServiceProxy.Instance.SendNextFrameOpts(nextFrameOpts);
    }
示例#4
0
    public static PacketDistributed CreatePacket(MessageID packetID)
    {
        PacketDistributed packet = null;

        switch (packetID)
        {
        case MessageID.GCErrorBack: { packet = new GCErrorBack(); } break;

        case MessageID.CGheartbeatClientSend: { packet = new CGheartbeatClientSend(); } break;

        case MessageID.GCheartbeatServerBack: { packet = new GCheartbeatServerBack(); } break;

        case MessageID.GCServerMsg: { packet = new GCServerMsg(); } break;

        case MessageID.OptionEvent: { packet = new OptionEvent(); } break;

        case MessageID.FrameOpts: { packet = new FrameOpts(); } break;

        case MessageID.LogicFrame: { packet = new LogicFrame(); } break;

        case MessageID.NextFrameOpts: { packet = new NextFrameOpts(); } break;

        case MessageID.GamePlayerInfo: { packet = new GamePlayerInfo(); } break;

        case MessageID.EnterGame: { packet = new EnterGame(); } break;
        }
        if (null != packet)
        {
            packet.packetID = packetID;
        }
        //netActionTime = DateTime.Now.ToFileTimeUtc();
        return(packet);
    }
示例#5
0
    //采集玩家的下一个操作帧
    void capture_player_opts()
    {
        NextFrameOpts next_frame = new NextFrameOpts();

        next_frame.frameid = this.sync_frameid + 1;
        next_frame.zid     = ugames.Instance.zid;
        next_frame.matchid = ugames.Instance.matchid;
        next_frame.seatid  = ugames.Instance.self_seatid;
        //遥杆
        OptionEvent opt_stick = new OptionEvent();

        opt_stick.seatid  = ugames.Instance.self_seatid;
        opt_stick.opttype = (int)OptType.JoyStick;
        //Debug.Log(this.stick.dir.y + " ---dirx--- " + this.stick.dir.x);
        opt_stick.x = (int)(this.stick.dir.x * (1 << 16));
        opt_stick.y = (int)(this.stick.dir.y * (1 << 16));
        //Debug.Log(opt_stick.y + " ---ed---- " + opt_stick.x);
        //opt_stick.x = (int)this.stick.dir.x;
        //opt_stick.y = (int)this.stick.dir.y;
        next_frame.opts.Add(opt_stick);
        //end

        //攻击
        //end

        //发送给服务器
        logic_service.Instance.send_next_frame_opts(next_frame);
        //end
    }
示例#6
0
    public void Initialize(StartEvent startEvent, RankEvent rankEvent, OptionEvent optionEvent)
    {
        Initialize();

        this._startEvent = startEvent;
        this._rankEvent = rankEvent;
        this._optionEvent = optionEvent;
    }
示例#7
0
 private void sync_last_joystic_event(OptionEvent opt)
 {
     this.stick_x            = opt.x;
     this.stick_y            = opt.y;
     this.transform.position = this.logic_position;
     this.do_joystick_event(game_zygote.LOGIC_FRAME_TIME_FLOAT);
     this.logic_position = this.transform.position;
 }
示例#8
0
 /// <summary>
 /// 根据上一帧逻辑位置,计算出这一帧到达时所在的位置(服务器同步位置)
 /// </summary>
 /// <param name="opt"></param>
 private void SyncLastJoystickEvent(OptionEvent opt)
 {
     //上一个逻辑位置--->deltaTime为服务器的逻辑帧间隔
     this._stickX            = opt.x;
     this._stickY            = opt.y;
     this.transform.position = this._logicPosition;
     DoJoystickEvent((float)GameZygote.LOGIC_FRAME_TIME / 1000.0f);
     this._logicPosition = this.transform.position;
 }
示例#9
0
 //英雄来处理我们的帧事件
 public void on_handler_frame_event(OptionEvent opt)
 {
     switch (opt.opttype)
     {
     case (int)OptType.JoyStick:
         this.handle_joystic_event(opt);
         break;
     }
 }
示例#10
0
 public void OnSyncLastLogicFrame(OptionEvent opt)
 {
     switch (opt.opt_type)
     {
     case (int)OptType.JoyStick:
         SyncLastJoystickEvent(opt);
         break;
     }
 }
示例#11
0
 private void handle_joystic_event(OptionEvent opt)
 {
     this.stick_x = opt.x;
     this.stick_y = opt.y;
     if (this.stick_x == 0 && this.stick_y == 0)
     {
         this.logic_state = CharacterState.idle;
     }
     else
     {
         this.logic_state = CharacterState.walk;
     }
 }
示例#12
0
 /// <summary>
 /// 用来更新本地动画与位置(非服务器同步位置)
 /// </summary>
 /// <param name="opt"></param>
 private void HandleJoyStickEvent(OptionEvent opt)
 {
     this._stickX = opt.x;
     this._stickY = opt.y;
     if (this._stickX == 0 && this._stickY == 0)
     {
         this._logicState = CharacterState.idle;
     }
     else
     {
         this._logicState = CharacterState.walk;
     }
 }
示例#13
0
    public void on_sync_last_logic_frame(OptionEvent opt)
    {
        OptType opt_type = (OptType)opt.opt_type;

        switch (opt_type)
        {
        case OptType.JoyStick:
            this.sync_last_joystic_event(opt);
            break;

        default:
            break;
        }
    }
 /// <summary>
 /// 同步之前收到的最后一帧的处理结果
 /// </summary>
 /// <param name="opt"></param>
 /// <exception cref="NotImplementedException"></exception>
 public void OnAsyncLastLogicFrame(OptionEvent opt)
 {
     switch ((OptType)opt.optype)
     {
     case OptType.JoyStick:
         this.stick_x = opt.x;
         this.stick_y = opt.y;
         var before = this.logicPosition;
         this.transform.position = this.logicPosition;
         DoJoystick(LogicConfig.LogicFrameTime / 1000f);
         this.logicPosition = this.transform.position;
         print("前进:" + (this.logicPosition - before).magnitude);
         break;
     }
 }
示例#15
0
    /// <summary>
    /// 角色处理帧事件
    /// </summary>
    public void OnHandlerFrameEvent(OptionEvent opt)
    {
        switch (opt.opt_type)
        {
        case (int)OptType.JoyStick:
            HandleJoyStickEvent(opt);
            break;

        case (int)OptType.Attack:
            DoAttack(opt);
            break;

        case (int)OptType.Skill1:
            DoSkill1(opt);
            break;
        }
    }
示例#16
0
    private void DoSkill1(OptionEvent opt)
    {
        float validR = GameConfig.NormalHeroLevelConfigs[this.level]
                       .Skill.ValidR;
        int value = GameConfig.NormalHeroLevelConfigs[this.level]
                    .Skill.Value;

        List <GameObject> targets = GameZygote.Instance.FindTargets(this
                                                                    .side, this.transform.position, validR);

        if (this._logicAttack.AttackAll(
                targets, value, 8, 11))
        {
            this._animState  = CharacterState.skill;
            this._logicState = CharacterState.skill;
            this._animation.CrossFade("skill");
        }
    }
        /// <summary>
        /// 更新当前帧逻辑
        /// </summary>
        /// <param name="opt"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void OnHandlerCurrentLogicFrame(OptionEvent opt)
        {
            switch ((OptType)opt.optype)
            {
            case OptType.JoyStick:
                this.stick_x = opt.x;
                this.stick_y = opt.y;

                if (this.stick_x == 0 && this.stick_y == 0)
                {
                    this.logicState = HeroState.Idle;
                }
                else
                {
                    this.logicState = HeroState.Walk;
                }

                break;
            }
        }
示例#18
0
    private void DoAttack(OptionEvent opt)
    {
        float validR = GameConfig.NormalHeroLevelConfigs[this.level]
                       .Attack.ValidR;
        int value = GameConfig.NormalHeroLevelConfigs[this.level]
                    .Attack.Value;
        GameObject target = GameZygote.Instance.FindHeroAttackTarget
                                (this.side, this.transform.position, validR);

        if (target)
        {
            this.transform.LookAt(target.transform);
        }
        if (this._logicAttack.AttackTo(
                target, value, 8, 11))
        {
            this._animState  = CharacterState.attack;
            this._logicState = CharacterState.attack;
            this._animation.CrossFade("attack");
        }
    }
示例#19
0
    public void on_handler_frame_event(OptionEvent opt)
    {
        OptType opt_type = (OptType)opt.opt_type;

        switch (opt_type)
        {
        case OptType.JoyStick:
            this.handle_joystic_event(opt);
            break;

        case OptType.Attack:
            this.do_attack();
            break;

        case OptType.Skill1:
            this.do_skill1();
            break;

        default:
            break;
        }
    }
 /// <summary>
 /// 跳帧
 /// </summary>
 /// <param name="opt"></param>
 public void OnJumpToNextFrame(OptionEvent opt)
 {
     OnAsyncLastLogicFrame(opt);
 }
示例#21
0
 private void JumpJoystickEvent(OptionEvent opt)
 {
     SyncLastJoystickEvent(opt);
 }