예제 #1
0
    /// <summary>
    /// 储存所有掉落的id。以掉落ID为key,生成字典
    /// </summary>
    /// <param name="dropid"></param>
    /// <param name="dropfield"></param>
    public void AddDropID(int dropid, int probability, Table_dropField dropfield)
    {
        if (_Drop_ID.ContainsKey(dropid))
        {
            _Drop_ID[dropid].Add(dropfield);
        }
        else
        {
            _Drop_ID.Add(dropid, new List <Table_dropField> {
                dropfield
            });
        }

        if (probability == 10000)
        {
            if (_Drop_ID100.ContainsKey(dropid))
            {
                _Drop_ID100[dropid].Add(dropfield);
            }
            else
            {
                _Drop_ID100.Add(dropid, new List <Table_dropField> {
                    dropfield
                });
            }
        }
        else if (probability == 0)
        {
            if (_Drop_ID0.ContainsKey(dropid))
            {
                _Drop_ID0[dropid].Add(dropfield);
            }
            else
            {
                _Drop_ID0.Add(dropid, new List <Table_dropField> {
                    dropfield
                });
            }
        }
        else
        {
            if (_Drop_ID50.ContainsKey(dropid))
            {
                _Drop_ID50[dropid].Add(dropfield);
            }
            else
            {
                _Drop_ID50.Add(dropid, new List <Table_dropField> {
                    dropfield
                });
            }
        }
    }
예제 #2
0
    public static void AnalyzeDrop(TableInfo table, out string errorString)
    {
        errorString = null;
        Table_drop    table_drop       = new Table_drop();
        StringBuilder errorStringBuild = new StringBuilder();

        table_drop.name = table.TableName;
        //数据表的行数
        int rowCount = table.GetKeyColumnFieldInfo().Data.Count;

        try
        {
            for (int row = 0; row < rowCount; ++row)
            {
                Table_dropField table_dropfield = new Table_dropField();

                table_dropfield.row        = row + 5;
                table_dropfield.id         = (int)table.GetFieldInfoByFieldName(table_drop.id).Data[row];
                table_dropfield.prob       = (int)table.GetFieldInfoByFieldName(table_drop.prob).Data[row];
                table_dropfield.min_lv     = (int)table.GetFieldInfoByFieldName(table_drop.min_lv).Data[row];
                table_dropfield.max_lv     = (int)table.GetFieldInfoByFieldName(table_drop.max_lv).Data[row];
                table_dropfield.drop_group = (int)table.GetFieldInfoByFieldName(table_drop.drop_group).Data[row];

                int dropid      = (int)table.GetFieldInfoByFieldName(table_drop.drop_id).Data[row];
                int probability = (int)table.GetFieldInfoByFieldName(table_drop.prob).Data[row];
                table_drop.AddDropID(dropid, probability, table_dropfield);

                //bool b = AppValues.TableDropRewardInfo[table_drop.name + "_reward"].Drop_Group.ContainsKey(table_dropfield.drop_group);
                bool b = false;
                b = AppValues.TableInfo[table_drop.name + "_reward"].GetFieldInfoByFieldName("drop_group").Data.Contains(table_dropfield.drop_group);

                if (b == false)
                {
                    errorStringBuild.AppendFormat("第{0}行{1}列数据:{2}错误,未在{3}表中{4}字段找到对应值\n", row + AppValues.DATA_FIELD_DATA_START_INDEX + 1, Utils.GetExcelColumnName(table.GetFieldInfoByFieldName("drop_group").ColumnSeq + 1), table_dropfield.drop_group, table.TableName + "_reward", "drop_group");
                }
            }
        }
        catch
        {
            errorStringBuild.Append("未知的错误!!!请确保其中有关联的表格都已选中,或者去勾选不对表格进行检查(慎重)");
        }
        if (errorStringBuild.Length > 0)
        {
            errorString = errorStringBuild.ToString();
        }
        AppValues.TableDropInfo.Add(table_drop.name, table_drop);
    }