/// <summary> /// 读取字节流(完整版) /// </summary> protected override void toReadBytesFull(BytesReadStream stream) { base.toReadBytesFull(stream); stream.startReadObj(); BaseData dataT = stream.readDataFullNotNull(); if (dataT != null) { if (dataT is InfoLogData) { this.data = (InfoLogData)dataT; } else { this.data = new InfoLogData(); if (!(dataT.GetType().IsAssignableFrom(typeof(InfoLogData)))) { stream.throwTypeReadError(typeof(InfoLogData), dataT.GetType()); } this.data.shadowCopy(dataT); } } else { this.data = null; } stream.endReadObj(); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is InfoLogData)) { return; } InfoLogData mData = (InfoLogData)data; this.id = mData.id; this.args = mData.args; this.logTime = mData.logTime; }
/// <summary> /// 收到服务器添加信息码 /// </summary> public void onAddInfoLog(InfoLogData data) { SQueue <InfoLogData> queue; (queue = _d.logQueue).offer(data); if (queue.size() > Global.infoLogKeepNum) { queue.poll(); } me.dispatch(GameEventType.RefreshInfoLog, data); }
public void onAddInfoLog(InfoLogData data) { SQueue <InfoLogData> queue; (queue = _d.logQueue).offer(data); if (queue.size() > _config.infoLogKeepNum) { queue.poll(); } evt.groupID = groupID; me.dispatch(GameEventType.RoleGroupRefreshInfoLog, evt); }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { InfoLogData mData = (InfoLogData)data; if (this.id != mData.id) { return(false); } if (mData.args != null) { if (this.args == null) { return(false); } if (this.args.Length != mData.args.Length) { return(false); } string[] argsT = this.args; string[] argsR = mData.args; int argsLen = argsT.Length; for (int argsI = 0; argsI < argsLen; ++argsI) { string argsU = argsT[argsI]; string argsV = argsR[argsI]; if (argsU != argsV) { return(false); } } } else { if (this.args != null) { return(false); } } if (this.logTime != mData.logTime) { return(false); } return(true); }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is InfoLogData)) { return; } InfoLogData mData = (InfoLogData)data; this.id = mData.id; if (mData.args != null) { string[] argsR = mData.args; int argsLen = argsR.Length; if (this.args == null || this.args.Length != argsLen) { this.args = new string[argsLen]; } string[] argsT = this.args; for (int argsI = 0; argsI < argsLen; ++argsI) { string argsV = argsR[argsI]; string argsU; argsU = argsV; argsT[argsI] = argsU; } } else { this.args = null; } this.logTime = mData.logTime; }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { SystemPartData mData = (SystemPartData)data; if (mData.version != null) { if (this.version == null) { return(false); } if (!this.version.dataEquals(mData.version)) { return(false); } } else { if (this.version != null) { return(false); } } if (this.serverTime != mData.serverTime) { return(false); } if (this.isBlock != mData.isBlock) { return(false); } if (this.flowStep != mData.flowStep) { return(false); } if (mData.keepSave != null) { if (this.keepSave == null) { return(false); } if (!this.keepSave.dataEquals(mData.keepSave)) { return(false); } } else { if (this.keepSave != null) { return(false); } } if (mData.clientRandomSeeds != null) { if (this.clientRandomSeeds == null) { return(false); } if (this.clientRandomSeeds.Length != mData.clientRandomSeeds.Length) { return(false); } int[] clientRandomSeedsT = this.clientRandomSeeds; int[] clientRandomSeedsR = mData.clientRandomSeeds; int clientRandomSeedsLen = clientRandomSeedsT.Length; for (int clientRandomSeedsI = 0; clientRandomSeedsI < clientRandomSeedsLen; ++clientRandomSeedsI) { int clientRandomSeedsU = clientRandomSeedsT[clientRandomSeedsI]; int clientRandomSeedsV = clientRandomSeedsR[clientRandomSeedsI]; if (clientRandomSeedsU != clientRandomSeedsV) { return(false); } } } else { if (this.clientRandomSeeds != null) { return(false); } } if (this.clientRandomSeedIndex != mData.clientRandomSeedIndex) { return(false); } if (this.clientOfflineWorkReceiveIndex != mData.clientOfflineWorkReceiveIndex) { return(false); } if (mData.gmCommandSet != null) { if (this.gmCommandSet == null) { return(false); } if (this.gmCommandSet.size() != mData.gmCommandSet.size()) { return(false); } SSet <string> gmCommandSetR = mData.gmCommandSet; if (!this.gmCommandSet.isEmpty()) { string[] gmCommandSetVKeys = this.gmCommandSet.getKeys(); for (int gmCommandSetVI = gmCommandSetVKeys.Length - 1; gmCommandSetVI >= 0; --gmCommandSetVI) { if (gmCommandSetVKeys[gmCommandSetVI] != null) { string gmCommandSetV = gmCommandSetVKeys[gmCommandSetVI]; if (!gmCommandSetR.contains(gmCommandSetV)) { return(false); } } } } } else { if (this.gmCommandSet != null) { return(false); } } if (this.gmType != mData.gmType) { return(false); } if (this.serverBornCode != mData.serverBornCode) { return(false); } if (this.serverStartTime != mData.serverStartTime) { return(false); } if (mData.logQueue != null) { if (this.logQueue == null) { return(false); } if (this.logQueue.size() != mData.logQueue.size()) { return(false); } SQueue <InfoLogData> logQueueT = this.logQueue; SQueue <InfoLogData> logQueueR = mData.logQueue; int logQueueLen = logQueueT.size(); for (int logQueueI = 0; logQueueI < logQueueLen; ++logQueueI) { InfoLogData logQueueU = logQueueT.get(logQueueI); InfoLogData logQueueV = logQueueR.get(logQueueI); if (logQueueV != null) { if (logQueueU == null) { return(false); } if (!logQueueU.dataEquals(logQueueV)) { return(false); } } else { if (logQueueU != null) { return(false); } } } } else { if (this.logQueue != null) { return(false); } } if (this.nextDailyTime != mData.nextDailyTime) { return(false); } if (mData.createDate != null) { if (this.createDate == null) { return(false); } if (!this.createDate.dataEquals(mData.createDate)) { return(false); } } else { if (this.createDate != null) { return(false); } } if (this.clientRandomSeedKey != mData.clientRandomSeedKey) { return(false); } return(true); }
/// <summary> /// 写入字节流(完整版) /// </summary> protected override void toWriteBytesFull(BytesWriteStream stream) { stream.startWriteObj(); if (this.version != null) { stream.writeDataFullNotNull(this.version); } else { nullObjError("version"); } stream.writeLong(this.serverTime); stream.writeBoolean(this.isBlock); stream.writeInt(this.flowStep); if (this.keepSave != null) { this.keepSave.writeBytesFull(stream); } else { nullObjError("keepSave"); } if (this.clientRandomSeeds != null) { stream.writeBoolean(true); int[] clientRandomSeedsT = this.clientRandomSeeds; stream.writeLen(clientRandomSeedsT.Length); for (int clientRandomSeedsVI = 0, clientRandomSeedsVLen = clientRandomSeedsT.Length; clientRandomSeedsVI < clientRandomSeedsVLen; ++clientRandomSeedsVI) { int clientRandomSeedsV = clientRandomSeedsT[clientRandomSeedsVI]; stream.writeInt(clientRandomSeedsV); } } else { stream.writeBoolean(false); } stream.writeInt(this.clientRandomSeedIndex); stream.writeInt(this.clientOfflineWorkReceiveIndex); if (this.gmCommandSet != null) { stream.writeBoolean(true); stream.writeLen(this.gmCommandSet.size()); if (!this.gmCommandSet.isEmpty()) { string[] gmCommandSetVKeys = this.gmCommandSet.getKeys(); for (int gmCommandSetVI = gmCommandSetVKeys.Length - 1; gmCommandSetVI >= 0; --gmCommandSetVI) { if (gmCommandSetVKeys[gmCommandSetVI] != null) { string gmCommandSetV = gmCommandSetVKeys[gmCommandSetVI]; stream.writeUTF(gmCommandSetV); } } } } else { stream.writeBoolean(false); } stream.writeInt(this.gmType); stream.writeInt(this.serverBornCode); stream.writeLong(this.serverStartTime); if (this.logQueue != null) { stream.writeLen(this.logQueue.size()); if (!this.logQueue.isEmpty()) { InfoLogData[] logQueueVValues = this.logQueue.getValues(); int logQueueVMark = this.logQueue.getMark(); int logQueueVStart = this.logQueue.getStart(); for (int logQueueVI = 0, logQueueVLen = this.logQueue.length(); logQueueVI < logQueueVLen; ++logQueueVI) { InfoLogData logQueueV = logQueueVValues[(logQueueVI + logQueueVStart) & logQueueVMark]; if (logQueueV != null) { stream.writeDataFullNotNull(logQueueV); } else { nullObjError("logQueueV"); } } } } else { nullObjError("logQueue"); } stream.writeLong(this.nextDailyTime); if (this.createDate != null) { this.createDate.writeBytesFull(stream); } else { nullObjError("createDate"); } stream.writeInt(this.clientRandomSeedKey); stream.endWriteObj(); }
/// <summary> /// 读取字节流(完整版) /// </summary> protected override void toReadBytesFull(BytesReadStream stream) { stream.startReadObj(); BaseData versionT = stream.readDataFullNotNull(); if (versionT != null) { if (versionT is SaveVersionData) { this.version = (SaveVersionData)versionT; } else { this.version = new SaveVersionData(); if (!(versionT.GetType().IsAssignableFrom(typeof(SaveVersionData)))) { stream.throwTypeReadError(typeof(SaveVersionData), versionT.GetType()); } this.version.shadowCopy(versionT); } } else { this.version = null; } this.serverTime = stream.readLong(); this.isBlock = stream.readBoolean(); this.flowStep = stream.readInt(); this.keepSave = (KeepSaveData)stream.createData(KeepSaveData.dataID); this.keepSave.readBytesFull(stream); if (stream.readBoolean()) { int clientRandomSeedsLen = stream.readLen(); if (this.clientRandomSeeds == null || this.clientRandomSeeds.Length != clientRandomSeedsLen) { this.clientRandomSeeds = new int[clientRandomSeedsLen]; } int[] clientRandomSeedsT = this.clientRandomSeeds; for (int clientRandomSeedsI = 0; clientRandomSeedsI < clientRandomSeedsLen; ++clientRandomSeedsI) { int clientRandomSeedsV; clientRandomSeedsV = stream.readInt(); clientRandomSeedsT[clientRandomSeedsI] = clientRandomSeedsV; } } else { this.clientRandomSeeds = null; } this.clientRandomSeedIndex = stream.readInt(); this.clientOfflineWorkReceiveIndex = stream.readInt(); if (stream.readBoolean()) { int gmCommandSetLen = stream.readLen(); if (this.gmCommandSet != null) { this.gmCommandSet.clear(); this.gmCommandSet.ensureCapacity(gmCommandSetLen); } else { this.gmCommandSet = new SSet <string>(); } SSet <string> gmCommandSetT = this.gmCommandSet; for (int gmCommandSetI = gmCommandSetLen - 1; gmCommandSetI >= 0; --gmCommandSetI) { string gmCommandSetV; gmCommandSetV = stream.readUTF(); gmCommandSetT.add(gmCommandSetV); } } else { this.gmCommandSet = null; } this.gmType = stream.readInt(); this.serverBornCode = stream.readInt(); this.serverStartTime = stream.readLong(); int logQueueLen = stream.readLen(); if (this.logQueue != null) { this.logQueue.clear(); this.logQueue.ensureCapacity(logQueueLen); } else { this.logQueue = new SQueue <InfoLogData>(); } SQueue <InfoLogData> logQueueT = this.logQueue; for (int logQueueI = logQueueLen - 1; logQueueI >= 0; --logQueueI) { InfoLogData logQueueV; BaseData logQueueVT = stream.readDataFullNotNull(); if (logQueueVT != null) { if (logQueueVT is InfoLogData) { logQueueV = (InfoLogData)logQueueVT; } else { logQueueV = new InfoLogData(); if (!(logQueueVT.GetType().IsAssignableFrom(typeof(InfoLogData)))) { stream.throwTypeReadError(typeof(InfoLogData), logQueueVT.GetType()); } logQueueV.shadowCopy(logQueueVT); } } else { logQueueV = null; } logQueueT.offer(logQueueV); } this.nextDailyTime = stream.readLong(); this.createDate = (DateData)stream.createData(DateData.dataID); this.createDate.readBytesFull(stream); this.clientRandomSeedKey = stream.readInt(); stream.endReadObj(); }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is SystemPartData)) { return; } SystemPartData mData = (SystemPartData)data; if (mData.version != null) { this.version = (SaveVersionData)mData.version.clone(); } else { this.version = null; nullObjError("version"); } this.serverTime = mData.serverTime; this.isBlock = mData.isBlock; this.flowStep = mData.flowStep; if (mData.keepSave != null) { this.keepSave = (KeepSaveData)BytesControl.createData(KeepSaveData.dataID); this.keepSave.copy(mData.keepSave); } else { this.keepSave = null; nullObjError("keepSave"); } if (mData.clientRandomSeeds != null) { int[] clientRandomSeedsR = mData.clientRandomSeeds; int clientRandomSeedsLen = clientRandomSeedsR.Length; if (this.clientRandomSeeds == null || this.clientRandomSeeds.Length != clientRandomSeedsLen) { this.clientRandomSeeds = new int[clientRandomSeedsLen]; } BytesControl.arrayCopy(mData.clientRandomSeeds, this.clientRandomSeeds, clientRandomSeedsLen); } else { this.clientRandomSeeds = null; } this.clientRandomSeedIndex = mData.clientRandomSeedIndex; this.clientOfflineWorkReceiveIndex = mData.clientOfflineWorkReceiveIndex; if (mData.gmCommandSet != null) { if (this.gmCommandSet != null) { this.gmCommandSet.clear(); this.gmCommandSet.ensureCapacity(mData.gmCommandSet.size()); } else { this.gmCommandSet = new SSet <string>(); } SSet <string> gmCommandSetT = this.gmCommandSet; if (!mData.gmCommandSet.isEmpty()) { string[] gmCommandSetVKeys = mData.gmCommandSet.getKeys(); for (int gmCommandSetVI = gmCommandSetVKeys.Length - 1; gmCommandSetVI >= 0; --gmCommandSetVI) { if (gmCommandSetVKeys[gmCommandSetVI] != null) { string gmCommandSetV = gmCommandSetVKeys[gmCommandSetVI]; string gmCommandSetU; gmCommandSetU = gmCommandSetV; gmCommandSetT.add(gmCommandSetU); } } } } else { this.gmCommandSet = null; } this.gmType = mData.gmType; this.serverBornCode = mData.serverBornCode; this.serverStartTime = mData.serverStartTime; if (mData.logQueue != null) { if (this.logQueue != null) { this.logQueue.clear(); this.logQueue.ensureCapacity(mData.logQueue.size()); } else { this.logQueue = new SQueue <InfoLogData>(); } SQueue <InfoLogData> logQueueT = this.logQueue; if (!mData.logQueue.isEmpty()) { InfoLogData[] logQueueVValues = mData.logQueue.getValues(); int logQueueVMark = mData.logQueue.getMark(); int logQueueVStart = mData.logQueue.getStart(); for (int logQueueVI = 0, logQueueVLen = mData.logQueue.length(); logQueueVI < logQueueVLen; ++logQueueVI) { InfoLogData logQueueV = logQueueVValues[(logQueueVI + logQueueVStart) & logQueueVMark]; InfoLogData logQueueU; if (logQueueV != null) { logQueueU = (InfoLogData)logQueueV.clone(); } else { logQueueU = null; nullObjError("logQueueU"); } logQueueT.offer(logQueueU); } } } else { this.logQueue = null; nullObjError("logQueue"); } this.nextDailyTime = mData.nextDailyTime; if (mData.createDate != null) { this.createDate = (DateData)BytesControl.createData(DateData.dataID); this.createDate.copy(mData.createDate); } else { this.createDate = null; nullObjError("createDate"); } this.clientRandomSeedKey = mData.clientRandomSeedKey; }
/// <summary> /// 转文本输出 /// </summary> protected override void toWriteDataString(DataWriter writer) { writer.writeTabs(); writer.sb.Append("version"); writer.sb.Append(':'); if (this.version != null) { this.version.writeDataString(writer); } else { writer.sb.Append("SaveVersionData=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("serverTime"); writer.sb.Append(':'); writer.sb.Append(this.serverTime); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("isBlock"); writer.sb.Append(':'); writer.sb.Append(this.isBlock); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("flowStep"); writer.sb.Append(':'); writer.sb.Append(this.flowStep); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("keepSave"); writer.sb.Append(':'); if (this.keepSave != null) { this.keepSave.writeDataString(writer); } else { writer.sb.Append("KeepSaveData=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("clientRandomSeeds"); writer.sb.Append(':'); writer.sb.Append("Array<int>"); if (this.clientRandomSeeds != null) { int[] clientRandomSeedsT = this.clientRandomSeeds; int clientRandomSeedsLen = clientRandomSeedsT.Length; writer.sb.Append('('); writer.sb.Append(clientRandomSeedsLen); writer.sb.Append(')'); writer.writeEnter(); writer.writeLeftBrace(); for (int clientRandomSeedsI = 0; clientRandomSeedsI < clientRandomSeedsLen; ++clientRandomSeedsI) { int clientRandomSeedsV = clientRandomSeedsT[clientRandomSeedsI]; writer.writeTabs(); writer.sb.Append(clientRandomSeedsI); writer.sb.Append(':'); writer.sb.Append(clientRandomSeedsV); writer.writeEnter(); } writer.writeRightBrace(); } else { writer.sb.Append("=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("clientRandomSeedIndex"); writer.sb.Append(':'); writer.sb.Append(this.clientRandomSeedIndex); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("clientOfflineWorkReceiveIndex"); writer.sb.Append(':'); writer.sb.Append(this.clientOfflineWorkReceiveIndex); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("gmCommandSet"); writer.sb.Append(':'); writer.sb.Append("Set<string>"); if (this.gmCommandSet != null) { writer.sb.Append('('); writer.sb.Append(this.gmCommandSet.size()); writer.sb.Append(')'); writer.writeEnter(); writer.writeLeftBrace(); if (!this.gmCommandSet.isEmpty()) { string[] gmCommandSetVKeys = this.gmCommandSet.getKeys(); for (int gmCommandSetVI = gmCommandSetVKeys.Length - 1; gmCommandSetVI >= 0; --gmCommandSetVI) { if (gmCommandSetVKeys[gmCommandSetVI] != null) { string gmCommandSetV = gmCommandSetVKeys[gmCommandSetVI]; writer.writeTabs(); writer.sb.Append(gmCommandSetV); writer.writeEnter(); } } } writer.writeRightBrace(); } else { writer.sb.Append("=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("gmType"); writer.sb.Append(':'); writer.sb.Append(this.gmType); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("serverBornCode"); writer.sb.Append(':'); writer.sb.Append(this.serverBornCode); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("serverStartTime"); writer.sb.Append(':'); writer.sb.Append(this.serverStartTime); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("logQueue"); writer.sb.Append(':'); writer.sb.Append("Queue<InfoLogData>"); if (this.logQueue != null) { SQueue <InfoLogData> logQueueT = this.logQueue; int logQueueLen = logQueueT.size(); writer.sb.Append('('); writer.sb.Append(logQueueLen); writer.sb.Append(')'); writer.writeEnter(); writer.writeLeftBrace(); for (int logQueueI = 0; logQueueI < logQueueLen; ++logQueueI) { InfoLogData logQueueV = logQueueT.get(logQueueI); writer.writeTabs(); writer.sb.Append(logQueueI); writer.sb.Append(':'); if (logQueueV != null) { logQueueV.writeDataString(writer); } else { writer.sb.Append("InfoLogData=null"); } writer.writeEnter(); } writer.writeRightBrace(); } else { writer.sb.Append("=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("nextDailyTime"); writer.sb.Append(':'); writer.sb.Append(this.nextDailyTime); writer.writeEnter(); writer.writeTabs(); writer.sb.Append("createDate"); writer.sb.Append(':'); if (this.createDate != null) { this.createDate.writeDataString(writer); } else { writer.sb.Append("DateData=null"); } writer.writeEnter(); writer.writeTabs(); writer.sb.Append("clientRandomSeedKey"); writer.sb.Append(':'); writer.sb.Append(this.clientRandomSeedKey); writer.writeEnter(); }
/// <summary> /// 读取字节流(简版) /// </summary> protected override void toReadBytesSimple(BytesReadStream stream) { base.toReadBytesSimple(stream); this.data = (InfoLogData)stream.readDataSimpleNotNull(); }
/// <summary> /// 回池 /// </summary> protected override void toRelease(DataPool pool) { base.toRelease(pool); this.data = null; }