def __init__(self, tsrd): check_rpg_saves() mymenu = pbge.rpgmenu.Menu( self.MENU_COLUMN.dx, self.MENU_COLUMN.dy, self.MENU_COLUMN.w, self.MENU_COLUMN.h, predraw=tsrd, font=pbge.my_state.huge_font, ) mymenu.descobj = self self.myportraits = dict() self.current_version = self._string_to_major_version(VERSION) rc = pygame.image.load(pbge.util.image_dir("sys_roundedcorners.png")) rcdest = pygame.Rect(0, 0, 480, 360) for args in valid_saves: mymenu.add_item(args[3].name, args[3], desc=args) self.myportraits[args] = args[3].pc.get_portrait() if args[2]: args[2].blit(rc, rcdest) args[2].convert_alpha() args[2].set_colorkey((0, 0, 255)) if not mymenu.items: mymenu.add_item('[No campaigns found]', None, desc=None) mymenu.sort() camp = mymenu.query() if camp: pbge.please_stand_by() # See note above for why the deepcopy is here. TLDR: keeping pickles fresh and delicious. camp = copy.deepcopy(camp) camp.play()
def load_game(tsrd): myfiles = glob.glob(pbge.util.user_dir("rpg_*.sav")) mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font ) for fname in myfiles: #with open(fname, "rb") as f: # # See note above for why the deepcopy is here. TLDR: keeping pickles fresh and delicious. # camp = copy.deepcopy(cPickle.load(f)) start_index = fname.find("rpg_") mymenu.add_item(fname[start_index+4:-4], fname) if not mymenu.items: mymenu.add_item('[No campaigns found]', None) mymenu.sort() fname = mymenu.query() if fname: pbge.please_stand_by() with open(fname, "rb") as f: # See note above for why the deepcopy is here. TLDR: keeping pickles fresh and delicious. camp = copy.deepcopy(pickle.load(f)) camp.play()
def import_arena_character(tsrd): pbge.please_stand_by() myfiles = gears.oldghloader.GH1Loader.seek_gh1_files() mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font) for f in myfiles: try: mygears = gears.oldghloader.GH1Loader(f) mygears.load() egg = mygears.get_egg() mymenu.add_item(str(egg.pc), egg) except Exception as e: pbge.alert("Warning: File {} can't be parsed. {}".format(f, e)) mymenu.sort() if not mymenu.items: mymenu.add_item('[No GH1 characters found]', None) myegg = mymenu.query() if myegg: myegg.save() pbge.BasicNotification("{} has been imported.".format(myegg.pc.name))
def play_the_game(): try: # running in a bundle gamedir = sys._MEIPASS except Exception: # running live gamedir = os.path.dirname(__file__) #print '"'+gamedir+'"' pbge.init('GearHead Caramel', 'ghcaramel', gamedir, poster_pattern='eyecatch_*.png') pbge.please_stand_by() gears.init_gears() tsrd = TitleScreenRedraw() mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font) mymenu.add_item("Start Game", start_game) mymenu.add_item("Import GH1 Character", import_arena_character) mymenu.add_item("Config Options", open_config_menu) mymenu.add_item("Quit", None) action = True while action: pbge.my_state.start_music(TITLE_THEME) action = mymenu.query() if action: action(tsrd)
def prep_eggs_for_steam(tsrd): if not pickle.HIGHEST_PROTOCOL > 4: pbge.my_state.view = tsrd pbge.alert( "Can't prep eggs for Steam since the version of GearHead Caramel you're running appears to be the Steam version. You need to do this from a non-Steam build." ) return pbge.please_stand_by() myfiles = glob.glob(pbge.util.user_dir("egg_*.sav")) for fname in myfiles: try: with open(fname, "rb") as f: # Why deepcopy the freshly loaded pickle? Because that will update any gears involved # to the latest version, and at this point in time it'll hopefully keep save games working # despite rapid early-development changes. egg = copy.deepcopy(pickle.load(f)) egg.save() except Exception as err: print(err) myfiles = glob.glob(pbge.util.user_dir("rpg_*.sav")) for fname in myfiles: try: args = gears.GearHeadCampaign.load(fname) args[-1].save() except Exception as err: print(err)
def start_campaign(pc_egg, adv_type="SCENARIO_DEADZONEDRIFTER"): pbge.please_stand_by() camp = content.narrative_convenience_function(pc_egg, adv_type=adv_type) if camp: camp.place_party() camp.save() camp.play()
def play_the_game(): try: # running in a bundle gamedir = sys._MEIPASS except Exception: # running live gamedir = os.path.dirname(__file__) # print '"'+gamedir+'"' pbge.init('GearHead Caramel', 'ghcaramel', gamedir, poster_pattern='eyecatch_*.png') pbge.please_stand_by() gears.init_gears() game.init_game() #myfoo = game.content.ghplots.test.Foo() #with open(pbge.util.user_dir('bar.p'), "wb") as f: # pickle.dump(myfoo, f, -1) #with open(pbge.util.user_dir('bar.p'), "rb") as f: # foo2 = pickle.load(f) # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta),flags=pygame.RLEACCELOK)""",setup='import pygame, pbge, gears',number=10) # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta))""",setup='import pbge, gears',number=10) #mypic = pbge.image.Image('Zerosaiko.png',color=gears.factions.ProDuelistAssociation.mecha_colors) #mydest = pygame.Surface((mypic.frame_width, mypic.frame_height)) #mydest.fill((0, 0, 255)) #mypic.render((0,0),dest_surface=mydest) #pygame.image.save(mydest, pbge.util.user_dir("out_Kerebos.png")) # mypor = gears.portraits.Portrait() # mypor.bits = ["FBA NoBody","Haywire B3 Head"] # mypic = mypor.build_portrait(None,False,True) # pygame.image.save(mypic.bitmap, pbge.util.user_dir("out.png")) tsrd = TitleScreenRedraw() mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font ) mymenu.add_item("Load Campaign", load_game) mymenu.add_item("Start Campaign", start_game) mymenu.add_item("Create Character", open_chargen_menu) mymenu.add_item("Import GH1 Character", import_arena_character) mymenu.add_item("Config Options", open_config_menu) mymenu.add_item("Browse Mecha", game.mechabrowser.MechaBrowser()) mymenu.add_item("Edit Mecha", game.geareditor.LetsEditSomeMeks) if pbge.util.config.getboolean("GENERAL", "dev_mode_on"): mymenu.add_item("Eggzamination", game.devstuff.Eggzaminer) mymenu.add_item("Quit", None) action = True while action: pbge.my_state.start_music(TITLE_THEME) action = mymenu.query() if action: action(tsrd)
def __init__(self, camp: gears.GearHeadCampaign): pbge.please_stand_by() self.camp = camp self.scene = camp.scene self.view = scenes.viewer.SceneView(camp.scene) self.mapcursor = pbge.image.Image('sys_mapcursor.png', 64, 64) self.time = 0 self.threat_tiles = set() self.threat_viewer = pbge.scenes.areaindicator.AreaIndicator( "sys_threatarea.png") self.record_count = 0 # Preload some portraits and sprites. self.preloads = list() for pc in self.scene.contents: if hasattr(pc, 'get_portrait'): self.preloads.append(pc.get_portrait()) if hasattr(pc, 'get_pilot'): pcp = pc.get_pilot() if pcp and pcp is not pc and hasattr(pcp, 'get_portrait'): self.preloads.append(pcp.get_portrait()) if hasattr(pc, 'get_sprite'): self.preloads.append(pc.get_sprite()) # Preload the music as well. if pbge.util.config.getboolean("GENERAL", "music_on"): if hasattr(self.scene, 'exploration_music'): pbge.my_state.locate_music(self.scene.exploration_music) if hasattr(self.scene, 'combat_music'): pbge.my_state.locate_music(self.scene.combat_music) # Update the view of all party members. first_pc = None for pc in camp.get_active_party(): if pc.pos and pc.is_operational(): x, y = pc.pos scenes.pfov.PCPointOfView( camp.scene, x, y, pc.get_sensor_range(self.scene.scale)) if not first_pc: first_pc = pc # Focus on the first PC. if first_pc: x, y = first_pc.pos self.view.focus(x, y) # Make sure all graphics are updated. for thing in self.scene.contents: if hasattr(thing, 'update_graphics'): thing.update_graphics() # Save the game, if the config says to. if pbge.util.config.getboolean("GENERAL", "auto_save"): camp.save()
def check_rpg_saves(): pbge.please_stand_by() quarantined_files.clear() valid_saves.clear() myfiles = glob.glob(pbge.util.user_dir("rpg_*.sav")) for fname in myfiles: try: args = gears.GearHeadCampaign.load(fname) valid_saves.append(args) except Exception as err: print(err) quarantined_files.append(fname)
def play_the_game(): try: # running in a bundle gamedir = sys._MEIPASS except Exception: # running live gamedir = os.path.dirname(__file__) # print '"'+gamedir+'"' pbge.init('GearHead Caramel', 'ghcaramel', gamedir, poster_pattern='eyecatch_*.png') pbge.please_stand_by() gears.init_gears() game.content.backstory.init_backstory() # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta),flags=pygame.RLEACCELOK)""",setup='import pygame, pbge, gears',number=10) # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta))""",setup='import pbge, gears',number=10) #mypic = pbge.image.Image('SHD_22C_Dielancer.png',color=list(gears.factions.BladesOfCrihna.mecha_colors)) #mydest = pygame.Surface((mypic.frame_width, mypic.frame_height)) #mydest.fill((0, 0, 255)) #mypic.render((0,0),dest_surface=mydest) #pygame.image.save(mydest, pbge.util.user_dir("out.png")) # mypor = gears.portraits.Portrait() # mypor.bits = ["FBA NoBody","Haywire B3 Head"] # mypic = mypor.build_portrait(None,False,True) # pygame.image.save(mypic.bitmap, pbge.util.user_dir("out.png")) tsrd = TitleScreenRedraw() mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font) mymenu.add_item("Load Campaign", load_game) mymenu.add_item("Start Campaign", start_game) mymenu.add_item("Create Character", open_chargen_menu) mymenu.add_item("Import GH1 Character", import_arena_character) mymenu.add_item("Config Options", open_config_menu) mymenu.add_item("Browse Mecha", game.mechabrowser.MechaBrowser()) mymenu.add_item("Edit Mecha", game.geareditor.LetsEditSomeMeks) mymenu.add_item("Quit", None) action = True while action: pbge.my_state.start_music(TITLE_THEME) action = mymenu.query() if action: action(tsrd)
def start_campaign(pc_egg, redrawer): mymenu = AdventureMenu(pc_egg, redrawer) adv_type = mymenu() if adv_type: pbge.please_stand_by() camp = content.narrative_convenience_function(pc_egg, adv_type=adv_type.LABEL) if camp: camp.place_party() camp.save() camp.play()
def __init__( self, camp ): pbge.please_stand_by() self.camp = camp self.scene = camp.scene self.view = scenes.viewer.SceneView( camp.scene ) self.mapcursor = pbge.image.Image('sys_mapcursor.png',64,64) self.time = 0 # Preload some portraits and sprites. self.preloads = list() for pc in self.scene.contents: if hasattr(pc,'get_portrait'): self.preloads.append(pc.get_portrait()) if hasattr(pc,'get_pilot'): pcp = pc.get_pilot() if pcp and pcp is not pc and hasattr(pcp,'get_portrait'): self.preloads.append(pcp.get_portrait()) if hasattr(pc,'get_sprite'): self.preloads.append(pc.get_sprite()) # Preload the music as well. if pbge.util.config.getboolean( "GENERAL", "music_on" ): if hasattr( self.scene, 'exploration_music'): pbge.my_state.locate_music(self.scene.exploration_music) if hasattr( self.scene, 'combat_music'): pbge.my_state.locate_music(self.scene.combat_music) # Update the view of all party members. first_pc = None for pc in camp.get_active_party(): if pc.pos and pc.is_operational(): x,y = pc.pos scenes.pfov.PCPointOfView( camp.scene, x, y, pc.get_sensor_range(self.scene.scale) ) if not first_pc: first_pc = pc # Focus on the first PC. if first_pc: x,y = first_pc.pos self.view.focus( x, y ) # Make sure all graphics are updated. for thing in self.scene.contents: if hasattr(thing,'update_graphics'): thing.update_graphics()
def start_campaign(pc_egg, redrawer, version): mymenu = AdventureMenu(pc_egg, redrawer) adv_type = mymenu() if adv_type: pbge.please_stand_by() camp = content.narrative_convenience_function(pc_egg, adv_type=adv_type.LABEL) if camp: camp.version = version camp._really_go() camp.save() if not pbge.util.config.getboolean("GENERAL", "dev_mode_on"): pc_egg.backup() os.remove( pbge.util.user_dir("egg_{}.sav".format(pc_egg.pc.name))) camp.play()
def __init__(self, camp): pbge.please_stand_by() self.camp = camp self.scene = camp.scene self.view = scenes.viewer.SceneView(camp.scene) self.mapcursor = pbge.image.Image('sys_mapcursor.png', 64, 64) # Preload some portraits and sprites. self.preloads = list() for pc in self.scene.contents: if hasattr(pc, 'get_portrait'): self.preloads.append(pc.get_portrait()) if hasattr(pc, 'get_pilot'): pcp = pc.get_pilot() if pcp and pcp is not pc and hasattr(pcp, 'get_portrait'): self.preloads.append(pcp.get_portrait()) if hasattr(pc, 'get_sprite'): self.preloads.append(pc.get_sprite()) # Preload the music as well. if pbge.util.config.getboolean("DEFAULT", "music_on"): if hasattr(self.scene, 'exploration_music'): pbge.my_state.locate_music(self.scene.exploration_music) if hasattr(self.scene, 'combat_music'): pbge.my_state.locate_music(self.scene.combat_music) # Update the view of all party members. first_pc = None for pc in camp.party: if pc.pos and pc.is_operational() and pc in self.scene.contents: x, y = pc.pos scenes.pfov.PCPointOfView( camp.scene, x, y, pc.get_sensor_range(self.scene.scale)) if not first_pc: first_pc = pc # Focus on the first PC. if first_pc: x, y = first_pc.pos self.view.focus(x, y)
# source, running from a PyInstaller build, or running from a cx_Freeze build. if getattr(sys, "_MEIPASS", False): # PyInstaller build. gamedir = sys._MEIPASS elif getattr(sys, "frozen", False): # cx_Freeze build. gamedir = os.path.dirname(sys.executable) else: # The application is not frozen gamedir = os.path.dirname(__file__) pbge.init('GearHead Caramel', 'ghcaramel', gamedir, poster_pattern='eyecatch_*.png') pbge.please_stand_by() import game import pygame import gears import random # import timeit import glob import pickle import copy import math import logging import traceback VERSION = "v0.926"
def play_the_game(): # Step one is to find our gamedir. The process is slightly different depending on whether we are running from # source, running from a PyInstaller build, or running from a cx_Freeze build. if getattr(sys, "_MEIPASS", False): # PyInstaller build. gamedir = sys._MEIPASS elif getattr(sys, "frozen", False): # cx_Freeze build. gamedir = os.path.dirname(sys.executable) else: # The application is not frozen gamedir = os.path.dirname(__file__) pbge.init('GearHead Caramel', 'ghcaramel', gamedir, poster_pattern='eyecatch_*.png') pbge.please_stand_by() gears.init_gears() game.init_game() #myfoo = game.content.ghplots.test.Foo() #with open(pbge.util.user_dir('bar.p'), "wb") as f: # pickle.dump(myfoo, f, -1) #with open(pbge.util.user_dir('bar.p'), "rb") as f: # foo2 = pickle.load(f) # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta),flags=pygame.RLEACCELOK)""",setup='import pygame, pbge, gears',number=10) # print timeit.timeit("""mypic = pbge.image.Image('mecha_buruburu.png',color=(gears.color.ArmyDrab,gears.color.ShiningWhite,gears.color.ElectricYellow,gears.color.GullGrey,gears.color.Terracotta))""",setup='import pbge, gears',number=10) #mypic = pbge.image.Image('Onawa.png',color=(gears.color.Viridian, gears.color.MediumSkin, gears.color.BlackRose, gears.color.AeroBlue, gears.color.AeroBlue)) #mydest = pygame.Surface((mypic.frame_width, mypic.frame_height)) #mydest.fill((0, 0, 25)) #mypic.render((0,0),dest_surface=mydest) #pygame.image.save(mydest, pbge.util.user_dir("out_Joust.png")) # mypor = gears.portraits.Portrait() # mypor.bits = ["FBA NoBody","Haywire B3 Head"] # mypic = mypor.build_portrait(None,False,True) # pygame.image.save(mypic.bitmap, pbge.util.user_dir("out.png")) tsrd = TitleScreenRedraw() mymenu = pbge.rpgmenu.Menu(TitleScreenRedraw.MENU_DEST.dx, TitleScreenRedraw.MENU_DEST.dy, TitleScreenRedraw.MENU_DEST.w, TitleScreenRedraw.MENU_DEST.h, predraw=tsrd, font=pbge.my_state.huge_font) mymenu.add_item("Load Campaign", load_game) mymenu.add_item("Start Campaign", start_game) mymenu.add_item("Create Character", open_chargen_menu) mymenu.add_item("Import GH1 Character", import_arena_character) mymenu.add_item("Config Options", open_config_menu) mymenu.add_item("Browse Mecha", game.mechabrowser.MechaBrowser()) mymenu.add_item("Edit Mecha", game.geareditor.LetsEditSomeMeks) mymenu.add_item("Edit Scenario", game.plotcreator.start_plot_creator) if pbge.util.config.getboolean("GENERAL", "dev_mode_on"): mymenu.add_item("Eggzamination", game.devstuff.Eggzaminer) mymenu.add_item("Quit", None) action = True while action: pbge.my_state.start_music(TITLE_THEME) action = mymenu.query() if action: action(tsrd)