Skip to content

Commit

Permalink
Convert the song background video code to the new module.
Browse files Browse the repository at this point in the history
  • Loading branch information
stump committed Nov 27, 2010
1 parent 0567644 commit 2ba0fcd
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 42 deletions.
37 changes: 16 additions & 21 deletions src/GuitarScene.py
Expand Up @@ -1309,22 +1309,17 @@ def __init__(self, engine, libraryName, songName):

# evilynux - Load stage background(s)
if self.stage.mode == 3:
if Stage.videoAvailable:
songVideo = None
if self.song.info.video is not None:
songVideo = self.song.info.video
songVideoStartTime = self.song.info.video_start_time
songVideoEndTime = self.song.info.video_end_time
if songVideoEndTime == -1:
songVideoEndTime = None
self.stage.loadVideo(self.libraryName, self.songName,
songVideo = songVideo,
songVideoStartTime = songVideoStartTime,
songVideoEndTime = songVideoEndTime)
else:
Log.warn("Video playback is not supported. GStreamer or its python bindings can't be found")
self.engine.config.set("game", "stage_mode", 1)
self.stage.mode = 1
songVideo = None
if self.song.info.video is not None:
songVideo = self.song.info.video
songVideoStartTime = self.song.info.video_start_time
songVideoEndTime = self.song.info.video_end_time
if songVideoEndTime == -1:
songVideoEndTime = None
self.stage.loadVideo(self.libraryName, self.songName,
songVideo = songVideo,
songVideoStartTime = songVideoStartTime,
songVideoEndTime = songVideoEndTime)

self.stage.load(self.libraryName, self.songName, self.playerList[0].practiceMode)

Expand Down Expand Up @@ -1757,7 +1752,7 @@ def freeResources(self):
if self.coOpType:
self.coOpScoreCard.lastNoteEvent = None

if self.stage.mode == 3 and Stage.videoAvailable:
if self.stage.mode == 3:
self.engine.view.popLayer(self.stage.vidPlayer)

def getHandicap(self):
Expand Down Expand Up @@ -3895,14 +3890,14 @@ def endPick(self, num):
self.scoring[num].addScore(scoreTemp)

def render3D(self):
if self.stage.mode == 3 and Stage.videoAvailable:
if self.stage.mode == 3:
if self.countdown <= 0:
if self.pause == True or self.failed == True:
self.stage.vidPlayer.paused = True
self.stage.vidPlayer.pause()
else:
self.stage.vidPlayer.paused = False
self.stage.vidPlayer.play()
else:
self.stage.vidPlayer.paused = True
self.stage.vidPlayer.pause()

self.stage.render(self.visibility)

Expand Down
32 changes: 11 additions & 21 deletions src/Stage.py
Expand Up @@ -34,12 +34,8 @@
from Language import _
import math

try:
from VideoPlayer import VideoPlayer
videoAvailable = True
except:
videoAvailable = False

from VideoPlayer import VideoLayer, VideoPlayerError

import Rockmeter #blazingamer - new 4.0 code for rendering rockmeters through stage.ini


Expand Down Expand Up @@ -356,8 +352,6 @@ def get(value, type = str, default = None):

def loadVideo(self, libraryName, songName, songVideo = None,
songVideoStartTime = None, songVideoEndTime = None):
if not videoAvailable:
raise NameError('Video (gstreamer) is not available!')
self.vidSource = None
if self.songStage == 1:
songAbsPath = os.path.join(libraryName, songName)
Expand All @@ -383,26 +377,22 @@ def loadVideo(self, libraryName, songName, songVideo = None,
self.mode = 1 # Fallback
self.vidSource = None
return

winWidth, winHeight = (self.engine.view.geometry[2],
self.engine.view.geometry[3])
Log.debug("Attempting to load video: %s" % self.vidSource)

try: # Catches invalid video files or unsupported formats
Log.debug("Attempting to load video: %s" % self.vidSource)
self.vidPlayer = VideoPlayer(-1, self.vidSource, (winWidth, winHeight),
mute = True, loop = True,
startTime = songVideoStartTime,
endTime = songVideoEndTime)
self.vidPlayer = VideoLayer(self.engine, self.vidSource,
mute = True, loop = True,
startTime = songVideoStartTime,
endTime = songVideoEndTime)
self.engine.view.pushLayer(self.vidPlayer)
self.vidPlayer.paused = True
except:
except (IOError, VideoPlayerError):
self.mode = 1
Log.warn("Failed to load video, fallback to default stage mode.")
Log.error("Failed to load song video (falling back to default stage mode):")

def restartVideo(self):
if not videoAvailable or not self.mode == 3:
if not self.mode == 3:
return
self.vidPlayer.loadVideo(self.vidSource)
self.vidPlayer.restart()

def load(self, libraryName, songName, practiceMode = False):
rm = os.path.join("themes", self.themename, "rockmeter.ini")
Expand Down

0 comments on commit 2ba0fcd

Please sign in to comment.