Skip to content

Commit

Permalink
Remove the oneshot mode
Browse files Browse the repository at this point in the history
This mode is useless and do not work anyway.
  • Loading branch information
Linkid committed Nov 12, 2017
1 parent 3e21c1d commit 64d63e6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 173 deletions.
93 changes: 18 additions & 75 deletions FoFiX.py
Expand Up @@ -101,13 +101,6 @@ def cmd_args():
options.add_argument('-f', '--fullscreen', action='store_true', help='Force usage of full-screen mode.', default=None)
options.add_argument('-c', '--config', type=str, metavar='x', help='Use this configuration file instead of the fofix.ini in its default location. Use "reset" to use the usual fofix.ini but clear it first.')
options.add_argument('-t', '--theme', type=str, metavar='x', help='Force the specified theme to be used. Remember to quote the theme name if it contains spaces (e.g. %(prog)s -t "Guitar Hero III")', default=None)
options.add_argument('-s', '--song', type=str, help='Play a song in one-shot mode. (See "One-shot mode options" below.)')

osm = parser.add_argument_group('One-Shot Mode')
osm.add_argument('-p', '--part', type=int, help='0: Guitar, 1: Rhythm, 2: Bass, 3: Lead')
osm.add_argument('-d', '--diff', type=int, help='0: Expert, 1: Hard, 2: Medium, 3: Easy (Only applies if "part" is set)')
osm.add_argument('-m', '--mode', type=int, help='0: Quickplay, 1: Practice, 2: Career')
osm.add_argument('-n', '--players', type=int, help='Number of multiplayer players.')

adv = parser.add_argument_group('Advanced')
adv.add_argument('-v', '--verbose', action='store_true', help='Verbose messages')
Expand Down Expand Up @@ -156,15 +149,10 @@ def __init__(self):

# get args
self.args = cmd_args()
self.playing = self.args['song']
self.configFile = self.args['config']
self.fullscreen = self.args['fullscreen']
self.resolution = self.args['resolution']
self.theme = self.args['theme']
self.diff = self.args['diff']
self.part = self.args['part']
self.mode = self.args['mode']
self.players = self.args['players']

# disable pyOpenGL error checking if we are not asked for it.
# This must be before *anything* that may import pyOpenGL!
Expand All @@ -188,8 +176,6 @@ def __init__(self):

self.engine = GameEngine(self.config)

self.init_oneshot()

self.videoLayer = False
self.restartRequested = False

Expand All @@ -215,74 +201,31 @@ def load_config(configPath):

return config

def init_oneshot(self):
''' Determine if oneshot mode is valid. '''
# I think this code can be moved elsewhere...
self.engine.cmdPlay = 0

# Check for a valid invocation of one-shot mode.
if self.playing is not None:
log.debug('Validating song directory for one-shot mode.')

library = Config.get("setlist","base_library")
basefolder = os.path.join(Version.dataPath(),library,"songs",self.playing)


if not os.path.exists(os.path.join(basefolder, "song.ini")):

if not (os.path.exists(os.path.join(basefolder, "notes.mid")) or
os.path.exists(os.path.join(basefolder, "notes-unedited.mid"))):

if not (os.path.exists(os.path.join(basefolder, "song.ogg")) or
os.path.exists(os.path.join(basefolder, "guitar.ogg"))):

log.warn("Song directory provided ('%s') is not a valid song directory. Starting up FoFiX in standard mode." % self.playing)
self.engine.startupMessages.append(_("Song directory provided ('%s') is not a valid song directory. Starting up FoFiX in standard mode.") % self.playing)
return

# Set up one-shot mode
log.debug('Entering one-shot mode.')
Config.set("setlist", "selected_song", playing)

self.engine.cmdPlay = 1

if self.diff is not None:
self.engine.cmdDiff = int(self.diff)
if self.part is not None:
self.engine.cmdPart = int(self.part)

if self.players == 1:
self.engine.cmdMode = self.players, self.mode, 0
else:
self.engine.cmdMode = self.players, 0, self.mode

def restart(self):
log.notice("Restarting.")
self.engine.audio.close()
self.restartRequested = True

def run(self):

# Perhapse this could be implemented in a better way...
# Play the intro video if it is present, we have the capability, and
# we are not in one-shot mode.
if not self.engine.cmdPlay:
themename = Config.get("coffee", "themename")
vidSource = os.path.join(Version.dataPath(), 'themes', themename, 'menu', 'intro.ogv')
if os.path.isfile(vidSource):
try:
vidPlayer = VideoLayer(self.engine, vidSource, cancellable=True)
except (IOError, VideoPlayerError):
log.error("Error loading intro video:")
else:
vidPlayer.play()
self.engine.view.pushLayer(vidPlayer)
self.videoLayer = True
self.engine.ticksAtStart = pygame.time.get_ticks()
while not vidPlayer.finished:
self.engine.run()
self.engine.view.popLayer(vidPlayer)
self.engine.view.pushLayer(MainMenu(self.engine))
# Play the intro video if it is present, we have the capability
themename = Config.get("coffee", "themename")
vidSource = os.path.join(Version.dataPath(), 'themes', themename, 'menu', 'intro.ogv')
if os.path.isfile(vidSource):
try:
vidPlayer = VideoLayer(self.engine, vidSource, cancellable=True)
except (IOError, VideoPlayerError):
log.error("Error loading intro video:")
else:
vidPlayer.play()
self.engine.view.pushLayer(vidPlayer)
self.videoLayer = True
self.engine.ticksAtStart = pygame.time.get_ticks()
while not vidPlayer.finished:
self.engine.run()
self.engine.view.popLayer(vidPlayer)
self.engine.view.pushLayer(MainMenu(self.engine))

if not self.videoLayer:
self.engine.setStartupLayer(MainMenu(self.engine))

Expand Down
5 changes: 0 additions & 5 deletions fofix/core/GameEngine.py
Expand Up @@ -234,11 +234,6 @@ def __init__(self, config = None):
bufferSize = self.config.get("audio", "buffersize")
self.audio.open(frequency = frequency, bits = bits, stereo = stereo, bufferSize = bufferSize)

self.cmdPlay = 0
self.cmdMode = None
self.cmdDiff = None
self.cmdPart = None

self.gameStarted = False
self.world = None

Expand Down
12 changes: 1 addition & 11 deletions fofix/game/MainMenu.py
Expand Up @@ -330,16 +330,6 @@ def run(self, ticks):
if len(self.engine.startupMessages) > 0:
self.showStartupMessages = True

if self.engine.cmdPlay == 1:
self.engine.cmdPlay = 4
elif self.engine.cmdPlay == 4: #this frame runs the engine an extra loop to allow the font to load...
#evilynux - improve cmdline support
self.engine.cmdPlay = 2
players, mode1p, mode2p = self.engine.cmdMode
self.newLocalGame(players = players, mode1p = mode1p, mode2p = mode2p)
elif self.engine.cmdPlay == 3:
self.quit()

if (not self.engine.world) or (not self.engine.world.scene): #MFH
self.runMusic()

Expand Down Expand Up @@ -368,7 +358,7 @@ def render(self, visibility, topMost):
else:
drawImage(self.engine.data.loadingImage, (1.0,-1.0), (w/2, h/2), stretched = FULL_SCREEN)

if self.menu.active and self.engine.cmdPlay == 0:
if self.menu.active:
if self.background is not None:
#MFH - auto-scaling
drawImage(self.background, (1.0,-1.0), (w/2, h/2), stretched = FULL_SCREEN)
Expand Down
85 changes: 3 additions & 82 deletions fofix/game/SongChoosingScene.py
Expand Up @@ -103,15 +103,12 @@ def __init__(self, engine, libraryName = None, songName = None):
self.songLoader = None
self.loaded = False
text = _("Initializing Setlist...")
if self.engine.cmdPlay == 2:
text = _("Checking Command-Line Settings...")
elif len(self.engine.world.songQueue) > 0:
if len(self.engine.world.songQueue) > 0:
text = _("Checking Setlist Settings...")
elif len(self.engine.world.songQueue) == 0:
self.engine.world.playingQueue = False
self.splash = Dialogs.showLoadingSplashScreen(self.engine, text)
self.items = []
self.cmdPlay = False
self.queued = True

self.loadStartTime = time.time()
Expand Down Expand Up @@ -162,14 +159,7 @@ def __init__(self, engine, libraryName = None, songName = None):
self.showSortTiers = self.engine.theme.setlist.showSortTiers #whether or not to show sorting tiers - career tiers take precedence.
self.selectTiers = self.engine.theme.setlist.selectTiers #whether or not tiers should be selectable as a quick setlist.

if self.engine.cmdPlay == 2:
self.songName = Config.get("setlist", "selected_song")
self.libraryName = Config.get("setlist", "selected_library")
self.cmdPlay = self.checkCmdPlay()
if self.cmdPlay:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
return
elif len(self.engine.world.songQueue) > 0:
if len(self.engine.world.songQueue) > 0:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
return

Expand Down Expand Up @@ -407,70 +397,6 @@ def prepareSetlist(self, songs):
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
self.splash = None

def checkCmdPlay(self):
info = song.loadSongInfo(self.engine, self.songName, library = self.libraryName)
guitars = []
drums = []
vocals = []
autoPart = None
for part in info.parts:
if part.id == 4 or part.id == 7:
drums.append(part)
elif part.id == 5:
vocals.append(part)
else:
guitars.append(part)
if self.engine.cmdPlay == 2 and self.engine.cmdPart is not None and len(self.playerList) == 1:
if self.engine.cmdPart == part.id:
log.debug("Command-line mode: Part found!")
if part.id == 4 and self.engine.input.gameDrums > 0:
autoPart = part.id
elif part.id == 5 and self.engine.input.gameMics > 0:
autoPart = part.id
elif self.engine.input.gameGuitars > 0:
autoPart = part.id
if autoPart is None:
if len(drums) == 0 and self.engine.input.gameDrums > 0:
if self.splash:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
self.splash = None
Dialogs.showMessage(self.engine, _("There are no drum parts in this song. Change your controllers to play."))
if self.engine.cmdPlay == 2:
self.engine.cmdPlay = 0
return False
if len(guitars) == 0 and self.engine.input.gameGuitars > 0:
if self.splash:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
self.splash = None
Dialogs.showMessage(self.engine, _("There are no guitar parts in this song. Change your controllers to play."))
if self.engine.cmdPlay == 2:
self.engine.cmdPlay = 0
return False
if len(vocals) == 0 and self.engine.input.gameMics > 0:
if self.splash:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
self.splash = None
Dialogs.showMessage(self.engine, _("There are no vocal parts in this song. Change your controllers to play."))
if self.engine.cmdPlay == 2:
self.engine.cmdPlay = 0
return False
# Make sure the difficulty we chose is available
p = self.playerList[0].part
player = self.playerList[0]
if self.engine.cmdDiff is not None:
diff = song.difficulties[self.engine.cmdDiff]
if diff in info.partDifficulties[p.id]:
self.playerList[0].difficulty = diff
else:
self.playerList[0].difficulty = info.partDifficulties[p.id][0]
else:
if self.splash:
Dialogs.hideLoadingSplashScreen(self.engine, self.splash)
self.splash = None
self.playerList[0].difficulty = Dialogs.chooseItem(self.engine, info.partDifficulties[p.id],
"%s \n %s" % (song.removeSongOrderPrefixFromName(info.name), _("%s Choose a difficulty:") % player.name), selected = player.difficulty)
return True

def loadItemLabel(self, i, preload = False):
# Load the item label if it isn't yet loaded
item = self.items[i]
Expand Down Expand Up @@ -623,10 +549,8 @@ def startGame(self, fromQueue = False): #note this is not refined.
ready = False
while not ready:
ready = Dialogs.choosePartDiffs(self.engine, choose, info, self.players)
if not ready and not self.queued and not self.engine.cmdPlay:
if not ready and not self.queued:
return False
if self.engine.cmdPlay > 0:
self.engine.cmdPlay = 3
self.freeResources()
self.engine.world.createScene("GuitarScene", libraryName = self.libraryName, songName = self.songName)
self.gameStarted = True
Expand Down Expand Up @@ -898,9 +822,6 @@ def keyReleased(self, key):
self.scrolling = 0

def run(self, ticks):
if self.cmdPlay:
self.startGame()
return
if len(self.engine.world.songQueue) > 0 and self.queued:
self.startGame(fromQueue = True)
return
Expand Down

0 comments on commit 64d63e6

Please sign in to comment.