Exemple #1
0
        void Update()
        {
            if (controllerMode == ControllerMode.SELF)
            {
                if (first)
                {
                    first = false;
                    RandomWeapon();
                }

                if (soldier.IsFreeze())
                {
                    RobotStop();
                    soldier.UpdateOperation(action);
                    UnLockAnemey();
                    if (reportTransform.CheckAndRun())
                    {
                        UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform());
                    }
                    return;
                }

                if (robotFindRoad.CheckAndRun())
                {
                    //EventMgr.Instance.EventTrigger(EventName.FIND_ROAD, soldier.GetUserID());
                }

                if (robotLostGoal.CheckAndRun())
                {
                    UnLockAnemey();
                }

                EventMgr.Instance.EventTrigger(EventName.NEUTRAL_ROBOT_CHOOSE_GOAL, soldier.GetUserID());

                CalculateMove();

                if (!soldier.Death() && attackCD.CheckAndRun())
                {
                    AttackCheck();
                }

                if (reportTransform.CheckAndRun())
                {
                    UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform());
                }

                if (reportActions.CheckAndRun())
                {
                    ReportActions();
                }
                soldier.UpdateOperation(action);
            }
            else if (controllerMode == ControllerMode.NETWORK)
            {
                if (queryTransform.CheckAndRun())
                {
                    UserSynchronizationRouter.QueryUsersTransform(soldier.GetUserID());
                }
            }
        }
Exemple #2
0
 private void ReportActionCallback(Message msg)
 {
     UserSynchronizationRouter.ReportActionResponse res = UserSynchronizationRouter.ReportActionRequestCallback(msg);
     if (res.ret == 0)
     {
     }
 }
Exemple #3
0
 private void UpdateTransformCallback(Message msg)
 {
     UserSynchronizationRouter.QueryUserTransformResponse res = UserSynchronizationRouter.QueryUsersTransformCallback(msg);
     if (res.ret == 0 && res.user_id == soldier.GetUserID())
     {
         soldier.SyncTransform(res.position, res.rotation);
     }
 }
Exemple #4
0
        private void ReportActions()
        {
            int nowFrame = FrameSyncMgr.Instance.GetFrame();

            if (lastReportFrame != nowFrame)
            {
                lastReportFrame = nowFrame;
                UserSynchronizationRouter.ReportActionRequestCall(soldier.GetUserID(), action.ToNetworkString(), nowFrame);
            }
        }
Exemple #5
0
        void Update()
        {
            if (queryTransform.CheckAndRun())
            {
                UserSynchronizationRouter.QueryUsersTransform(soldier.GetUserID());
            }

            if (checkPlayerOut.CheckAndRun())
            {
                RoomOptRouter.QueryUserBelongRoom(soldier.GetUserID());
            }
        }
 private void QueryActionCallback(Message msg)
 {
     UserSynchronizationRouter.QueryActionResponse res = UserSynchronizationRouter.QueryActionRequestCallback(msg);
     if (res.ret == 0)
     {
         string [] actions = res.action.Split('#');
         for (int i = 0; i < actions.Length; i++)
         {
             string[] action = actions[i].Split('|');
             ParseAction(action);
         }
         FrameSyncMgr.Instance.SetFrame(res.frame);
     }
 }
Exemple #7
0
 void Update()
 {
     if (start && heartBeat.CheckAndRun())
     {
         int user_id = 0;
         try
         {
             user_id = (int)MemeryCacheMgr.Instance.Get(DTSKeys.USER_ID);
         }
         catch (Exception ex)
         {
             Debug.Log("userID is not exist. err: " + ex.ToString());
             user_id = 0;
             return;
         }
         UserSynchronizationRouter.HeartBeatRequestCall(user_id, 1, NetworkFrequency.HEART_BEAT);
     }
 }
        void Update()
        {
            if (!ready)
            {
                return;
            }

            if (checkJoin.CheckAndRun())
            {
                // 周期性查询玩家加入,请求成功会回调 CheckUserJoinCallback
                RoomOptRouter.QueryRoomUsers(roomID);
            }

            if (updateAction.CheckAndRun())
            {
                // 更新所有用户操作 回调 QueryActionCallback
                UserSynchronizationRouter.QueryActionRequestCall(userID, FrameSyncMgr.Instance.GetFrame());
            }
        }
Exemple #9
0
        void Update()
        {
            soldier.SetSpeeds(speeds);  // 调手感用,编辑器调试时能让速度直接改变
            action.Init();

            if (OperationMode.Instance.IsLock())
            {
                if (reportTransform.CheckAndRun())
                {
                    UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform());
                }
                return;
            }

            if (soldier.IsFreeze())
            {
                EventMgr.Instance.EventTrigger(EventName.MAIN_PLAYER_ACTION, action);
                if (reportTransform.CheckAndRun())
                {
                    UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform());
                }
                return;
            }

            WeaponChangeAction();

            if (Input.GetMouseButton(0))
            {
                action.Add(EPlayerAction.SHOOT);
            }
            if (Input.GetMouseButton(1))
            {
                action.Add(EPlayerAction.SHOOT_BURST);
            }

            if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                action.Add(EPlayerAction.SHOOT_LINE);
            }

            if (Input.GetKey(KeyCode.R))
            {
                action.Add(EPlayerAction.RELOAD);
            }

            if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
            {
                action.Add(EPlayerAction.BEGIN_RUN);
            }
            else
            {
                action.Add(EPlayerAction.END_RUN);
            }

            if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
            {
                action.Add(EPlayerAction.BEGIN_CROUCH);
            }
            else
            {
                action.Add(EPlayerAction.END_CROUCH);
            }

            if (Input.GetKey(KeyCode.Space))
            {
                action.Add(EPlayerAction.DUMP);
            }

            float h      = Input.GetAxis("Horizontal");
            float v      = Input.GetAxis("Vertical");
            float mouseX = Input.GetAxis("Mouse X");
            float mouseY = Input.GetAxis("Mouse Y");

            action.SetMove(h, v);
            action.SetMouse(mouseX, mouseY);

            // 在武器箱面前,按了E,换武器
            if (MemeryCacheMgr.Instance.Get(UICacheKeys.BULLET_BOX_WARN_MESSAGE) != null && Input.GetKeyDown(KeyCode.E))
            {
                if (MemeryCacheMgr.Instance.Get(UICacheKeys.WEAPON_BOX) is WeaponBoxBase weaponBox)
                {
                    soldier.SetWeapon(weaponBox.CreatorWeapon(), weaponBox.GetWeaponBagPos());
                    GameMgrRouter.NewWeaponRequestCall((int)weaponBox.GetWeaponTypeID(), soldier.GetUserID(), (int)weaponBox.GetWeaponBagPos());
                    weaponBox.Destory();
                }
            }

            // 触发直接影响角色行为。不等服务端校验完,体验好一点。
            EventMgr.Instance.EventTrigger(EventName.MAIN_PLAYER_ACTION, action);

            if (reportTransform.CheckAndRun())
            {
                UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform());
            }

            if (reportActions.CheckAndRun())
            {
                ReportActions();
            }
        }