def __init__(self, guitarScene, configFileName, coOp=False): self.scene = guitarScene self.engine = guitarScene.engine self.layers = {} #collection of all the layers in the rockmeter self.layersForRender = { } #collection of layers that are rendered separate from any group self.layerGroups = {} #collection of layer groups self.sharedLayerGroups = {} self.sharedLayers = {} #these layers are for coOp use only self.sharedLayersForRender = {} self.sharedGroups = {} self.coOp = coOp self.config = LinedConfigParser() self.config.read(configFileName) self.themename = self.engine.data.themeLabel try: themepath = os.path.join(Version.dataPath(), "themes", self.themename) fp, pathname, description = imp.find_module( "CustomRMLayers", [themepath]) self.customRMLayers = imp.load_module("CustomRMLayers", fp, pathname, description) except ImportError: self.customRMLayers = None log.notice("Custom Rockmeter layers are not available") # Build the layers for i in range(Rockmeter._layerLimit): types = ["Image", "Text", "Circle", "Custom"] for t in types: self.section = "layer%d:%s" % (i, t) if not self.config.has_section(self.section): continue else: if t == types[1]: self.createFont(self.section, i) elif t == types[2]: self.createCircle(self.section, i) elif t == types[3]: self.createCustom(self.section, i) else: self.createImage(self.section, i) break for i in range(Rockmeter._groupLimit): self.section = "Group%d" % i if not self.config.has_section(self.section): continue else: self.createGroup(self.section, i) self.reset()
def __init__(self, guitarScene, configFileName): self.scene = guitarScene self.engine = guitarScene.engine self.config = LinedConfigParser() self.backgroundLayers = [] self.foregroundLayers = [] self.textures = {} self.reset() self.wFull = None #MFH - needed for new stage background handling self.hFull = None # evilynux - imported myfingershurt stuff from GuitarScene self.mode = self.engine.config.get("game", "stage_mode") self.songStage = self.engine.config.get("game", "song_stage") self.animatedFolder = self.engine.config.get("game", "animated_stage_folder") # evilynux - imported myfingershurt stuff from GuitarScene w/ minor modifs #MFH TODO - alter logic to accommodate separated animation and slideshow # settings based on selected animated stage folder animationMode = self.engine.config.get("game", "stage_animate") slideShowMode = self.engine.config.get("game", "rotate_stages") if self.animatedFolder == _("None"): self.rotationMode = 0 #MFH: if no animated stage folders are available, disable rotation. elif self.animatedFolder == "Normal": self.rotationMode = slideShowMode else: self.rotationMode = animationMode self.imgArr = [] #QQstarS:random self.imgArrScaleFactors = [] #MFH - for precalculated scale factors self.rotateDelay = self.engine.config.get( "game", "stage_rotate_delay" ) #myfingershurt - user defined stage rotate delay self.animateDelay = self.engine.config.get( "game", "stage_animate_delay" ) #myfingershurt - user defined stage rotate delay self.animation = False self.indexCount = 0 #QQstarS:random time counter self.arrNum = 0 #QQstarS:random the array num self.arrDir = 1 #forwards self.config.read(configFileName) # evilynux - Improved stage error handling self.themename = self.engine.data.themeLabel self.path = os.path.join("themes", self.themename, "backgrounds") self.pathfull = self.engine.getPath(self.path) if not os.path.exists(self.pathfull): # evilynux log.warning("Stage folder does not exist: %s" % self.pathfull) self.mode = 1 # Fallback to song-specific stage self.loadLayers(configFileName)