Ejemplo n.º 1
0
class WaterBar(NodePath):

    def __init__(self):
        NodePath.__init__(self, 'waterBar')
        
        self.range = 100
        self.value = 100
        
        self.back = OnscreenImage("phase_14/maps/backv2.png", scale = (0.289, 1, 0.813), parent = self)
        self.bar = OnscreenImage("phase_14/maps/frontv2.png", scale = (0.233, 1, 0.740), parent = self)
        self.setTransparency(1)
        
        barSh = loader.loadShader("shaders/progress_bar.sha")
        self.bar.setShader(barSh)
        self.bar.setShaderInput("tex", loader.loadTexture("phase_14/maps/frontv2.png"))
        self.bar.setShaderInput("perct", float(self.value) / float(self.range))
        self.bar.setShaderInput("dir", 0)
        self.bar.setShaderInput("alpha", 1.0)
        
        self.task = taskMgr.add(self.__update, "WaterBar.update")
        
    def removeNode(self):
        self.task.remove()
        self.task = None
        self.back.destroy()
        self.back = None
        self.bar.destroy()
        self.bar = None
        self.range = None
        self.value = None
        NodePath.removeNode(self)
        
    def setDirection(self, dir):
        self.bar.setShaderInput("dir", dir)
        
    def setBarAlpha(self, alpha):
        self.bar.setShaderInput("alpha", alpha)
        
    def __update(self, task):
        self.bar.setShaderInput("perct", float(self.value) / float(self.range))
        
        return task.cont