protected override void preExecute() { if ((roleGroup = me.func.getRoleGroupTool(funcID).getRoleGroup(groupID)) != null) { base.preExecute(); } }
/** 邀请入群 */ public void inviteRoleGroup(long groupID, long targetID) { if (!me.role.checkRoleConditions(_config.joinConditions, true)) { me.warnLog("邀请入群时,condition不满足"); return; } if (groupID > 0) { PlayerRoleGroup roleGroup = getRoleGroup(groupID); if (roleGroup == null) { me.warnLog("邀请入群时,找不到群", groupID); return; } if (roleGroup.isFull()) { me.warnLog("邀请入群时,人数已满", groupID); return; } if (!RoleGroupTitleType.canOperateApply(roleGroup.getSelfData().title)) { Ctrl.warnLog("邀请入群时,邀请者没有权限", groupID, roleGroup.getSelfData().title); return; } if (roleGroup.getMember(targetID) != null) { me.warnLog("邀请入群时,已在群中", groupID); return; } } else { if (!_config.canInviteCreate) { me.warnLog("邀请入群直接创建时,不支持直接邀请创建"); return; } if (_config.eachPlayerGroupNum != 1) { me.warnLog("邀请入群直接创建时,必须为单一群"); return; } if (isRoleGroupFull()) { me.warnLog("邀请入群直接创建时,已达到数目限制"); return; } } me.send(FuncInviteRoleGroupRequest.create(_funcID, groupID, targetID)); }
public override void dispose() { base.dispose(); foreach (PlayerRoleGroup v in _roleGroupDic) { v.dispose(); _roleGroupDic.remove(v.groupID); } _onlyOne = null; }
/** 申请加入玩家群 */ public void applyRoleGroup(long groupID) { if (!_config.canApply) { me.warnLog("申请加入玩家群时,配置不可申请"); return; } if (isRoleGroupFull()) { me.warnLog("申请加入玩家群时,群数已满"); return; } PlayerRoleGroup roleGroup = getRoleGroup(groupID); if (roleGroup != null) { me.warnLog("申请加入玩家群时,已在该群"); return; } if (!me.role.checkRoleConditions(_config.joinConditions, true)) { me.warnLog("申请加入玩家群时,自身条件不满足"); return; } PlayerApplyRoleGroupSelfData aData = _d.applyDic.get(groupID); if (aData != null) { me.warnLog("申请加入玩家群时,已申请过"); return; } if (_config.applyKeepMax > 0 && _d.applyDic.size() >= _config.applyKeepMax) { me.warnLog("申请加入玩家群时,已达到申请上限"); return; } me.send(FuncApplyRoleGroupRequest.create(_funcID, groupID)); }
protected override PlayerRoleGroup toCreatePlayerRoleGroup() { if (!_g10) { _m10 = instance.Type.GetMethod("toCreatePlayerRoleGroup", 0); _g10 = true; } if (_m10 != null && !_b10) { _b10 = true; PlayerRoleGroup re = (PlayerRoleGroup)appdomain.Invoke(_m10, instance, null); _b10 = false; return(re); } else { return(base.toCreatePlayerRoleGroup()); } }
private PlayerRoleGroup toAddRoleGroup(PlayerRoleGroupData data) { PlayerRoleGroup roleGroup = toCreatePlayerRoleGroup(); roleGroup.setGroupTool(this); roleGroup.construct(); roleGroup.setData(data); _d.groups.put(data.groupID, data); _roleGroupDic.put(roleGroup.groupID, roleGroup); if (_config.isSingleJoin()) { _onlyOne = roleGroup; } roleGroup.init(); roleGroup.afterReadData(); return(roleGroup); }
/** 处理邀请信息 */ public void handleInvite(InviteRoleGroupReceiveData tData, int result) { int index = _inviteList.indexOf(tData); if (index == -1) { me.warnLog("未找到邀请信息"); return; } _inviteList.remove(index); long invitorID = tData.inviter.playerID; if (isRoleGroupFull()) { me.warnLog("处理邀请时,群已满", invitorID); return; } if (!me.role.checkRoleConditions(_config.joinConditions, false)) { me.warnLog("处理邀请时,目标condition不满足"); return; } //有群 if (tData.simpleData != null) { PlayerRoleGroup roleGroup = getRoleGroup(tData.simpleData.groupID); if (roleGroup != null) { me.warnLog("处理邀请时,已在群中", invitorID); return; } } me.send(FuncHandleInviteRoleGroupRequest.create(_funcID, tData.inviter.playerID, tData.getRoleGroupID(), result)); }
/** 加入玩家群 */ public void onJoinRoleGroup(PlayerRoleGroupData data, int type) { PlayerRoleGroup roleGroup = getRoleGroup(data.groupID); if (roleGroup != null) { me.warnLog("不该有残留的玩家群"); roleGroup.dispose(); _d.groups.remove(roleGroup.groupID); } roleGroup = toAddRoleGroup(data); //移除申请 _d.applyDic.remove(data.groupID); evt.groupID = data.groupID; evt.type = type; me.dispatch(GameEventType.JoinRoleGroup, evt); }
/** 离开玩家群 */ public void onLeaveRoleGroup(long groupID, int type) { PlayerRoleGroup roleGroup = getRoleGroup(groupID); if (roleGroup == null) { me.warnLog("离开玩家群时,找不到群", groupID); return; } roleGroup.dispose(); _d.groups.remove(roleGroup.groupID); if (_config.isSingleJoin()) { _onlyOne = null; } evt.groupID = groupID; evt.type = type; me.dispatch(GameEventType.LeaveRoleGroup, evt); }
public override void afterReadData() { base.afterReadData(); if (_d.inviteList == null) { _d.inviteList = new SList <InviteRoleGroupReceiveData>(); } _inviteList = _d.inviteList; PlayerRoleGroup playerRoleGroup; PlayerRoleGroupData[] values; PlayerRoleGroupData v; for (int i = (values = _d.groups.getValues()).Length - 1; i >= 0; --i) { if ((v = values[i]) != null) { playerRoleGroup = toCreatePlayerRoleGroup(); playerRoleGroup.setGroupTool(this); playerRoleGroup.construct(); playerRoleGroup.setData(v); _roleGroupDic.put(playerRoleGroup.groupID, playerRoleGroup); if (_config.isSingleJoin()) { _onlyOne = playerRoleGroup; } playerRoleGroup.init(); playerRoleGroup.afterReadData(); } } }