Ejemplo n.º 1
0
        public ErrorCode OnGc2BsRequestFrameActions(NetSessionBase session, Google.Protobuf.IMessage message)
        {
            BSUser user = BS.instance.userMgr.GetUser(session.id);

            if (user != null)
            {
                Protos.GC2BS_RequestFrameActions    request = (Protos.GC2BS_RequestFrameActions)message;
                Protos.BS2GC_RequestFrameActionsRet ret     = ProtoCreator.R_GC2BS_RequestFrameActions(request.Opts.Pid);
                BS.instance.battleMgr.HandleRequestFrameActions(user.battle, request.From, request.To, ret);
                BS.instance.netSessionMgr.Send(user.gcSID, ret);
            }
            return(ErrorCode.Success);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取指定范围内的帧行为集合
        /// </summary>
        /// <param name="from">开始帧数(包括该帧)</param>
        /// <param name="to">结束帧数, -1表示最新帧数</param>
        /// <param name="ret">需要填充的消息</param>
        internal void FillHistoryToMessage(int from, int to, Protos.BS2GC_RequestFrameActionsRet ret)
        {
            from = from < 0 ? 0 : from;
            to   = to < 0 ? this._battle.frame : (to > this._battle.frame ? this._battle.frame : to);
            int         fromIndex = from / this._battle.keyframeStep;
            int         toIndex   = to / this._battle.keyframeStep;
            IList <int> keys      = this._histroy.Keys;
            IList <Google.Protobuf.ByteString> values = this._histroy.Values;

            for (int i = fromIndex; i <= toIndex; i++)
            {
                ret.Frames.Add(keys[i]);
                ret.Actions.Add(values[i]);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 处理玩家请求帧行为的历史数据
 /// </summary>
 /// <param name="from">起始帧</param>
 /// <param name="to">结束帧</param>
 /// <param name="ret">需要填充的消息</param>
 internal void HandleRequestFrameActions(int from, int to, Protos.BS2GC_RequestFrameActionsRet ret) =>
 this._frameActionMgr.FillHistoryToMessage(from, to, ret);
Ejemplo n.º 4
0
 /// <summary>
 /// 处理玩家请求帧行为的历史数据
 /// </summary>
 /// <param name="battle">战场</param>
 /// <param name="from">起始帧</param>
 /// <param name="to">结束帧</param>
 /// <param name="ret">需要填充的消息</param>
 internal void HandleRequestFrameActions(Battle battle, int from, int to, Protos.BS2GC_RequestFrameActionsRet ret) =>
 battle.HandleRequestFrameActions(@from, to, ret);