Exemple #1
0
def loading(*args):
    '''A context manager that shows a loading screen'''
    x = base.win.get_x_size() // 2
    y = base.win.get_y_size() // 2
    img = loader.load_texture('gui/loading.png')
    scale = (256, 0, 256)  #img size//2
    if ConfigVariableBool('framebuffer-srgb').getValue():
        tex_format = img.get_format()
        if tex_format == Texture.F_rgb:
            tex_format = Texture.F_srgb
        elif tex_format == Texture.F_rgba:
            tex_format = Texture.F_srgb_alpha
        img.set_format(tex_format)
    load_screen = OnscreenImage(image=img,
                                scale=scale,
                                pos=(x, 0, -y),
                                parent=pixel2d)
    load_screen.set_transparency(TransparencyAttrib.M_alpha)
    #render 3 frames because we may be in a threaded rendering pipeline
    #we render frames to make sure the load screen is shown
    base.graphicsEngine.renderFrame()
    base.graphicsEngine.renderFrame()
    base.graphicsEngine.renderFrame()
    try:
        yield
    finally:
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        load_screen.remove_node()
Exemple #2
0
def loading(*args):
    x = base.win.get_x_size() // 2
    y = base.win.get_y_size() // 2

    img = loader.load_texture('ui/loading.png')
    scale = (256, 0, 128)
    if ConfigVariableBool('framebuffer-srgb').getValue():
        tex_format = img.get_format()
        if tex_format == Texture.F_rgb:
            tex_format = Texture.F_srgb
        elif tex_format == Texture.F_rgba:
            tex_format = Texture.F_srgb_alpha
        img.set_format(tex_format)
    load_screen = OnscreenImage(image=img,
                                scale=scale,
                                pos=(x, 0, -y),
                                parent=pixel2d)
    #render 3 frames because we may be in a threded rendering pipeline
    #we render frames to make sure the load screen is shown
    base.graphicsEngine.renderFrame()
    base.graphicsEngine.renderFrame()
    base.graphicsEngine.renderFrame()
    try:
        yield
    finally:
        #render a few frames and fade out the loading screen
        for i in range(5):
            base.graphicsEngine.renderFrame()
            color = 1.0 - i / 5.0
            load_screen.set_color(color, color, color)
        load_screen.remove_node()
Exemple #3
0
class Level2:
    def __init__(self):
        self.text_pointers = []
        self.keyboard = Controller()
        
        base.cam2dp.node().getDisplayRegion(0).setSort(-20)
        self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF')
        self.p1 = player.Player()

    def start(self):
        # load
        self.level2 = loader.loadModel("models/CECUT.bam")
        self.level2.reparentTo(render)
        self.level2.setScale(1, 1, 1)
        self.level2.setPos(0,0, 0)

        # start
        camera.setPos(0.5,-8.5,4)
        camera.lookAt(self.level2)

        # start
        self.background = OnscreenImage(
            parent=render2dp, image="textures/Skunight.png")  # Load an image object

        color = (0.8, 0.8, 0.8)
        #self.linfog = Fog("Scene-wide exponential Fog object")
        #self.linfog.setColor(*color)
        #self.linfog.setLinearRange(0, 35)
        #self.linfog.setLinearFallback(45, 160, 320)
        #render.setFog(self.linfog)
        base.setBackgroundColor(*color)
        self.plight = PointLight("plight")
        self.plight.setColor((1, 1, 1, 1))
        self.plight.setAttenuation((1, 0, 1))

        self.buttons()
        self.text = OnscreenText(font=self.runner_font, text='Que concierto deseas que se presente en el sotano de las ruinas del CECUT?', scale=0.09, pos=[
            0, 0.5], fg=[240, 10, 10, 1], shadow=[0.5, 0.5, 0.5, 0.5], shadowOffset=(0.04, 0.04),wordwrap=20)
        
    def __del__(self):
        print('[*] Destructor called')

    def buttons(self):
        self.option1 = DirectButton(
            text=("Good Bunny"),
            text_font=self.runner_font,
            scale=0.1,
            pos=(-0, -5, -0.75),
            frameTexture=None,
            command=self.onClick1,
            relief=DGG.FLAT)

        self.option2 = DirectButton(
            text=("Los Demonios de Ecatepan"),
            text_font=self.runner_font,
            scale=0.1,
            pos=(0, -5, -0.55),
            frameTexture=None,
            command=self.onClick2,
            relief=DGG.FLAT)

        self.option3 = DirectButton(
            text=("La filarmonica de Ensenada"),
            text_font=self.runner_font,
            scale=0.1,
            pos=(0, -5, -0.35),
            frameTexture=None,
            command=self.onClick3,
            relief=DGG.FLAT)

    def onClick1(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(1)
        self.p1.change_pop(1)
        self.stop()

    def onClick2(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(2)
        self.p1.change_pop(3)
        self.stop()

    def onClick3(self):
        print("[*] Click!")
        self.p1.change_pol(0)
        self.p1.change_edu(5)
        self.p1.change_pop(9)
        self.stop()

    def stop(self):
        self.p1.savefile()
        self.text.remove_node()
        self.option1.remove_node()
        self.option2.remove_node()
        self.option3.remove_node()
        self.background.remove_node()
        self.level2.remove_node()
        render.clearLight()
        self.keyboard.press('5' )
        self.keyboard.release('5' )
        self.__del__()
class Level4:
    def __init__(self):
        self.text_pointers = []
        self.keyboard = Controller()

        base.cam2dp.node().getDisplayRegion(0).setSort(-20)
        self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF')
        self.p1 = player.Player()

    def start(self):
        # load
        self.level4 = loader.loadModel("models/Picacho_diablo_11_068m.bam")
        self.level4.reparentTo(render)
        self.level4.setScale(1, 1, 1)
        self.level4.setPos(0, 0, 0)

        # start
        camera.setPos(-2, 2, 4)
        camera.lookAt(self.level4)

        # start
        self.background = OnscreenImage(
            parent=render2dp,
            image="textures/Skunight.png")  # Load an image object

        color = (0.8, 0.8, 0.8)
        self.linfog = Fog("Scene-wide exponential Fog object")
        self.linfog.setColor(*color)
        self.linfog.setLinearRange(0, 35)
        self.linfog.setLinearFallback(45, 160, 320)
        render.setFog(self.linfog)
        base.setBackgroundColor(*color)
        self.plight = PointLight("plight")
        self.plight.setColor((1, 1, 1, 1))
        self.plight.setAttenuation((1, 0, 1))

        self.buttons()
        self.text = OnscreenText(
            font=self.runner_font,
            text=
            'La comunidad sin hogares de Baja California se ha reubicado al PICACHO DEL DIABLO!',
            scale=0.09,
            pos=[0, 0.5],
            fg=[240, 10, 10, 1],
            shadow=[0.5, 0.5, 0.5, 0.5],
            shadowOffset=(0.04, 0.04),
            wordwrap=20)

    def __del__(self):
        print('[*] Destructor called')

    def buttons(self):
        self.option1 = DirectButton(text=("NUKE 'EM BOYS"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.75),
                                    frameTexture=None,
                                    command=self.onClick1,
                                    relief=DGG.FLAT)

        self.option2 = DirectButton(text=("construir barda"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.55),
                                    frameTexture=None,
                                    command=self.onClick2,
                                    relief=DGG.FLAT)

        self.option3 = DirectButton(text=("cortarles recursos e ignorar"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.35),
                                    frameTexture=None,
                                    command=self.onClick3,
                                    relief=DGG.FLAT)

    def onClick1(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(1)
        self.p1.change_pop(1)
        self.stop()

    def onClick2(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(2)
        self.p1.change_pop(3)
        self.stop()

    def onClick3(self):
        print("[*] Click!")
        self.p1.change_pol(0)
        self.p1.change_edu(5)
        self.p1.change_pop(9)
        self.stop()

    def stop(self):
        self.p1.savefile()
        self.text.remove_node()
        self.option1.remove_node()
        self.option2.remove_node()
        self.option3.remove_node()
        self.background.remove_node()
        self.level4.remove_node()
        render.clearLight()
        self.keyboard.press('7')
        self.keyboard.release('7')
        self.__del__()
Exemple #5
0
class Sprite(RPObject):

    """ Simple wrapper arround OnscreenImage, providing a simpler interface """

    def __init__(self, image=None, parent=None, x=0, y=0, w=None, h=None,
                 transparent=True, near_filter=True, any_filter=True):
        """ Creates a new image, taking (x,y) as topleft coordinates.

        When near_filter is set to true, a near filter will be set to the
        texture passed. This provides sharper images.

        When any_filter is set to false, the passed image won't be modified at
        all. This enables you to display existing textures, otherwise the
        texture would get a near filter in the 3D View, too. """

        RPObject.__init__(self)

        if not isinstance(image, Texture):
            if not isinstance(image, str):
                self.warn("Invalid argument to image parameter:", image)
                return
            image = RPLoader.load_texture(image)

            if w is None or h is None:
                w, h = image.get_x_size(), image.get_y_size()
        else:
            if w is None or h is None:
                w = 10
                h = 10

        self._width, self._height = w, h
        self._initial_pos = self._translate_pos(x, y)

        self.node = OnscreenImage(
            image=image, parent=parent, pos=self._initial_pos,
            scale=(self._width / 2.0, 1, self._height / 2.0))

        if transparent:
            self.node.set_transparency(TransparencyAttrib.M_alpha)

        tex = self.node.get_texture()

        # Apply a near filter, but only if the parent has no scale, otherwise
        # it will look weird
        if near_filter and any_filter and parent.get_sx() == 1.0:
            tex.set_minfilter(SamplerState.FT_nearest)
            tex.set_magfilter(SamplerState.FT_nearest)

        if any_filter:
            tex.set_anisotropic_degree(8)
            tex.set_wrap_u(SamplerState.WM_clamp)
            tex.set_wrap_v(SamplerState.WM_clamp)

    def get_initial_pos(self):
        """ Returns the initial position of the image. This can be used for
        animations """
        return self._initial_pos

    def pos_interval(self, *args, **kwargs):
        """ Returns a pos interval, this is a wrapper around
        NodePath.posInterval """
        return self.node.posInterval(*args, **kwargs)

    def hpr_interval(self, *args, **kwargs):
        """ Returns a hpr interval, this is a wrapper around
        NodePath.hprInterval """
        return self.node.hprInterval(*args, **kwargs)

    def color_scale_interval(self, *args, **kwargs):
        """ Returns a color scale interval, this is a wrapper around
        NodePath.colorScaleInterval """
        return self.node.colorScaleInterval(*args, **kwargs)

    def set_image(self, img):
        """ Sets the current image """
        self.node.set_image(img)

    def get_width(self):
        """ Returns the width of the image in pixels """
        return self._width

    def get_height(self):
        """ Returns the height of the image in pixels """
        return self._height

    def set_pos(self, x, y):
        """ Sets the position """
        self.node.set_pos(self._translate_pos(x, y))

    def _translate_pos(self, x, y):
        """ Converts 2d coordinates to pandas coordinate system """
        return Vec3(x + self._width / 2.0, 1, -y - self._height / 2.0)

    def set_shader(self, shader):
        """ Sets a shader to be used for rendering the image """
        self.node.set_shader(shader)

    def set_shader_input(self, *args):
        """ Sets a shader input on the image """
        self.node.set_shader_input(*args)

    def set_shader_inputs(self, **kwargs):
        """ Sets multiple shader inputs on the image """
        self.node.set_shader_inputs(**kwargs)

    def remove(self):
        """ Removes the image """
        self.node.remove_node()

    def hide(self):
        """ Hides the image """
        self.node.hide()

    def show(self):
        """ Shows the image if it was previously hidden """
        self.node.show()

    def is_hidden(self):
        """ Returns whether the image is hidden """
        return self.node.is_hidden()
Exemple #6
0
class Level1:
    def __init__(self):
        self.text_pointers = []
        self.keyboard = Controller()

        base.cam2dp.node().getDisplayRegion(0).setSort(-20)
        self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF')
        self.p1 = player.Player()

    def start(self):
        self.level1 = loader.loadModel("models/Campestre_light.bam")
        self.level1.reparentTo(render)
        self.level1.setScale(1, 1, 1)
        self.level1.setPos(0, 0, 0)
        camera.setPos(-2, 2, 4)
        camera.lookAt(self.level1)
        self.background = OnscreenImage(
            parent=render2dp,
            image="textures/Skunight.png")  # Load an image object
        color = (0.8, 0.8, 0.8)
        self.linfog = Fog("Scene-wide exponential Fog object")
        self.linfog.setColor(*color)
        self.linfog.setLinearRange(0, 35)
        self.linfog.setLinearFallback(45, 160, 320)
        render.setFog(self.linfog)
        base.setBackgroundColor(*color)
        self.plight = PointLight("plight")
        self.plight.setColor((1, 1, 1, 1))
        self.plight.setAttenuation((1, 0, 1))

        self.buttons()

        self.text = OnscreenText(
            font=self.runner_font,
            text=
            'El emperador Hank convirtio el campo Campestre en un campo de practica para Xolos. Ahora eres alcalde:',
            scale=0.09,
            pos=[0, 0.5],
            fg=[240, 10, 10, 1],
            shadow=[0.5, 0.5, 0.5, 0.5],
            shadowOffset=(0.04, 0.04),
            wordwrap=20)

    def __del__(self):
        print('[*] Destructor called')

    def buttons(self):
        self.option1 = DirectButton(text=("dejarlo"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(-1, -5, -0.75),
                                    frameTexture=None,
                                    command=self.onClick1,
                                    relief=DGG.FLAT)

        self.option2 = DirectButton(text=("quemarlo"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.75),
                                    frameTexture=None,
                                    command=self.onClick2,
                                    relief=DGG.FLAT)

        self.option3 = DirectButton(text=("adaptarlo"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(1, -5, -0.75),
                                    frameTexture=None,
                                    command=self.onClick3,
                                    relief=DGG.FLAT)

    def onClick1(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(1)
        self.p1.change_pop(1)
        self.stop()

    def onClick2(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(2)
        self.p1.change_pop(3)
        self.stop()

    def onClick3(self):
        print("[*] Click!")
        self.p1.change_pol(0)
        self.p1.change_edu(5)
        self.p1.change_pop(9)
        self.stop()

    def stop(self):
        self.p1.savefile()
        self.text.remove_node()
        self.option1.remove_node()
        self.option2.remove_node()
        self.option3.remove_node()
        self.background.remove_node()
        self.level1.remove_node()
        render.clearLight()
        self.keyboard.press('4')
        self.keyboard.release('4')
        self.__del__()
class Level3:
    def __init__(self):
        self.text_pointers = []
        self.keyboard = Controller()

        base.cam2dp.node().getDisplayRegion(0).setSort(-20)
        self.runner_font = loader.loadFont('./fonts/runner/BLADRMF_.TTF')
        self.p1 = player.Player()

    def start(self):
        # load
        self.level3 = loader.loadModel("models/Estacionamiento_Long.bam")
        self.level3.reparentTo(render)
        self.level3.setScale(1, 1, 1)
        self.level3.setPos(0, 0, 0)

        # start
        camera.setPos(-2, 2, 4)
        camera.lookAt(self.level3)

        # start
        self.background = OnscreenImage(
            parent=render2dp,
            image="textures/Skunight.png")  # Load an image object

        color = (0.8, 0.8, 0.8)
        self.linfog = Fog("Scene-wide exponential Fog object")
        self.linfog.setColor(*color)
        self.linfog.setLinearRange(0, 35)
        self.linfog.setLinearFallback(45, 160, 320)
        render.setFog(self.linfog)
        base.setBackgroundColor(*color)
        self.plight = PointLight("plight")
        self.plight.setColor((1, 1, 1, 1))
        self.plight.setAttenuation((1, 0, 1))

        self.buttons()
        self.text = OnscreenText(font=self.runner_font,
                                 text='Propone el uso de la vieja Monumental',
                                 scale=0.09,
                                 pos=[0, 0.5],
                                 fg=[240, 10, 10, 1],
                                 shadow=[0.5, 0.5, 0.5, 0.5],
                                 shadowOffset=(0.04, 0.04),
                                 wordwrap=20)

    def __del__(self):
        print('[*] Destructor called')

    def buttons(self):
        self.option1 = DirectButton(text=("un parque"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.75),
                                    frameTexture=None,
                                    command=self.onClick1,
                                    relief=DGG.FLAT)

        self.option2 = DirectButton(text=("una maquila solar"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.55),
                                    frameTexture=None,
                                    command=self.onClick2,
                                    relief=DGG.FLAT)

        self.option3 = DirectButton(text=("un terreno valdio"),
                                    text_font=self.runner_font,
                                    scale=0.1,
                                    pos=(0, -5, -0.35),
                                    frameTexture=None,
                                    command=self.onClick3,
                                    relief=DGG.FLAT)

    def onClick1(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(1)
        self.p1.change_pop(1)
        self.stop()

    def onClick2(self):
        print("[*] Click!")
        self.p1.change_pol(1)
        self.p1.change_edu(2)
        self.p1.change_pop(3)
        self.stop()

    def onClick3(self):
        print("[*] Click!")
        self.p1.change_pol(0)
        self.p1.change_edu(5)
        self.p1.change_pop(9)
        self.stop()

    def stop(self):
        self.p1.savefile()
        self.text.remove_node()
        self.option1.remove_node()
        self.option2.remove_node()
        self.option3.remove_node()
        self.background.remove_node()
        self.level3.remove_node()
        render.clearLight()
        self.keyboard.press('6')
        self.keyboard.release('6')
        self.__del__()