def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.8 %s." % game_dir) if game_template == "example_cn": game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path( game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.9 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # copy full webclient default_template = os.path.join(configs.MUDDERY_LIB, configs.TEMPLATE_DIR) muddery_web = os.path.join(configs.MUDDERY_LIB, "web", "webclient") default_web = os.path.join(default_template, "web", "webclient_overrides") dest_web = os.path.join(game_dir, "web", "webclient_full") os.mkdir(dest_web) copy_tree(os.path.join(muddery_web, "webclient"), os.path.join(dest_web, "webclient")) shutil.copy2(os.path.join(muddery_web, "package.json"), os.path.join(dest_web, "package.json")) shutil.copy2(os.path.join(muddery_web, "webpack.config.js"), os.path.join(dest_web, "webpack.config.js")) copy_tree(os.path.join(default_web, "webclient"), os.path.join(dest_web, "webclient")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path( game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) # create dist folder os.mkdir( os.path.join(game_dir, "web", "webclient_overrides", "dist")) # copy full webclient template_web = os.path.join(game_template_dir, "web", "webclient_overrides") copy_tree(os.path.join(template_web, "webclient"), os.path.join(dest_web, "webclient"))
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.9 %s." % game_dir) # copy full webclient default_template = os.path.join(configs.MUDDERY_LIB, configs.TEMPLATE_DIR) muddery_web = os.path.join(configs.MUDDERY_LIB, "web", "webclient") default_web = os.path.join(default_template, "web", "webclient_overrides") dest_web = os.path.join(game_dir, "web", "webclient_full") os.mkdir(dest_web) copy_tree(os.path.join(muddery_web, "webclient"), os.path.join(dest_web, "webclient")) shutil.copy2(os.path.join(muddery_web, "package.json"), os.path.join(dest_web, "package.json")) shutil.copy2(os.path.join(muddery_web, "webpack.config.js"), os.path.join(dest_web, "webpack.config.js")) copy_tree(os.path.join(default_web, "webclient"), os.path.join(dest_web, "webclient")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path( game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) # create dist folder os.mkdir( os.path.join(game_dir, "web", "webclient_overrides", "dist")) # copy full webclient template_web = os.path.join(game_template_dir, "web", "webclient_overrides") copy_tree(os.path.join(template_web, "webclient"), os.path.join(dest_web, "webclient"))
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.9 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # copy full webclient default_template = os.path.join(configs.MUDDERY_LIB, configs.TEMPLATE_DIR) muddery_web = os.path.join(configs.MUDDERY_LIB, "web", "webclient") default_web = os.path.join(default_template, "web", "webclient_overrides") dest_web = os.path.join(game_dir, "web", "webclient_full") os.mkdir(dest_web) copy_tree(os.path.join(muddery_web, "webclient"), os.path.join(dest_web, "webclient")) shutil.copy2(os.path.join(muddery_web, "package.json"), os.path.join(dest_web, "package.json")) shutil.copy2(os.path.join(muddery_web, "webpack.config.js"), os.path.join(dest_web, "webpack.config.js")) copy_tree(os.path.join(default_web, "webclient"), os.path.join(dest_web, "webclient")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path(game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) # create dist folder os.mkdir(os.path.join(game_dir, "web", "webclient_overrides", "dist")) # copy full webclient template_web = os.path.join(game_template_dir, "web", "webclient_overrides") copy_tree(os.path.join(template_web, "webclient"), os.path.join(dest_web, "webclient"))
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.8 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") if game_template == "example_cn": game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path( game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.8 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") if game_template == "example_cn": game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # copy webclient utils.copy_path(game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game from version 0.2.7 %s." % game_dir) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) if os.path.exists( os.path.join(game_template_dir, "statements", "skill.py")): # copy skill utils.copy_path(game_template_dir, game_dir, os.path.join("statements", "skill.py")) # copy homepage utils.copy_path(game_template_dir, game_dir, os.path.join("web", "template_overrides")) # copy webclient utils.copy_path( game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # load data system_data_path = os.path.join(muddery_lib, "worlddata", "data") from muddery.worlddata.data_sets import DATA_SETS # load system data for data_handlers in DATA_SETS.system_data: try: data_handlers.import_from_path(system_data_path, system_data=True) except Exception, e: err_message = "Cannot import system game data. %s" % e print(err_message)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.2.2-0.2.4 %s." % game_dir) # add new models file_path = os.path.join(game_dir, "worlddata", "models.py") # add character_attributes_info to models utils.file_append(file_path, [ "\n", "class character_attributes_info(model_base.character_attributes_info):\n", " pass\n", "\n" ]) # add equipment_attributes_info to models utils.file_append(file_path, [ "\n", "class equipment_attributes_info(model_base.equipment_attributes_info):\n", " pass\n", "\n" ]) # add food_attributes_info to models utils.file_append(file_path, [ "\n", "class food_attributes_info(model_base.food_attributes_info):\n", " pass\n", "\n" ]) # add new forms file_path = os.path.join(game_dir, "worlddata", "forms.py") # move init to the end of the file utils.comment_out_lines(file_path, ["Manager.init_data()"]) # add character_attributes_info to forms utils.file_append(file_path, [ "\n", "class CharacterAttributesForm(forms_base.CharacterAttributesForm):\n", " pass\n", "\n" ]) # add equipment_attributes_info to forms utils.file_append(file_path, [ "\n", "class EquipmentAttributesForm(forms_base.EquipmentAttributesForm):\n", " pass\n", "\n" ]) # add food_attributes_info to forms utils.file_append(file_path, [ "\n", "class FoodAttributesForm(forms_base.FoodAttributesForm):\n", " pass\n", "\n" ]) # add init method utils.file_append(file_path, ["\n", "Manager.init_data()\n", "\n"]) default_template_dir = os.path.join(muddery_lib, "game_template") # update game editor utils.copy_path(default_template_dir, game_dir, os.path.join("worlddata", "editor")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # update statements utils.copy_path(game_template_dir, game_dir, "statements") # update game editor utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "editor")) # template data utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "data")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # load data system_data_path = os.path.join(muddery_lib, "worlddata", "data") from muddery.worlddata.data_sets import DATA_SETS # load system data for data_handlers in DATA_SETS.system_data: try: data_handlers.import_from_path(system_data_path, system_data=True) except Exception, e: err_message = "Cannot import system game data. %s" % e logger.log_errmsg(err_message)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.2.5 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # add new models file_path = os.path.join(game_dir, "worlddata", "models.py") # add condition_desc to models utils.file_append(file_path, ["\n", "class condition_desc(model_base.condition_desc):\n", " pass\n", "\n"]) # add skill_types to models utils.file_append(file_path, ["\n", "class skill_types(model_base.skill_types):\n", " pass\n", "\n"]) # add honours to models utils.file_append(file_path, ["\n", "class honours(model_base.honours):\n", " pass\n", "\n"]) # add new forms file_path = os.path.join(game_dir, "worlddata", "forms.py") # move init to the end of the file utils.comment_out_lines(file_path, ["Manager.init_data()"]) # add condition_desc to forms utils.file_append(file_path, ["\n", "class ConditionDescForm(forms_base.ConditionDescForm):\n", " pass\n", "\n"]) # add skill_types to forms utils.file_append(file_path, ["\n", "class SkillTypesForm(forms_base.SkillTypesForm):\n", " pass\n", "\n"]) # add init method utils.file_append(file_path, ["\n", "Manager.init_data()\n", "\n"]) default_template_dir = os.path.join(muddery_lib, "game_template") # update game editor utils.copy_path(default_template_dir, game_dir, os.path.join("worlddata", "editor")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) if game_template == "example_cn": # update AI utils.copy_path(game_template_dir, game_dir, "ai") # update settings file file_path = os.path.join(game_dir, "server", "conf", "settings.py") utils.file_append(file_path, ["\n", "AI_CHOOSE_SKILL = 'ai.choose_skill.ChooseSkill'\n", "\n"]) if game_template == "legend": # update main.js utils.copy_path(game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient", "controllers", "main.js")) # update game editor utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "editor")) # template data utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "data")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) if game_template == "example_cn": # load data from muddery.worlddata.data_sets import DATA_SETS data_path = os.path.join(game_dir, "worlddata", "data") DATA_SETS.get_handler("skill_types").import_from_path(data_path)
def upgrade_game(self, game_dir, game_template): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. """ print("Upgrading game %s." % game_dir) temp_dir = None try: # Move game dir to temp dir. temp_dir = utils.to_temp_dir(game_dir) # get settings setting_list = { "ALLOWED_HOSTS", "WEBSERVER_PORTS", "WEBSOCKET_CLIENT_PORT", "AMP_PORT", "LANGUAGE_CODE", "SECRET_KEY" } setting_dict = utils.get_settings(temp_dir, setting_list) # create new game utils.create_game(game_dir, game_template, setting_dict) # copy old files # database utils.copy_path(temp_dir, game_dir, os.path.join("server", "muddery.db3")) # migrations utils.copy_path(temp_dir, game_dir, os.path.join("worlddata", "migrations")) # web utils.copy_path(temp_dir, game_dir, "web") # make new migrations os.chdir(game_dir) django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # copy game name from muddery.worlddata.data_sets import DATA_SETS server_name = utils.get_settings(temp_dir, ["SERVERNAME"]) if server_name: kwargs = { "game_name": ast.literal_eval(server_name["SERVERNAME"]) } DATA_SETS.game_settings.objects.all().update(**kwargs) # upgrade system data from django.conf import settings custom_data_path = os.path.join(game_dir, settings.WORLD_DATA_FOLDER) system_data_path = os.path.join(settings.MUDDERY_DIR, settings.WORLD_DATA_FOLDER) for data_handler in DATA_SETS.system_data: data_handler.clear_model_data(system_data=False) try: data_handler.import_from_path(custom_data_path, system_data=False) except Exception, e: print("Cannot import game data. %s" % e) data_handler.clear_model_data(system_data=True) try: data_handler.import_from_path(system_data_path, system_data=True) except Exception, e: print("Cannot import game data. %s" % e)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.0.0-0.2.0 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") temp_dir = None try: # get settings setting_list = { "ALLOWED_HOSTS", "WEBSERVER_PORTS", "WEBSOCKET_CLIENT_PORT", "AMP_PORT", "LANGUAGE_CODE", "SECRET_KEY" } setting_dict = utils.get_settings(game_dir, setting_list) # create new game in temp dir temp_dir = utils.get_temp_dir_name(game_dir) utils.create_game(temp_dir, game_template, setting_dict) # copy old files # database utils.copy_path(game_dir, temp_dir, os.path.join("server", "muddery.db3")) # migrations shutil.rmtree(os.path.join(temp_dir, "worlddata", "migrations")) utils.copy_path(game_dir, temp_dir, os.path.join("worlddata", "migrations")) # make new migrations os.chdir(temp_dir) django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # copy game name from muddery.worlddata.data_sets import DATA_SETS server_name = utils.get_settings(temp_dir, ["SERVERNAME"]) if server_name: kwargs = { "game_name": ast.literal_eval(server_name["SERVERNAME"]) } DATA_SETS.game_settings.objects.all().update(**kwargs) # upgrade system data from django.conf import settings custom_data_path = os.path.join(game_dir, settings.WORLD_DATA_FOLDER) system_data_path = os.path.join(settings.MUDDERY_DIR, settings.WORLD_DATA_FOLDER) for data_handler in DATA_SETS.system_data: data_handler.clear_model_data(system_data=False) try: data_handler.import_from_path(custom_data_path, system_data=False) except Exception as e: print("Cannot import game data. %s" % e) data_handler.clear_model_data(system_data=True) try: data_handler.import_from_path(system_data_path, system_data=True) except Exception as e: print("Cannot import game data. %s" % e) # set shop goods' key for data in DATA_SETS.shop_goods.objects.all(): data.full_clean() data.save() # clear web dir shutil.rmtree(os.path.join(game_dir, "web")) # copy temp dir to game dir utils.copy_tree(temp_dir, game_dir) finally: if temp_dir: # remove temp dir shutil.rmtree(temp_dir)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.0.0-0.2.0 %s." % game_dir) temp_dir = None try: # get settings setting_list = {"ALLOWED_HOSTS", "WEBSERVER_PORTS", "WEBSOCKET_CLIENT_PORT", "AMP_PORT", "LANGUAGE_CODE", "SECRET_KEY"} setting_dict = utils.get_settings(game_dir, setting_list) # create new game in temp dir temp_dir = utils.get_temp_dir_name(game_dir) utils.create_game(temp_dir, game_template, setting_dict) # copy old files # database utils.copy_path(game_dir, temp_dir, os.path.join("server", "muddery.db3")) # migrations shutil.rmtree(os.path.join(temp_dir, "worlddata", "migrations")) utils.copy_path(game_dir, temp_dir, os.path.join("worlddata", "migrations")) # make new migrations os.chdir(temp_dir) django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # copy game name from muddery.worlddata.data_sets import DATA_SETS server_name = utils.get_settings(temp_dir, ["SERVERNAME"]) if server_name: kwargs = {"game_name": ast.literal_eval(server_name["SERVERNAME"])} DATA_SETS.game_settings.objects.all().update(**kwargs) # upgrade system data from django.conf import settings custom_data_path = os.path.join(game_dir, settings.WORLD_DATA_FOLDER) system_data_path = os.path.join(settings.MUDDERY_DIR, settings.WORLD_DATA_FOLDER) for data_handler in DATA_SETS.system_data: data_handler.clear_model_data(system_data=False) try: data_handler.import_from_path(custom_data_path, system_data=False) except Exception, e: print("Cannot import game data. %s" % e) data_handler.clear_model_data(system_data=True) try: data_handler.import_from_path(system_data_path, system_data=True) except Exception, e: print("Cannot import game data. %s" % e)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.2.0-0.2.2 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # comment out client_settings in models file_path = os.path.join(game_dir, "worlddata", "models.py") utils.comment_out_class(file_path, "client_settings") # add world_area to models utils.file_append(file_path, [ "\n", "class world_areas(model_base.world_areas):\n", " pass\n", "\n" ]) # add character_attributes_info to models utils.file_append(file_path, [ "\n", "class character_attributes_info(model_base.character_attributes_info):\n", " pass\n", "\n" ]) # add equipment_attributes_info to models utils.file_append(file_path, [ "\n", "class equipment_attributes_info(model_base.equipment_attributes_info):\n", " pass\n", "\n" ]) # add food_attributes_info to models utils.file_append(file_path, [ "\n", "class food_attributes_info(model_base.food_attributes_info):\n", " pass\n", "\n" ]) # add condition_desc to models utils.file_append(file_path, [ "\n", "class condition_desc(model_base.condition_desc):\n", " pass\n", "\n" ]) # add skill_types to models utils.file_append(file_path, [ "\n", "class skill_types(model_base.skill_types):\n", " pass\n", "\n" ]) # add honours to models utils.file_append( file_path, ["\n", "class honours(model_base.honours):\n", " pass\n", "\n"]) # comment out ClientSettingsForm in forms file_path = os.path.join(game_dir, "worlddata", "forms.py") utils.comment_out_class(file_path, "ClientSettingsForm") utils.comment_out_lines(file_path, ["Manager.init_data()"]) # add world_area to forms utils.file_append(file_path, [ "\n", "class WorldAreasForm(forms_base.WorldAreasForm):\n", " pass\n", "\n" ]) # add character_attributes_info to forms utils.file_append(file_path, [ "\n", "class CharacterAttributesForm(forms_base.CharacterAttributesForm):\n", " pass\n", "\n" ]) # add equipment_attributes_info to forms utils.file_append(file_path, [ "\n", "class EquipmentAttributesForm(forms_base.EquipmentAttributesForm):\n", " pass\n", "\n" ]) # add food_attributes_info to forms utils.file_append(file_path, [ "\n", "class FoodAttributesForm(forms_base.FoodAttributesForm):\n", " pass\n", "\n" ]) # add condition_desc to forms utils.file_append(file_path, [ "\n", "class ConditionDescForm(forms_base.ConditionDescForm):\n", " pass\n", "\n" ]) # add skill_types to forms utils.file_append(file_path, [ "\n", "class SkillTypesForm(forms_base.SkillTypesForm):\n", " pass\n", "\n" ]) # add init method utils.file_append(file_path, ["\n", "Manager.init_data()\n", "\n"]) # comment out ClientSettingsAdmin in admin file_path = os.path.join(game_dir, "worlddata", "admin.py") utils.comment_out_class(file_path, "ClientSettingsAdmin") utils.comment_out_lines( file_path, "admin.site.register(client_settings, ClientSettingsAdmin)") # update web folder shutil.rmtree(os.path.join(game_dir, "web")) default_template_dir = os.path.join(muddery_lib, "game_template") # update web folder utils.copy_path(default_template_dir, game_dir, "web") # update game editor utils.copy_path(default_template_dir, game_dir, os.path.join("worlddata", "editor")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # update AI if game_template == "example_cn": utils.copy_path(game_template_dir, game_dir, "ai") # update settings file file_path = os.path.join(game_dir, "server", "conf", "settings.py") utils.file_append(file_path, [ "\n", "AI_CHOOSE_SKILL = 'ai.choose_skill.ChooseSkill'\n", "\n" ]) # update web folder utils.copy_path(game_template_dir, game_dir, "web") # update statements utils.copy_path(game_template_dir, game_dir, "statements") # update game editor utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "editor")) # template data utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "data")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # load data system_data_path = os.path.join(muddery_lib, "worlddata", "data") from muddery.worlddata.data_sets import DATA_SETS # load system data for data_handlers in DATA_SETS.system_data: try: data_handlers.import_from_path(system_data_path, system_data=True) except Exception, e: err_message = "Cannot import system game data. %s" % e print(err_message)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.2.5 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # add new models file_path = os.path.join(game_dir, "worlddata", "models.py") # add condition_desc to models utils.file_append(file_path, ["\n", "class condition_desc(model_base.condition_desc):\n", " pass\n", "\n"]) # add skill_types to models utils.file_append(file_path, ["\n", "class skill_types(model_base.skill_types):\n", " pass\n", "\n"]) # add honours to models utils.file_append(file_path, ["\n", "class honours(model_base.honours):\n", " pass\n", "\n"]) # add new forms file_path = os.path.join(game_dir, "worlddata", "forms.py") # move init to the end of the file utils.comment_out_lines(file_path, ["Manager.init_data()"]) # add condition_desc to forms utils.file_append(file_path, ["\n", "class ConditionDescForm(forms_base.ConditionDescForm):\n", " pass\n", "\n"]) # add skill_types to forms utils.file_append(file_path, ["\n", "class SkillTypesForm(forms_base.SkillTypesForm):\n", " pass\n", "\n"]) # add init method utils.file_append(file_path, ["\n", "Manager.init_data()\n", "\n"]) default_template_dir = os.path.join(muddery_lib, "game_template") # update game editor utils.copy_path(default_template_dir, game_dir, os.path.join("worlddata", "editor")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) if game_template == "example_cn": # update AI utils.copy_path(game_template_dir, game_dir, "ai") # update settings file file_path = os.path.join(game_dir, "server", "conf", "settings.py") utils.file_append(file_path, ["\n", "AI_CHOOSE_SKILL = 'ai.choose_skill.ChooseSkill'\n", "\n"]) if game_template == "legend": # update main.js utils.copy_path(game_template_dir, game_dir, os.path.join("web", "webclient_overrides", "webclient", "controllers", "main.js")) # update game editor utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "editor")) # template data utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "data")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) if game_template == "example_cn": # load data from muddery.worlddata.data_sets import DATA_SETS data_path = os.path.join(game_dir, "worlddata", "data") DATA_SETS.get_handler("skill_types").import_from_path(data_path)
def upgrade_game(self, game_dir, game_template, muddery_lib): """ Upgrade a game. Args: game_dir: (string) the game dir to be upgraded. game_template: (string) the game template used to upgrade the game dir. muddery_lib: (string) muddery's dir """ print("Upgrading game 0.2.0-0.2.2 %s." % game_dir) print(""" We are very sorry that your game is too old to upgrade. If you want to upgrade your game nevertheless, please contact the author.""") raise MudderyError("Can not upgrade.") # comment out client_settings in models file_path = os.path.join(game_dir, "worlddata", "models.py") utils.comment_out_class(file_path, "client_settings") # add world_area to models utils.file_append(file_path, ["\n", "class world_areas(model_base.world_areas):\n", " pass\n", "\n"]) # add character_attributes_info to models utils.file_append(file_path, ["\n", "class character_attributes_info(model_base.character_attributes_info):\n", " pass\n", "\n"]) # add equipment_attributes_info to models utils.file_append(file_path, ["\n", "class equipment_attributes_info(model_base.equipment_attributes_info):\n", " pass\n", "\n"]) # add food_attributes_info to models utils.file_append(file_path, ["\n", "class food_attributes_info(model_base.food_attributes_info):\n", " pass\n", "\n"]) # add condition_desc to models utils.file_append(file_path, ["\n", "class condition_desc(model_base.condition_desc):\n", " pass\n", "\n"]) # add skill_types to models utils.file_append(file_path, ["\n", "class skill_types(model_base.skill_types):\n", " pass\n", "\n"]) # add honours to models utils.file_append(file_path, ["\n", "class honours(model_base.honours):\n", " pass\n", "\n"]) # comment out ClientSettingsForm in forms file_path = os.path.join(game_dir, "worlddata", "forms.py") utils.comment_out_class(file_path, "ClientSettingsForm") utils.comment_out_lines(file_path, ["Manager.init_data()"]) # add world_area to forms utils.file_append(file_path, ["\n", "class WorldAreasForm(forms_base.WorldAreasForm):\n", " pass\n", "\n"]) # add character_attributes_info to forms utils.file_append(file_path, ["\n", "class CharacterAttributesForm(forms_base.CharacterAttributesForm):\n", " pass\n", "\n"]) # add equipment_attributes_info to forms utils.file_append(file_path, ["\n", "class EquipmentAttributesForm(forms_base.EquipmentAttributesForm):\n", " pass\n", "\n"]) # add food_attributes_info to forms utils.file_append(file_path, ["\n", "class FoodAttributesForm(forms_base.FoodAttributesForm):\n", " pass\n", "\n"]) # add condition_desc to forms utils.file_append(file_path, ["\n", "class ConditionDescForm(forms_base.ConditionDescForm):\n", " pass\n", "\n"]) # add skill_types to forms utils.file_append(file_path, ["\n", "class SkillTypesForm(forms_base.SkillTypesForm):\n", " pass\n", "\n"]) # add init method utils.file_append(file_path, ["\n", "Manager.init_data()\n", "\n"]) # comment out ClientSettingsAdmin in admin file_path = os.path.join(game_dir, "worlddata", "admin.py") utils.comment_out_class(file_path, "ClientSettingsAdmin") utils.comment_out_lines(file_path, "admin.site.register(client_settings, ClientSettingsAdmin)") # update web folder shutil.rmtree(os.path.join(game_dir, "web")) default_template_dir = os.path.join(muddery_lib, "game_template") # update web folder utils.copy_path(default_template_dir, game_dir, "web") # update game editor utils.copy_path(default_template_dir, game_dir, os.path.join("worlddata", "editor")) if game_template: game_template_dir = os.path.join(configs.MUDDERY_TEMPLATE, game_template) # update AI if game_template == "example_cn": utils.copy_path(game_template_dir, game_dir, "ai") # update settings file file_path = os.path.join(game_dir, "server", "conf", "settings.py") utils.file_append(file_path, ["\n", "AI_CHOOSE_SKILL = 'ai.choose_skill.ChooseSkill'\n", "\n"]) # update web folder utils.copy_path(game_template_dir, game_dir, "web") # update statements utils.copy_path(game_template_dir, game_dir, "statements") # update game editor utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "editor")) # template data utils.copy_path(game_template_dir, game_dir, os.path.join("worlddata", "data")) os.chdir(game_dir) init_game_directory(game_dir, check_db=False) # make new migrations django_args = ["makemigrations"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) django_args = ["migrate"] django_kwargs = {} django.core.management.call_command(*django_args, **django_kwargs) # load data system_data_path = os.path.join(muddery_lib, "worlddata", "data") from muddery.worlddata.data_sets import DATA_SETS # load system data for data_handlers in DATA_SETS.system_data: try: data_handlers.import_from_path(system_data_path, system_data=True) except Exception, e: err_message = "Cannot import system game data. %s" % e print(err_message)