コード例 #1
0
ファイル: FuncPart.cs プロジェクト: shineTeam7/home3
    /// <summary>
    /// 添加功能插件(数据不在FuncTool存,而是自行维护,也需要funcID)
    /// </summary>
    public void addFuncTool(IPlayerFuncTool tool, FuncToolData data)
    {
        FuncTool fTool = (FuncTool)tool;

        fTool.isAdded = true;
        toRegistFuncTool(tool);
        fTool.setData(data);
        tool.afterReadDataSecond();
    }
コード例 #2
0
ファイル: FuncPart.cs プロジェクト: shineTeam7/home3
    /// <summary>
    /// 获取物品容器工具
    /// </summary>
    public BaseItemContainerTool getBaseItemContainerTool(int funcID)
    {
        FuncTool funcTool = getFuncTool(FuncToolType.ItemContainer, funcID);

        if (funcTool == null)
        {
            funcTool = getFuncTool(FuncToolType.ItemDicContainer, funcID);
        }

        return((BaseItemContainerTool)funcTool);
    }
コード例 #3
0
ファイル: FuncPart.cs プロジェクト: shineTeam7/home3
    /// <summary>
    /// 移除功能插件
    /// </summary>
    public void removeFuncTool(FuncTool tool)
    {
        if (!tool.isAdded)
        {
            Ctrl.throwError("不可删除非added的FuncTool");
            return;
        }

        _funcToolList.removeObj(tool);
        _playerFuncToolList.removeObj((IPlayerFuncTool)tool);

        IntObjectMap <FuncTool> dic = getFuncToolDic(tool.getType());

        dic.remove(tool.getFuncID());
    }
コード例 #4
0
ファイル: FuncPart.cs プロジェクト: shineTeam7/home3
    /// <summary>
    /// 从库中读完数据后(做数据的补充解析)(onNewCreate后也会调用一次)(主线程)
    /// </summary>
    public override void afterReadData()
    {
        _d.funcTools.forEach((k, v) =>
        {
            if (v != null)
            {
                v.forEach((k1, v1) =>
                {
                    FuncTool funcTool = getFuncTool(k, k1);

                    if (funcTool != null)
                    {
                        funcTool.setData(v1);
                    }
                    else
                    {
                        Ctrl.errorLog("找不到功能插件type:", k, "funcID:", k1);
                    }
                });
            }
        });
    }
コード例 #5
0
ファイル: FuncPart.cs プロジェクト: shineTeam7/home3
    private void toRegistFuncTool(IPlayerFuncTool tool)
    {
        FuncTool fTool = (FuncTool)tool;

        IntObjectMap <FuncTool> dic = getFuncToolDic(fTool.getType());

        int funcID = fTool.getFuncID();

        if (ShineSetting.openCheck)
        {
            if (dic.contains(funcID))
            {
                Ctrl.throwError("已经存在功能插件:", fTool.getType(), funcID);
            }
        }

        //设置主角
        tool.setMe(me);

        dic.put(funcID, fTool);
        _funcToolList.add(fTool);
        _playerFuncToolList.add(tool);
        fTool.construct();
    }