/// <summary> /// 读取字节流(完整版) /// </summary> protected override void toReadBytesFull(BytesReadStream stream) { base.toReadBytesFull(stream); stream.startReadObj(); BaseData dataT = stream.readDataFullNotNull(); if (dataT != null) { if (dataT is PlayerRoleGroupExData) { this.data = (PlayerRoleGroupExData)dataT; } else { this.data = new PlayerRoleGroupExData(); if (!(dataT.GetType().IsAssignableFrom(typeof(PlayerRoleGroupExData)))) { stream.throwTypeReadError(typeof(PlayerRoleGroupExData), dataT.GetType()); } this.data.shadowCopy(dataT); } } else { this.data = null; } stream.endReadObj(); }
/** 玩家群额外 */ public void onGetRoleGroupEx(PlayerRoleGroupExData data) { readFromExData(data); evt.groupID = groupID; me.dispatch(GameEventType.RefreshRoleGroupEx, evt); }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is PlayerRoleGroupExData)) { return; } PlayerRoleGroupExData mData = (PlayerRoleGroupExData)data; this.groupID = mData.groupID; this.exp = mData.exp; if (mData.members != null) { if (this.members != null) { this.members.clear(); this.members.ensureCapacity(mData.members.size()); } else { this.members = new LongObjectMap <PlayerRoleGroupMemberData>(mData.members.size()); } LongObjectMap <PlayerRoleGroupMemberData> membersT = this.members; if (!mData.members.isEmpty()) { PlayerRoleGroupMemberData[] membersVValues = mData.members.getValues(); for (int membersVI = membersVValues.Length - 1; membersVI >= 0; --membersVI) { PlayerRoleGroupMemberData membersV = membersVValues[membersVI]; if (membersV != null) { PlayerRoleGroupMemberData membersU; if (membersV != null) { membersU = (PlayerRoleGroupMemberData)membersV.clone(); } else { membersU = null; nullObjError("membersU"); } membersT.put(membersU.playerID, membersU); } } } } else { this.members = null; nullObjError("members"); } }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is PlayerRoleGroupExData)) { return; } PlayerRoleGroupExData mData = (PlayerRoleGroupExData)data; this.groupID = mData.groupID; this.exp = mData.exp; this.members = mData.members; }
/** 从附加数据读取 */ protected void readFromExData(PlayerRoleGroupExData data) { _d.exp = data.exp; _d.members = data.members; _selfData = _d.members.get(me.role.playerID); PlayerRoleGroupMemberData[] values; PlayerRoleGroupMemberData v; for (int i = (values = _d.members.getValues()).Length - 1; i >= 0; --i) { if ((v = values[i]) != null) { if (v.title == RoleGroupTitleType.Leader) { _leader = v; } } } }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { PlayerRoleGroupExData mData = (PlayerRoleGroupExData)data; if (this.groupID != mData.groupID) { return(false); } if (this.exp != mData.exp) { return(false); } if (mData.members != null) { if (this.members == null) { return(false); } if (this.members.size() != mData.members.size()) { return(false); } LongObjectMap <PlayerRoleGroupMemberData> membersR = mData.members; if (!this.members.isEmpty()) { long membersKFreeValue = this.members.getFreeValue(); long[] membersKKeys = this.members.getKeys(); PlayerRoleGroupMemberData[] membersVValues = this.members.getValues(); for (int membersKI = membersKKeys.Length - 1; membersKI >= 0; --membersKI) { long membersK = membersKKeys[membersKI]; if (membersK != membersKFreeValue) { PlayerRoleGroupMemberData membersV = membersVValues[membersKI]; PlayerRoleGroupMemberData membersU = membersR.get(membersK); if (membersU != null) { if (membersV == null) { return(false); } if (!membersV.dataEquals(membersU)) { return(false); } } else { if (membersV != null) { return(false); } } } } } } else { if (this.members != null) { return(false); } } return(true); }
/// <summary> /// 读取字节流(简版) /// </summary> protected override void toReadBytesSimple(BytesReadStream stream) { base.toReadBytesSimple(stream); this.data = (PlayerRoleGroupExData)stream.readDataSimpleNotNull(); }
/// <summary> /// 回池 /// </summary> protected override void toRelease(DataPool pool) { base.toRelease(pool); this.data = null; }