Exemple #1
0
    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)
Exemple #2
0
    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"))
Exemple #3
0
    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"))
Exemple #4
0
    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"))
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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)
Exemple #9
0
    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)
Exemple #10
0
    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)
Exemple #11
0
    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)
Exemple #12
0
    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)
Exemple #13
0
    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)
Exemple #14
0
    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)
Exemple #15
0
    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)