def displayPacks(self, numPages=1, page=0):
        self.disp.clearScreen()
        self.disp.displayHeader("Data Packs")

        startOptions = page * 9
        endOptions = 9 + (page * 9)

        listOfOptions = self.dataPackSettings["packsToLoad"][
            startOptions:endOptions]
        firstOption = listOfOptions.pop(0)
        enabled = "ENABLED" if firstOption[1] else "DISABLED"
        firstOption = loadJson(self.dataPackSettings["folder"] +
                               firstOption[0] + "/meta.json")
        packName = firstOption["name"]
        packDesc = firstOption["desc"]
        packAuth = firstOption["author"]
        packType = firstOption["packType"].upper()

        self.disp.display(f'1. {packName:<50} {enabled:>18}')
        self.disp.display(f'\tPack Type: {packType}', 0)
        self.disp.display(f'\t{packDesc}', 0)
        self.disp.display(f'\tBy: {packAuth}', 0)

        i = 1

        for pack in listOfOptions:
            i += 1
            enabled = "ENABLED" if pack[1] else "DISABLED"
            pack = loadJson(self.dataPackSettings["folder"] + pack[0] +
                            "meta.json")
            packName = pack["name"]
            packDesc = pack["desc"]
            packAuth = pack["author"]

            self.disp.display(f'{i}. {packName:<50} {enabled:>18}')
            self.disp.display(f'\t{packDesc}', 0)
            self.disp.display(f'\tBy {packAuth}', 0)
        self.disp.display(
            "Input pack # to toggle. Changes to enabled data packs take effect on screen exit."
        )
        pagebreak = 1
        if page < numPages:
            self.disp.display("12. for next page of settings")
            pagebreak = 0
        if page > 0:
            self.disp.display("11. for previous page of settings", pagebreak)
            pagebreak = 0
        self.disp.display("0. to exit", pagebreak)
        self.disp.closeDisplay()

        return listOfOptions
Пример #2
0
 def loadAllDataFiles(self):
     print("Loading Datapack...")
     print("\tLoading Tilesets...")
     for tileset in self.metadata["Tiles"]:
         print("\t\t{}".format(tileset))
         tileFolder = self.metadata["TileFolder"]
         loadString = "{}{}{}.json".format(self.folder, tileFolder, tileset)
         tilesetfile = loadJson(loadString)
         for tile in tilesetfile["Tiles"]:
             self.tiles[tile["tileid"]] = tile
     print("\tLoading Regions...")
     for region in self.metadata["Regions"]:
         print("\t\t{}".format(region))
         regionFolder = self.metadata["RegionFolder"]
         loadString = "{}{}{}.json".format(self.folder, regionFolder,
                                           region)
         self.regions[region] = loadJson(loadString)
     print("\tLoading Procs...")
     for proc in self.metadata["Procs"]:
         print("\t\t{}".format(region))
         procFolder = self.metadata["ProcFolder"]
         loadString = "{}{}{}.json".format(self.folder, procFolder, proc)
         self.procs[proc] = loadJson(loadString)
     print("Finished loading datapack files.")
Пример #3
0
    def __init__(self, settings, debug=False):

        self.settings = settings
        self.debug = debug

        # Get some display variables
        self.mapSettings = settings.getSetting("MapScreen")
        self.mapWidth = self.mapSettings["ScreenWidth"]
        self.mapHeight = self.mapSettings["ScreenWidth"]
        self.hudSettings = settings.getSetting("HUDScreen")
        self.hudWidth = self.hudSettings["ScreenWidth"]
        self.hudHeight = self.hudSettings["ScreenWidth"]
        self.toastSettings = settings.getSetting("ToastScreen")
        self.toastWidth = self.toastSettings["ScreenWidth"]
        self.toastHeight = self.toastSettings["ScreenHeight"]

        # Create the toasting object
        self.toaster = ToastObject(self.toastHeight, self.toastWidth)

        # Get data pack info
        resFolder = self.settings.getSetting("ResourceFolder")
        dataPackFolder = "{}{}/".format(
            resFolder, self.settings.getSetting("DefaultDataPack"))
        dataPackMetaFile = "{}meta.json".format(dataPackFolder)
        loadedDataPackMetaFile = loadJson(dataPackMetaFile)
        dataPackInfo = DatapackObject(loadedDataPackMetaFile, dataPackFolder)

        # Create the gamemap
        self.gameMap = MapObject(dataPackInfo, self.mapWidth, self.mapHeight)
        self.gameMap.generateRegion()

        # Create the player
        playername = self.settings.getSetting("DefaultPlayerName")
        self.player = PlayerObject(playername)
        self.player.coordX = int(self.mapWidth / 2) - 1
        self.player.coordY = int(self.mapHeight / 2) - 1

        self.toDraw = []
        self.backlog = []

        self.toaster.toast("Welcome to Roguelike Me")
        self.toaster.toast("This game is an obvious work in progress.")
Пример #4
0
    saveJson(settingsFile, game.settings)
    game.initialLoad(RES_FOLDER, SETTINGS)


def openDataPacks(game, settingsFile):
    game.openDataPacks()
    saveJson(settingsFile, game.settings)
    game.initialLoad(RES_FOLDER, SETTINGS)


# This code runs with main.py is opened
if __name__ == "__main__":
    # Loads some resource stuff
    RES_FOLDER = "res/"
    SETTINGS_FILE = RES_FOLDER + "settings.json"
    SETTINGS = loadJson("{}".format(SETTINGS_FILE))

    # Inital game / menu loading
    game = Game()
    game.initialLoad(RES_FOLDER, SETTINGS)

    appRunning = True
    while appRunning and game.disp.window_is_open:
        game.displayMainMenu()
        try:
            # cmd = int(input())
            cmd = game.disp.get_input(True)
            print(cmd)
        except ValueError:
            cmd = -1
        except:
    def initialLoad(self, folder="res/", settingsdata={}):
        '''This does all of the heavy duty loading. Once this is complete, all
        game data is loaded until the game is closed, which cuts down on load
        times.'''
        self.cleanDataPackInfo()

        global DELAY, DEBUG, EVENTDELAY
        self.settings = settingsdata
        self.loadGameSettings()
        DELAY = self.settings["DELAY"]
        EVENTDELAY = self.settings["EVENTDELAY"]
        DEBUG = self.settings["DEBUG"]
        DISPLAYSETTINGS = self.settings["DISPLAYSETTINGS"]
        DEBUGDISPLAY = self.gameSettings["DEBUGDISPLAY"]

        # Set up the display with a delay and whether or not to debug
        if not self.displayIsInitialized:
            self.disp.initiate_window(
                f'Project: EMPTY v{self.settings["VERSION"]}', DISPLAYSETTINGS,
                DELAY, self.gameSettings["DELAYENABLED"], DEBUGDISPLAY)
            self.displayIsInitialized = True
        else:
            self.disp.set_settings(DISPLAYSETTINGS, DELAY,
                                   self.gameSettings["DELAYENABLED"],
                                   DEBUGDISPLAY)

        self.loadDataPackSettings()
        packs = self.dataPackSettings["packsToLoad"]
        self.starter = self.dataPackSettings["start"]
        print("\nLoading assets...")

        for pack in packs:
            if pack[1]:
                pack = pack[0]

                print("Loading pack \"{}\"...".format(pack))
                self.packs[pack] = loadJson("%s%s/meta.json" % (folder, pack))

                if "gameLogo" in self.packs[pack].keys():
                    self.logos.append(self.packs[pack]["gameLogo"])
                if "gameDesc" in self.packs[pack].keys():
                    for desc in self.packs[pack]["gameDesc"]:
                        self.descs.append(desc)

                # Asset loading
                for w in self.packs[pack]["weapons"]:
                    self.weapons[w] = loadJson("%s%s/weapons/%s.json" %
                                               (folder, pack, w))
                    self.disp.dprint("Loaded asset %s" % w)
                for a in self.packs[pack]["armor"]:
                    self.armor[a] = loadJson("%s%s/armor/%s.json" %
                                             (folder, pack, a))
                    self.disp.dprint("Loaded asset %s" % a)
                for m in self.packs[pack]["misc"]:
                    self.misc[m] = loadJson("%s%s/misc/%s.json" %
                                            (folder, pack, m))
                    self.disp.dprint("Loaded asset %s" % m)
                for a in self.packs[pack]["areas"]:
                    self.areas[a] = loadJson("%s%s/areas/%s.json" %
                                             (folder, pack, a))
                    self.disp.dprint("Loaded asset %s" % a)
                for r in self.packs[pack]["races"]:
                    raceData = loadJson("%s%s/races/%s.json" %
                                        (folder, pack, r))
                    self.races[raceData["id"]] = raceData
                    self.disp.dprint("Loaded asset %s" % r)
                for n in self.packs[pack]["npcs"]:
                    self.npcs[n] = loadJson("%s%s/npcs/%s.json" %
                                            (folder, pack, n))
                    self.disp.dprint("Loaded asset %s" % n)
                for e in self.packs[pack]["enemies"]:
                    self.enemies[e] = loadJson("%s%s/enemies/%s.json" %
                                               (folder, pack, e))
                    self.disp.dprint("Loaded asset %s" % e)
                for q in self.packs[pack]["quests"]:
                    self.quests[q] = loadJson("%s%s/quests/%s.json" %
                                              (folder, pack, q))
                    self.disp.dprint("Loaded asset %s" % q)
                for e in self.packs[pack]["events"]:
                    self.events[e] = loadJson("%s%s/events/%s.json" %
                                              (folder, pack, e))
                    self.disp.dprint("Loaded asset %s" % e)
                for m in self.packs[pack]["modifiers"]:
                    mods = loadJson("%s%s/%s.json" % (folder, pack, m))
                    for mod in mods.keys():
                        self.modifiers[mod] = Modifier(mod, mods[mod])
                print("Finished loading assets.")

        # Adds all loaded quests into a list of possible quests, as well as
        # loads thems into actual objects
        for quest in self.quests.keys():
            self.possibleQuests.append(Quest(self.quests[quest]))
        if DEBUG:
            for q in self.possibleQuests:
                self.disp.dprint(q)

        self.loadStartingArea()

        # Sets up the player variables and also gives the player some starting gear.
        # Spawns in an extra weapon for the player to switch between.
        self.loadPlayer()
        self.loaded = True
 def __init__(self, fileLoc, loadResFolder=True):
     print("Loading settings from {}".format(fileLoc))
     self.parsed = loadJson(fileLoc)
     if loadResFolder:
         self.resourceFolder = self.parsed["ResourceFolder"]