Ejemplo n.º 1
0
Archivo: gui.py Proyecto: HJ1/Python
def RenderText(surface, text, position, color, font=None, style=None,
               blend=True, shadow_color=(0,0,0)):

    if font is None:
        font = font.Font(None, size)

    ren = font.render(text, blend, color)
    xpos = position[0]
    ypos = position[1]

    if position[0] == 'centered':
        xpos = surface.get_width()/2 - ren.get_width()/2
    if position[1] == 'centered':
        ypos = surface.get_height()/2 - ren.get_height()/2

    if style == None or style == 'regular':

        ren = font.render(text, blend, color)
        surface.blit(ren, (xpos, ypos))

    if style == 'shadow':

        ren = font.render(text, blend, shadow_color)
        surface.blit(ren, (xpos + 1, ypos + 1))
        
        ren = font.render(text, blend, color)
        surface.blit(ren, (xpos, ypos))
Ejemplo n.º 2
0
	def gameover(self,screen=None,player=None):
		if player.hp == 0:
			screen.fill((0,0,0))
			text = "You have died"
			x=260-font.size(text)[0]
			screen.blit(font.render(text, False, (255,255,255)),(x,300))
			del player
Ejemplo n.º 3
0
	def golddisp(self, screen=None, player=None):
		text = "$%s" % player.gold
		fontsize = font.size(text)

		result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA)

		result.fill((90,90,90,150))
		result.blit(font.render(self.textfont,text,(255,194,0,255)),
		(2,2))

		screen.blit(result,(12,32))
Ejemplo n.º 4
0
	def sign(self,screen=None,cam=None,gameinfo=None,player=None):
		for ent in gameinfo.entlist.entlist:
			if ent.x == player.x/32 and ent.y == player.y/32 and ent.text != '':
				fontsize = font.size(ent.text)

				result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA)
				result.fill((90,90,90,200))
				result.blit(font.render(self.textfont,ent.text,(140,140,180,255)),
				(2,2))
				w = 150-fontsize[0]/2
				screen.blit(result,(w,250))
Ejemplo n.º 5
0
 def on_button(self, button):
     self.dirty = True
     if button == globals.left or button == globals.right:
         self.cursor = 2 if self.cursor == 1 else 1
     elif button in globals.cancel:
         self.layer.destroy()
         self.finished = True
     elif button in globals.accept:
         if self.cursor == 2:
             self.layer.destroy()
             self.finished = True
         else:
             if not self.saved:
                 sfx.get_sound(0x29a7).play()
                 globals.chara.save('')
                 self.text_name = font.render(globals.chara.charname,
                                              color=pygame.Color(
                                                  255, 255, 0, 255))
                 self.text_lv = font.render(
                     'LV {}'.format(str(globals.chara.lv)),
                     color=pygame.Color(255, 255, 0, 255))
                 self.text_time = font.render(globals.chara.get_play_time(),
                                              color=pygame.Color(
                                                  255, 255, 0, 255))
                 self.text_location = font.render(
                     globals.last_save_room_name,
                     color=pygame.Color(255, 255, 0, 255))
                 self.text_save = font.render('File saved.',
                                              color=pygame.Color(
                                                  255, 255, 0, 255))
                 self.text_return = pygame.Surface((0, 0))
                 self.heart.image = pygame.Surface((0, 0)), 0
                 self.saved = True
             else:
                 self.layer.destroy()
                 self.finished = True
     else:
         self.dirty = False
     self.update()
Ejemplo n.º 6
0
	def showent(self, screen=None,cam=None,gameinfo=None):
		for ent in gameinfo.entlist.entlist:
			fontsize = font.size(ent.name)
			offcount = (32-ent.width,32-ent.height-8)

			position = (ent.position()[0]-fontsize[0]/2+fontsize[0]-cam.x,
			ent.position()[1]+fontsize[1]/2-fontsize[1]-cam.y)

			result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA)
			result.fill((90,90,90,40))
			result.blit(font.render(self.textfont,ent.name,(90,90,180,255)),
			(2,2))
			screen.blit(result,position)
Ejemplo n.º 7
0
 def show_image(self):
     pygame.mixer.music.load("mus/mus_intronoise.ogg")
     i = pygame.image.load("sprites/splash.png")
     i = sprite.scale(i, 2)
     self.background_layer.surface.blit(
         i, (globals.screen_rect.right / 2 - i.get_width() / 2,
             globals.screen_rect.bottom / 2 - i.get_height() / 2))
     self.background_layer.flip()
     self.text_layer.clear()
     pygame.mixer.music.play()
     if input.await_keypress(globals.accept, 2000)[1]:
         self.leave()
     s = font.render('[PRESS Z OR ENTER]', 'fnt_small')
     r = s.get_rect()
     r.centerx = globals.screen_rect.centerx
     r.centery = globals.screen_rect.height * 0.75
     self.text_layer.surface.blit(s, r)
     self.text_layer.flip()
     if input.await_keypress(globals.accept, 5000)[1]:
         self.leave()
Ejemplo n.º 8
0
def get_key():
    screen = pygame.display.set_mode((200,100))
    pygame.display.set_caption('Press Key')
    screen.fill((255,255,255))
    pygame.font.init() # Module is uninitialised when we quit
    font = pygame.font.SysFont(None, 50)
    text = font.render('Press Key', True, (0,0,0))
    screen.blit(text, (100-text.get_width()//2,50-text.get_height()//2,))
    clock = pygame.time.Clock()
    try:
        while True:
            for event in pygame.event.get():
                if event.type == pg_locals.QUIT:
                    return None
                elif event.type == pg_locals.KEYDOWN:
                    return event.key
            pygame.display.update()
            clock.tick(60)
    finally:
        pygame.quit()
Ejemplo n.º 9
0
    def __init__(self):
        super().__init__()
        self.layer = draw.get_layer(64)
        self.layer.show()
        self.layer.surface = pygame.Surface((445, 186))
        self.rect = self.layer.surface.get_rect()
        self.rect.center = globals.center
        self.layer.shift = self.rect.topleft  # TODO: fix the coords below so this is not needed.
        self.cursor = 1
        self.saved = False
        self.finished = False

        self.text_name = font.render(globals.chara.charname)
        self.text_lv = font.render('LV {}'.format(str(globals.chara.lv)))
        self.text_time = font.render(globals.chara.get_play_time())
        self.text_location = font.render(globals.last_save_room_name)
        self.text_save = font.render('Save')
        self.text_return = font.render('Return')
        self.heart = sprite.Sprite.get_sprite('spr_heart')
        sfx.get_sound(0x29fb).play()
        self.update()
Ejemplo n.º 10
0
def main():
    config = Null()
    config.keyScrollSpeed = 2000.0
    config.musicVolume = .5

    view = Null()
    view.pos = v((0, 0))
    view.sprites = {}
    view.cursor = {}
    view.units = []
    view.selarea = None
    view.begin_pos = None
    view.scroll_start = None
    view.selection = []
    view.players = []
    view.ct = 0.0
    view.scrollleft = False
    view.scrollright = False
    view.scrollup = False
    view.scrolldown = False
    view.uisprites = []
    view.config = config
    view.tilepalcount = 0
    view.followselection = False

    init(sys.argv, view)

    dt = .001
    mp = 0
    #view.pathfind.set_map(chr(0)*view.mapdim[0]*view.mapdim[1])
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if handle_event(event, view): return

        #view.path = pathf(view.occu)
        view.occu = list([list(x) for x in view.mapw])

        for player in view.players:
            player.food = v(0, 0, 0)
            player.hunger = v(0, 0, 0)
        for unit in view.units:
            unit.update(dt, view)

        if view.scrollleft:
            view.pos = view.pos + v(-1.0, 0.0) * config.keyScrollSpeed * dt
        if view.scrollright:
            view.pos = view.pos + v(1.0, 0.0) * config.keyScrollSpeed * dt
        if view.scrollup:
            view.pos = view.pos + v(0.0, -1.0) * config.keyScrollSpeed * dt
        if view.scrolldown:
            view.pos = view.pos + v(0.0, 1.0) * config.keyScrollSpeed * dt

        if view.followselection and view.selection != []:
            poss = [x.pos for x in view.selection]
            poss = sum(poss) / len(poss)
            view.pos = poss - v(640, 480) / 2

        if view.pos[0] < 0: view.pos[0] = 0
        if view.pos[1] < 0: view.pos[1] = 0
        maxx = view.mapdim[0] * 32 - view.screen.get_width()
        maxy = (view.mapdim[1] - 12) * 32
        if view.pos[0] > maxx: view.pos[0] = maxx
        if view.pos[1] > maxy: view.pos[1] = maxy
        view.pos = v([int(x) for x in view.pos])

        view.screen.fill((0, 0, 0))
        if view.tileset == "platform":
            star.draw(view)
        draw_tiles(view)

        tempunits = []
        for unit in view.units:
            tempunits.append((unit.level, unit.pos[1], unit))
        tempunits.sort()
        view.minimapover = pygame.surface.Surface((128, 128), pygame.SRCALPHA,
                                                  32)
        for unit in tempunits:
            unit[2].draw(view)

        for sprite in view.uisprites:
            sprite.draw(view)
            sprite.update()

        if view.selarea:
            pygame.draw.rect(view.screen, (16, 252, 24), view.selarea, 1)

        #68 w 3 down
        player = view.players[0]
        player.raceindex = 1
        player.minerals = 50
        player.gas = 0
        #print player.food, player.hunger
        icons = [
            (0, player.minerals, (16, 252, 24)),
            (player.raceindex + 1, player.gas, (16, 252, 24)),
        ]
        for raceindex in range(3):
            food = player.food[raceindex]
            hunger = player.hunger[raceindex]
            if not food and not hunger:  # heh
                continue
            if food >= hunger:
                color = (16, 252, 24)
            else:
                color = (200, 24, 24)
            icons.append((raceindex + 4, str(hunger) + "/" + str(food), color))

        sprite = view.sprites["icons"]
        x = 640
        icons.reverse()
        for icon in icons:
            x -= 68
            view.screen.blit(sprite[icon[0]], (x, 3))
            text = font.render(10, str(icon[1]), "game5")
            view.screen.blit(text, (x + 16, 3))

        view.screen.blit(view.sprites['ConsoleTerran'], (0, 0))

        view.screen.blit(view.minimap,
                         v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2)
        view.screen.blit(view.minimapover,
                         v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2)
        topleft = v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2
        pygame.draw.line(view.screen, (204, 204, 208), topleft + (0, -1),
                         topleft + (128, -1))
        bottomright = v(6, 348) + (64, 64) + v(view.minimap.get_size()) / 2
        pygame.draw.line(view.screen, (172, 152, 148), bottomright,
                         bottomright + (-128, 0))

        pygame.draw.rect(
            view.screen, (255, 255, 255),
            (v(6, 348) +
             (64, 64) - v(view.minimap.get_size()) / 2 + view.pos / 32,
             (20, 13)), 1)
        #print view.mapdim

        (173, 389)
        if len(view.selection) == 0:
            pass
        elif len(view.selection) == 1:
            u = view.selection[0]
            if u.id:
                w = view.sprites["Wireframe"][u.id]
                w.set_palette(get_wpalette(u))
                view.screen.blit(w, (168, 388))
            if u.health != None:
                s = str(int(u.health)) + "/" + str(u.maxhealth)
                t = font.render(8, s, "game5", True)
                view.screen.blit(t, v(199, 457) - v(t.get_size()) / 2)
            s = u.name
            t = font.render(10, u.name, "game0", True)
            view.screen.blit(t, v(315, 394) - v(t.get_size()) / 2)
        else:
            pass  #multiple grpwire.grp
        #buttons

        view.screen.blit(view.sprites["TerranButtons"][4], (3, 320))
        view.screen.blit(view.sprites["TerranButtons"][0], (416, 388))

        view.screen.blit(font.render(8, "MENU", "game1"), (435, 394))
        mp += .5
        mp = mp % 10
        view.screen.blit(view.movie[int(mp)], (413, 410))
        #pygame.draw.rect(view.screen, (128,128,128), ((413,410),(60,56)))
        view.screen.blit(view.sprites["TerranOverlay"], (413, 410))

        if debug:
            surf = font.render(8, str(int(clock.get_fps() + .5)), "game0")
            view.screen.blit(surf, (0, 0))

        if pygame.mouse.get_focused():
            view.ct += dt * 8
            cursor = 'CursorArrow'
            u = get_unit_at_point(pygame.mouse.get_pos() + view.pos, view)
            if u:
                if u.player == view.players[0]: cursor = 'CursorTarget2Green'
                elif u.player == -1: cursor = 'CursorTarget2Yellow'
                else: cursor = 'CursorTarget2Red'
            if view.selarea: cursor = 'CursorDrag'
            if view.scroll_start: cursor = None
            if view.sprites['ConsoleTerran'].get_at(
                    pygame.mouse.get_pos()) != (0, 0, 0, 255):
                cursor = "CursorArrow"
            if cursor == "CursorArrow": view.ct = view.ct % 4.0
            elif cursor in ("CursorTarget2Green", "CursorTarget2Yellow",
                            "CursorTarget2Red"):
                view.ct = view.ct % 14.0
            else:
                view.ct = 0

            if cursor:
                sprite = view.sprites[cursor][int(view.ct)]
                view.screen.blit(
                    sprite,
                    v(pygame.mouse.get_pos()) - v(sprite.get_size()) / 2)
        try:
            a
        except NameError:
            a = 0.
        a += dt
        a = a % 5
        view.screen.blit(ui.progress_bar(a / 5, view), (281, 426))
        pygame.display.update()
        pygame.mixer.music.set_volume(view.config.musicVolume)
        #sendp(cPickle.dumps(view.units),view)
        #try:
        # while True:
        #  view.units = cPickle.loads(view.socket.recvfrom(2**20)[0])
        #except socket.error: pass
        if debug:
            clock.tick()
        else:
            clock.tick(30)
        dt = clock.get_time() / 1000.0
Ejemplo n.º 11
0
def main():
    config = Null()
    config.keyScrollSpeed = 2000.0
    config.musicVolume = .5
    
    view = Null()
    view.pos = v((0,0))
    view.sprites = {}
    view.cursor = {}
    view.units = []
    view.selarea = None
    view.begin_pos = None
    view.scroll_start = None
    view.selection = []
    view.players = []
    view.ct = 0.0
    view.scrollleft = False
    view.scrollright = False
    view.scrollup = False
    view.scrolldown = False
    view.uisprites = []
    view.config = config
    view.tilepalcount = 0
    view.followselection = False
    
    init(sys.argv, view)
    
    dt = .001
    mp = 0
    #view.pathfind.set_map(chr(0)*view.mapdim[0]*view.mapdim[1])
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if handle_event(event, view): return
            
            
            
        #view.path = pathf(view.occu)
        view.occu = list([list(x) for x in view.mapw])
        
        for player in view.players:
            player.food = v(0,0,0)
            player.hunger = v(0,0,0)
        for unit in view.units:
            unit.update(dt, view)
            
        if view.scrollleft: view.pos = view.pos + v(-1.0,0.0)*config.keyScrollSpeed*dt
        if view.scrollright: view.pos = view.pos + v(1.0,0.0)*config.keyScrollSpeed*dt
        if view.scrollup: view.pos = view.pos + v(0.0,-1.0)*config.keyScrollSpeed*dt
        if view.scrolldown: view.pos = view.pos + v(0.0,1.0)*config.keyScrollSpeed*dt
        
        if view.followselection and view.selection != []:
            poss = [x.pos for x in view.selection]
            poss = sum(poss)/len(poss)
            view.pos = poss - v(640,480)/2
            
        if view.pos[0] < 0: view.pos[0] = 0
        if view.pos[1] < 0: view.pos[1] = 0
        maxx = view.mapdim[0]*32 - view.screen.get_width()
        maxy = (view.mapdim[1]-12)*32
        if view.pos[0] > maxx: view.pos[0] = maxx
        if view.pos[1] > maxy: view.pos[1] = maxy
        view.pos = v([int(x) for x in view.pos])
        
        view.screen.fill((0,0,0))
        if view.tileset == "platform":
            star.draw(view)
        draw_tiles(view)
        
        tempunits = []
        for unit in view.units:
            tempunits.append((unit.level,unit.pos[1],unit))
        tempunits.sort()
        view.minimapover = pygame.surface.Surface((128,128),pygame.SRCALPHA,32)
        for unit in tempunits:
            unit[2].draw(view)
            
        for sprite in view.uisprites:
            sprite.draw(view)
            sprite.update()
            
        if view.selarea: pygame.draw.rect(view.screen, (16,252,24), view.selarea, 1)
        
        #68 w 3 down
        player = view.players[0]
        player.raceindex = 1
        player.minerals = 50
        player.gas = 0
        #print player.food, player.hunger
        icons = [
            (0, player.minerals, (16, 252, 24)),
            (player.raceindex+1, player.gas, (16, 252, 24)),
        ]
        for raceindex in range(3):
            food = player.food[raceindex]
            hunger = player.hunger[raceindex]
            if not food and not hunger: # heh
                continue
            if food >= hunger:
                color = (16, 252, 24)
            else:
                color = (200,24,24)
            icons.append((raceindex+4, str(hunger)+"/"+str(food), color))
            
        sprite = view.sprites["icons"]
        x = 640
        icons.reverse()
        for icon in icons:
            x -= 68
            view.screen.blit(sprite[icon[0]],(x,3))
            text = font.render(10, str(icon[1]), "game5")
            view.screen.blit(text, (x+16, 3))
            
        view.screen.blit(view.sprites['ConsoleTerran'],(0,0))
        
        view.screen.blit(view.minimap, v(6,348)+(64,64)-v(view.minimap.get_size())/2)
        view.screen.blit(view.minimapover, v(6,348)+(64,64)-v(view.minimap.get_size())/2)
        topleft = v(6,348)+(64,64)-v(view.minimap.get_size())/2
        pygame.draw.line(view.screen, (204,204,208), topleft+(0,-1), topleft+(128,-1))
        bottomright = v(6,348)+(64,64)+v(view.minimap.get_size())/2
        pygame.draw.line(view.screen, (172,152,148), bottomright, bottomright+(-128,0))
        
        pygame.draw.rect(view.screen,(255,255,255), (v(6,348)+(64,64)-v(view.minimap.get_size())/2+view.pos/32,(20,13)),1)
        #print view.mapdim
        
        
        (173,389)
        if len(view.selection) == 0:
            pass
        elif len(view.selection) == 1:
            u = view.selection[0]
            if u.id:
                w = view.sprites["Wireframe"][u.id]
                w.set_palette(get_wpalette(u))
                view.screen.blit(w, (168,388))
            if u.health != None:
                s = str(int(u.health))+"/"+str(u.maxhealth)
                t = font.render(8, s, "game5", True)
                view.screen.blit(t,v(199,457)-v(t.get_size())/2)
            s = u.name
            t = font.render(10, u.name, "game0", True)
            view.screen.blit(t,v(315,394)-v(t.get_size())/2)
        else:
            pass #multiple grpwire.grp
        #buttons
        
        view.screen.blit(view.sprites["TerranButtons"][4], (3,320))
        view.screen.blit(view.sprites["TerranButtons"][0], (416,388))
        
        view.screen.blit(font.render(8,"MENU", "game1"),(435,394))
        mp += .5
        mp = mp % 10
        view.screen.blit(view.movie[int(mp)], (413,410))
        #pygame.draw.rect(view.screen, (128,128,128), ((413,410),(60,56)))
        view.screen.blit(view.sprites["TerranOverlay"], (413, 410))
        
        if debug:
            surf = font.render(8, str(int(clock.get_fps()+.5)), "game0")
            view.screen.blit(surf,(0,0))
            
        if pygame.mouse.get_focused():
            view.ct += dt * 8
            cursor = 'CursorArrow'
            u = get_unit_at_point(pygame.mouse.get_pos()+view.pos,view)
            if u:
                if u.player == view.players[0]: cursor = 'CursorTarget2Green'
                elif u.player == -1: cursor = 'CursorTarget2Yellow'
                else: cursor = 'CursorTarget2Red'
            if view.selarea: cursor = 'CursorDrag'
            if view.scroll_start: cursor = None
            if view.sprites['ConsoleTerran'].get_at(pygame.mouse.get_pos()) != (0,0,0,255):
                cursor = "CursorArrow"
            if cursor == "CursorArrow": view.ct = view.ct % 4.0
            elif cursor in ("CursorTarget2Green","CursorTarget2Yellow","CursorTarget2Red"): view.ct = view.ct % 14.0
            else: view.ct = 0
            
            if cursor:
                sprite = view.sprites[cursor][int(view.ct)]
                view.screen.blit(sprite, v(pygame.mouse.get_pos())-v(sprite.get_size())/2)
        try: a
        except NameError: a = 0.
        a += dt
        a = a % 5
        view.screen.blit(ui.progress_bar(a/5,view),(281,426))
        pygame.display.update()
        pygame.mixer.music.set_volume(view.config.musicVolume)
        #sendp(cPickle.dumps(view.units),view)
        #try:
        # while True:
        #  view.units = cPickle.loads(view.socket.recvfrom(2**20)[0])
        #except socket.error: pass
        if debug:
            clock.tick()
        else:
            clock.tick(30)
        dt = clock.get_time()/1000.0