Exemple #1
0
def register_server_go_datatable():
    config_data = config.get_config_data()
    register_config = config_data['go_server']
    file_dict = config.get_file_dict()

    server_declare_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_go_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)

        server_declare_content += "	" + upper_case_name + \
            "Map map[int32]" + upper_case_name + "\n"

    common.write_file_content(config.get_serverv_go_register_path(),
                              register_config["server_declare_start"], register_config["server_declare_end"],
                              server_declare_content, 'utf-8')

    server_register_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_go_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)

        server_register_content += "	Manager." + \
            upper_case_name+"Map = Init" + upper_case_name+"()\n"

    common.write_file_content(config.get_serverv_go_register_path(),
                              register_config["server_register_start"], register_config["server_register_end"],
                              server_register_content, 'utf-8')

    server_get_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_go_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)

        server_get_content += "\nfunc Get" + upper_case_name + \
            "Map() *map[int32]" + upper_case_name+" {\n"
        server_get_content += "	return &Manager." + upper_case_name + "Map\n"
        server_get_content += "}\n"

        server_get_content += "\nfunc Get" + upper_case_name + \
            "(DataId int32) *" + upper_case_name + " {\n"
        server_get_content += "\tres, ok := Manager." + \
            upper_case_name + "Map[DataId]\n"
        server_get_content += "\tif ok {\n"
        server_get_content += "\t\treturn &res\n"
        server_get_content += "\t} else {\n"
        server_get_content += "\t\treturn nil\n"
        server_get_content += "\t}\n"
        server_get_content += "}\n"

    server_get_content += "\n"

    common.write_file_content(config.get_serverv_go_register_path(),
                              register_config["server_get_start"], register_config["server_get_end"],
                              server_get_content, 'utf-8')

    print("Register Server Go DataTable Success!")
Exemple #2
0
def register_client_datatable():

    config_data = config.get_config_data()
    register_config = config_data['register']
    client_register_config = config_data['client_register']
    file_dict = config.get_file_dict()

    client_header_content = "\n"
    for file_id in file_dict:

        if not config.enable_client_code_file(file_id):
            continue

        client_header_content += "#include \"" + \
            config.get_client_code_file_name(file_id) + "\"\n"

    common.write_file_content(config.get_client_register_h_path(),
                              client_register_config["client_header_start"], client_register_config["client_header_end"], client_header_content)

    client_register_content = "\n"
    for file_id in file_dict:

        if not config.enable_client_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)
        client_register_content += "\tREGISTER_DATATABLE_CLIENT(" + \
            upper_case_name + ")\n"

    common.write_file_content(config.get_client_register_cpp_path(),
                              client_register_config["client_register_start"], client_register_config["client_register_end"], client_register_content)

    data_table_type = "\nenum EDataTableType\n{\n"
    for file_id in file_dict:

        if not config.enable_client_code_file(file_id):
            continue

        upper_case_name = config.get_file_upper_case_name(file_id)
        data_table_type += "\tEDataTableType_" + \
            upper_case_name + " = "+str(file_id)+",\n"

    data_table_type += "\tEDataTableType_Max\n};\n"

    common.write_file_content(config.get_register_type_path(),
                              register_config["type_start"], register_config["type_end"], data_table_type)

    if config.enable_escape():

        data_table_escape = "\n"
        for file_id in file_dict:

            if not config.enable_client_code_file(file_id):
                continue

            data_table_escape += "#define " + upper_case_name + " F" + upper_case_name+"\n"

        common.write_file_content(config.get_register_type_path(),
                                  register_config["escape_start"], register_config["escape_end"], data_table_escape)

    print("Register Client DataTable Success!")
Exemple #3
0
def generate_server_cpp_code(file_id):

    type_def_file_name = config.get_type_def_file_name()
    enum_def_file_name = config.get_server_cpp_enum_def_file_name()
    upper_case_name = config.get_file_upper_case_name(file_id)
    code_namespace = config.get_code_namespace()

    code_content = ""

    code_content += "#pragma once\n"
    code_content += "\n"
    code_content += "//Exported by Tool, please don't edit this file directly.\n"
    code_content += "\n"
    code_content += "#include \"" + type_def_file_name + "\"\n"
    code_content += "#include \"" + enum_def_file_name + "\"\n"
    code_content += "#include \"data_table_base.h\"\n"
    code_content += "#include \"data_csv_parser.h\"\n"
    code_content += "\n"
    code_content += "namespace " + code_namespace + "\n"
    code_content += "{\n"
    code_content += "\tclass " + upper_case_name + " : public DataTableBase\n"
    code_content += "\t{\n"
    code_content += "\tpublic:\n"
    code_content += "\t\t" + upper_case_name + "(std::string data_string)\n"
    code_content += "\t\t{\n"
    code_content += "\t\t\tDataCsvParser csv_parser(data_string);\n"

    data_type_list = excel.get_data_type_list()
    head_name_list = excel.get_head_name_list()

    for data_index in range(len(data_type_list)):
        data_type = data_type_list[data_index]
        head_name = head_name_list[data_index]

        code_content += "\t\t\tcsv_parser."
        code_content += parse.get_cpp_parse_function_name(data_type)
        code_content += "("
        code_content += head_name
        code_content += ");\n"

    code_content += "\t\t};\n"
    code_content += "\n"

    for data_index in range(len(data_type_list)):
        data_type = data_type_list[data_index]
        head_name = head_name_list[data_index]
        code_content += "\t\t"
        code_content += parse.get_cpp_server_data_type(data_type)
        code_content += " "
        code_content += head_name
        code_content += ";\n"

    code_content += "\t};\n"
    code_content += "}\n"

    code_file_path = config.get_server_cpp_code_file_path(file_id)
    common.overwrite_file_content(code_file_path, code_content)

    print("Generate " + str(file_id) + " Server C++ Code Success!")
Exemple #4
0
def register_server_cpp_datatable():

    config_data = config.get_config_data()
    register_config = config_data['register']
    server_register_config = config_data['server_cpp_register']
    file_dict = config.get_file_dict()

    server_header_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_cpp_code_file(file_id):
            continue
        server_header_content += "#include \"" + \
            config.get_server_cpp_code_file_name(file_id) + "\"\n"
    common.write_file_content(config.get_serverv_cpp_register_h_path(),
                              server_register_config["server_header_start"], server_register_config["server_header_end"], server_header_content)

    server_register_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_cpp_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)

        server_register_content += "\t\t\t, REGISTER_DATATABLE_SERVER(" + \
            upper_case_name + ")\n"

    common.write_file_content(config.get_serverv_cpp_register_cpp_path(),
                              server_register_config["server_register_start"], server_register_config["server_register_end"], server_register_content)

    server_declare_content = "\n"
    for file_id in file_dict:
        if not config.enable_server_cpp_code_file(file_id):
            continue
        upper_case_name = config.get_file_upper_case_name(file_id)

        server_declare_content += "\t\tDECLARE_DATATABLE_SERVER(" + \
            upper_case_name + ")\n"

    common.write_file_content(config.get_serverv_cpp_register_h_path(),
                              server_register_config["server_declare_start"], server_register_config["server_declare_end"], server_declare_content)

    print("Register Server C++ DataTable Success!")
Exemple #5
0
def generate_client_code(file_id):

    type_def_file_name = config.get_type_def_file_name()
    enum_def_file_name = config.get_client_enum_def_file_name()
    upper_case_name = config.get_file_upper_case_name(file_id)
    client_file_suffix = config.get_client_file_suffix()

    code_content = ""
    code_content += "#pragma once\n"
    code_content += "\n"
    code_content += "//Exported by Tool, please don't edit this file directly.\n"
    code_content += "\n"
    code_content += "#include \"" + type_def_file_name + "\"\n"
    code_content += "#include \"" + enum_def_file_name + "\"\n"
    code_content += "#include \"Engine/DataTable.h\"\n"
    code_content += "#include \"" + upper_case_name + \
        client_file_suffix + ".generated.h\"\n"
    code_content += "\n"
    code_content += "USTRUCT(BlueprintType)\n"
    code_content += "struct F" + upper_case_name + " : public FTableRowBase\n"
    code_content += "{\n"
    code_content += "\tGENERATED_USTRUCT_BODY()\n"
    code_content += "\n"

    data_type_list = excel.get_data_type_list()
    head_name_list = excel.get_head_name_list()

    for data_index in range(len(data_type_list)):
        data_type = data_type_list[data_index]
        head_name = head_name_list[data_index]

        code_content += "\tUPROPERTY(EditAnywhere, BlueprintReadWrite, Category = F" + \
            upper_case_name + ")\n"
        code_content += "\t\t"
        code_content += parse.get_client_data_type(data_type)
        code_content += " "
        code_content += head_name
        code_content += ";\n"

    code_content += "};\n"

    code_file_path = config.get_client_code_file_path(file_id)
    common.overwrite_file_content(code_file_path, code_content)

    print("Generate " + str(file_id) + " Client Code Success!")
Exemple #6
0
def generate_server_go_code(file_id):

    upper_case_name = config.get_file_upper_case_name(file_id)

    data_type_list = excel.get_data_type_list()
    head_name_list = excel.get_head_name_list()
    go_project_name = config.get_serverv_go_project_name()

    code_content = ""
    code_content += "//Exported by Tool, please don't edit this file directly.\n"
    code_content += "\n"
    code_content += "package datatablepacket\n"
    code_content += "\n"

    code_content += "import (\n"
    code_content += "	\"encoding/csv\"\n"
    code_content += "	\"io\"\n"
    code_content += "	\"" + go_project_name + "/common/config\"\n"

    if enum.is_enum_exist(data_type_list):
        code_content += "	\"" + go_project_name + "/datatable/dataenum\"\n"

    code_content += "	\"" + go_project_name + "/datatable/dataparse\"\n"
    code_content += "	\"os\"\n"
    code_content += ")\n"

    code_content += "\n"

    code_content += "type " + upper_case_name + " struct {\n"

    for data_index in range(len(data_type_list)):
        data_type = data_type_list[data_index]
        data_name = head_name_list[data_index]

        code_content += "\t"
        code_content += parse.get_go_variable_definition(data_type, data_name)
        code_content += "\n"

    code_content += "}\n"

    code_content += "\n"

    code_content += "func Init"+upper_case_name + \
        "() map[int32]"+upper_case_name+" {\n"

    code_content += "	file, err := os.Open(config.Conf.DataTablePath + \"/" + \
        upper_case_name+".csv\")\n"
    code_content += "	defer file.Close()\n"
    code_content += "	if err != nil {\n"
    code_content += "		return nil\n"
    code_content += "	}\n"
    code_content += "	"+upper_case_name + \
        "Map := make(map[int32]"+upper_case_name+")\n"
    code_content += "	firstLine := true\n"
    code_content += "	reader := csv.NewReader(file)\n"
    code_content += "	for {\n"
    code_content += "		line, err := reader.Read()\n"
    code_content += "		if err == io.EOF {\n"
    code_content += "			break\n"
    code_content += "		}\n"
    code_content += "		if err != nil {\n"
    code_content += "			return nil\n"
    code_content += "		}\n"
    code_content += "		if firstLine {\n"
    code_content += "			firstLine = false\n"
    code_content += "			continue\n"
    code_content += "		}\n"
    code_content += "		DataId := dataparse.ParseInt32(line[1])\n"
    code_content += "		"+upper_case_name + \
        "Map[DataId] = "+upper_case_name+"{\n"

    for data_index in range(len(data_type_list)):
        data_type = data_type_list[data_index]
        data_name = head_name_list[data_index]

        code_content += "			"
        code_content += parse.get_go_parse_function_name(
            data_type, data_name, "line["+str(data_index+1)+"]")
        code_content += ",\n"

    code_content += "		}\n"
    code_content += "	}\n"
    code_content += "	return "+upper_case_name+"Map\n"
    code_content += "}\n"

    code_file_path = config.get_server_go_code_file_path(file_id)
    common.overwrite_file_content(code_file_path, code_content)

    print("Generate " + str(file_id) + " Server Go Code Success!")