protected override void preExecute()
 {
     if ((roleGroup = me.func.getRoleGroupTool(funcID).getRoleGroup(groupID)) != null)
     {
         base.preExecute();
     }
 }
Exemplo n.º 2
0
    /** 邀请入群 */
    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));
    }
Exemplo n.º 3
0
    public override void dispose()
    {
        base.dispose();

        foreach (PlayerRoleGroup v in _roleGroupDic)
        {
            v.dispose();
            _roleGroupDic.remove(v.groupID);
        }

        _onlyOne = null;
    }
Exemplo n.º 4
0
    /** 申请加入玩家群 */
    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));
    }
Exemplo n.º 5
0
        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());
            }
        }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    /** 处理邀请信息 */
    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));
    }
Exemplo n.º 8
0
    /** 加入玩家群 */
    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);
    }
Exemplo n.º 9
0
    /** 离开玩家群 */
    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);
    }
Exemplo n.º 10
0
    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();
            }
        }
    }