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