def get_adjacent_squares(self, square): x,y = square.xy north = board.get_square((x,y-1)) east = board.get_square((x+1, y)) south = board.get_square((x, y+1)) west = board.get_square((x-1, y)) results = [] for sq in [north, east, south, west]: if sq != None: results.append(sq) return results
def get_adjacent_squares(self, square): x, y = square.xy north = board.get_square((x, y - 1)) east = board.get_square((x + 1, y)) south = board.get_square((x, y + 1)) west = board.get_square((x - 1, y)) results = [] for sq in [north, east, south, west]: if sq != None: results.append(sq) return results
def draw_square_images(self): br = board.get_rect() self.board_surf = pygame.surface.Surface((br.width, br.height)) dirt_surf = self.scale_image_64(self.DIRTFLOOR) wall_surf = self.scale_image_64(self.STONEWALL) tree_surf = self.scale_image_64(self.TREE_1) tree_surf.set_colorkey(DC_ALPHA) rock_surf = self.scale_image_64(self.ROCK_1) rock_surf.set_colorkey(DC_ALPHA) for column in range(board.board_size[0]): for row in range(board.board_size[1]): square = board.get_square((column, row)) x = square.xy[0] * data.square_size y = square.xy[1] * data.square_size if square.image == '#': self.board_surf.blit(wall_surf, (x, y)) elif square.image == '.': self.board_surf.blit(dirt_surf, (x, y)) elif square.image == 't': self.board_surf.blit(dirt_surf, (x, y)) self.board_surf.blit(tree_surf, (x, y)) elif square.image == 'o': self.board_surf.blit(dirt_surf, (x, y)) self.board_surf.blit(rock_surf, (x, y)) self.display.blit(self.board_surf, (data.camera_offset[0], data.camera_offset[1]))
def draw_square_images(self): br = board.get_rect() self.board_surf = pygame.surface.Surface((br.width, br.height)) dirt_surf = self.scale_image_64(self.DIRTFLOOR) wall_surf = self.scale_image_64(self.STONEWALL) tree_surf = self.scale_image_64(self.TREE_1) tree_surf.set_colorkey(DC_ALPHA) rock_surf = self.scale_image_64(self.ROCK_1) rock_surf.set_colorkey(DC_ALPHA) for column in range(board.board_size[0]): for row in range(board.board_size[1]): square = board.get_square((column, row)) x = square.xy[0] * data.square_size y = square.xy[1] * data.square_size if square.image == '#': self.board_surf.blit(wall_surf,(x,y)) elif square.image == '.': self.board_surf.blit(dirt_surf,(x,y)) elif square.image == 't': self.board_surf.blit(dirt_surf,(x,y)) self.board_surf.blit(tree_surf, (x,y)) elif square.image == 'o': self.board_surf.blit(dirt_surf,(x,y)) self.board_surf.blit(rock_surf,(x,y)) self.display.blit(self.board_surf,(data.camera_offset[0],data.camera_offset[1]))
def get_square_under_pixel((x,y)): x = x / data.square_size y = y / data.square_size square = board.get_square((x,y)) if square: return square else: return data.selected_square
def get_square_under_pixel((x, y)): x = x / data.square_size y = y / data.square_size square = board.get_square((x, y)) if square: return square else: return data.selected_square
def draw_square_numbers(self): font_size = zoom(14) if data.draw_square_numbers: font = DEJAVUSANS(font_size) off = data.camera_offset color = WHITE for y in range(board.board_size[1]): for x in range(board.board_size[0]): num = str(x) + ", " + str(y) text = font.render(num, 1, color) t_rect = text.get_rect() s_rect = board.get_square((x, y)).get_rect() t_rect.center = s_rect.center self.display.blit(text, t_rect)
def draw_square_numbers(self): font_size = zoom(14) if data.draw_square_numbers: font = DEJAVUSANS(font_size) off = data.camera_offset color = WHITE for y in range(board.board_size[1]): for x in range(board.board_size[0]): num = str(x) + ", " + str(y) text = font.render(num, 1, color) t_rect = text.get_rect() s_rect = board.get_square((x,y)).get_rect() t_rect.center = s_rect.center self.display.blit(text, t_rect)
def move_unit_one_square(direction): if direction == 'north': mod = (0,-1) if direction == 'east': mod = (1, 0) if direction == 'south': mod = (0, 1) if direction == 'west': mod = (-1, 0) if data.selected_square.unit != None: unit = data.selected_square.unit x,y = unit.square.xy x += mod[0] y += mod[1] new_square = board.get_square((x,y)) if new_square != None: relocate_unit(unit, new_square) data.selected_square = new_square else: print "You cannot move off the board."
def move_unit_one_square(direction): if direction == 'north': mod = (0, -1) if direction == 'east': mod = (1, 0) if direction == 'south': mod = (0, 1) if direction == 'west': mod = (-1, 0) if data.selected_square.unit != None: unit = data.selected_square.unit x, y = unit.square.xy x += mod[0] y += mod[1] new_square = board.get_square((x, y)) if new_square != None: relocate_unit(unit, new_square) data.selected_square = new_square else: print "You cannot move off the board."
def __init__(self, name="No Name", faction = data.factions[0], square = (4,4), stats = {}): self.name = name self.faction = faction self.square = board.get_square(square) self.move_dest = None self.move_direction = [0, 0] self.move_offset = [0, 0] self.highlight_move = False self.step = 0 self.moving = False self.move_route = [] self.move_index = 0 self.base_stats = stats self.initialize_stats() self.stats = self.base_stats self.equipped = [ random.choice(items.robelist), random.choice(items.weaponlist) ] self.recalculate_equipment_bonuses() self.backpack = [] self.square.unit = self
def adjust_for_zoom(self, number): return (number * self.zoom) / 100 data = Data() from graphics_class import Graphics from interface_class import Interface from gameboard import board from pathfinding import astar from unit_class import unitlist from items import itemlist data.itemlist = itemlist data.turn = data.factions[0] data.selected_square = board.get_square((0, 0)) data.astar = astar graphics = Graphics() interface = Interface() data.interface = interface data.graphics = graphics # Quick access to some debug variables, cut this out later interface.debug_window.visible = False data.debug = False class Engine(object): def __init__(self): self.clock = pygame.time.Clock()
def event_manager(self): for event in pygame.event.get(): if event.type == QUIT: quit_game() if event.type == KEYDOWN: if event.key == K_d: data.debug = toggle_boolvar(data.debug) self.debug_window.visible = data.debug if data.focus == "inventory": if event.type == KEYDOWN: if event.key == K_i: self.inventory.visible = False data.focus = "normal" elif data.focus == "move": if event.type == KEYDOWN: if event.key == K_m: data.focus = "normal" if event.key == K_UP: move_unit_one_square("north") if event.key == K_RIGHT: move_unit_one_square("east") if event.key == K_DOWN: move_unit_one_square("south") if event.key == K_LEFT: move_unit_one_square("west") elif data.focus == "normal": if event.type == KEYDOWN: if event.key == K_i: data.focus = "inventory" self.inventory.visible = True if event.key == K_t: # LET"S TEST SOME JUNK HERE, SONS. unit_class.create_random_unit() if event.key == K_l: data.draw_square_lines = toggle_boolvar(data.draw_square_lines) if event.key == K_MINUS: unit = data.selected_square.unit if unit: cur_i = data.itemlist.index(unit.equipped[0]) if cur_i <= 0: unit.equipped = [data.itemlist[-1]] else: unit.equipped = [data.itemlist[cur_i - 1]] print data.itemlist.index(unit.equipped[0]) + 1 if event.key == K_EQUALS: unit = data.selected_square.unit if unit: cur_i = data.itemlist.index(unit.equipped[0]) if cur_i < len(data.itemlist) - 1: unit.equipped = [data.itemlist[cur_i + 1]] else: unit.equipped = [data.itemlist[0]] print data.itemlist.index(unit.equipped[0]) + 1 if event.key == K_m: if data.selected_square.unit != None: data.focus = "move" if event.key == K_F1: data.end_turn() if event.key == K_F10: data.focus = "menu1" self.menu1.visible = True if event.key == K_F2: pass if event.key == K_DOWN or event.key == K_UP or event.key == K_RIGHT or event.key == K_LEFT: # move data.selected_square with arrow keys if event.key == K_DOWN or event.key == K_RIGHT: inc = 1 if event.key == K_UP or event.key == K_LEFT: inc = -1 xy = list(data.selected_square.xy) if event.key == K_DOWN or event.key == K_UP: xy[1] += inc if event.key == K_RIGHT or event.key == K_LEFT: xy[0] += inc if 0 <= xy[0] <= (board.board_size[0] - 1): if 0 <= xy[1] <= (board.board_size[1] - 1): data.selected_square = board.get_square(xy) if event.key == K_c: self.center_on_square(data.selected_square) if event.key == K_F3: data.draw_square_numbers = toggle_boolvar(data.draw_square_numbers) if event.key == K_ESCAPE: quit_game() #MOUSE if event.type == MOUSEBUTTONDOWN: if event.button == 1: data.selected_square = get_square_under_mouse() if event.button == 3: if data.selected_square.unit != None: data.astar.start_pathfinding(data.selected_square, get_square_under_mouse()) if event.button == DRAGBUTTON: self.drag_camera_start() if event.button == 4: self.zoom_in() if event.button == 5: self.zoom_out() if event.type == MOUSEBUTTONUP: if event.button == DRAGBUTTON: self.drag_camera_end() elif data.focus == "menu1": if event.type == KEYDOWN: if event.key == K_F1: data.focus = "normal" self.menu1.visible = False if event.key == K_1: pygame.display.set_mode((1024, 768)) data.display_size = (1024,768) self.resize_windows() if event.key == K_2: pygame.display.set_mode((1280, 800)) data.display_size = (1280,800) self.resize_windows()
def create_unit(name="No Name", faction = data.factions[0], square = (0,0),stats = {}): unit = Unit(name, faction, square, stats) if name != "DUMMY": unitlist.append(unit) board.get_square(square).unit = unit
def event_manager(self): for event in pygame.event.get(): if event.type == QUIT: quit_game() if event.type == KEYDOWN: if event.key == K_d: data.debug = toggle_boolvar(data.debug) self.debug_window.visible = data.debug if data.focus == "inventory": if event.type == KEYDOWN: if event.key == K_i: self.inventory.visible = False data.focus = "normal" elif data.focus == "move": if event.type == KEYDOWN: if event.key == K_m: data.focus = "normal" if event.key == K_UP: move_unit_one_square("north") if event.key == K_RIGHT: move_unit_one_square("east") if event.key == K_DOWN: move_unit_one_square("south") if event.key == K_LEFT: move_unit_one_square("west") elif data.focus == "normal": if event.type == KEYDOWN: if event.key == K_i: data.focus = "inventory" self.inventory.visible = True if event.key == K_t: # LET"S TEST SOME JUNK HERE, SONS. unit_class.create_random_unit() if event.key == K_l: data.draw_square_lines = toggle_boolvar( data.draw_square_lines) if event.key == K_MINUS: unit = data.selected_square.unit if unit: cur_i = data.itemlist.index(unit.equipped[0]) if cur_i <= 0: unit.equipped = [data.itemlist[-1]] else: unit.equipped = [data.itemlist[cur_i - 1]] print data.itemlist.index(unit.equipped[0]) + 1 if event.key == K_EQUALS: unit = data.selected_square.unit if unit: cur_i = data.itemlist.index(unit.equipped[0]) if cur_i < len(data.itemlist) - 1: unit.equipped = [data.itemlist[cur_i + 1]] else: unit.equipped = [data.itemlist[0]] print data.itemlist.index(unit.equipped[0]) + 1 if event.key == K_m: if data.selected_square.unit != None: data.focus = "move" if event.key == K_F1: data.end_turn() if event.key == K_F10: data.focus = "menu1" self.menu1.visible = True if event.key == K_F2: pass if event.key == K_DOWN or event.key == K_UP or event.key == K_RIGHT or event.key == K_LEFT: # move data.selected_square with arrow keys if event.key == K_DOWN or event.key == K_RIGHT: inc = 1 if event.key == K_UP or event.key == K_LEFT: inc = -1 xy = list(data.selected_square.xy) if event.key == K_DOWN or event.key == K_UP: xy[1] += inc if event.key == K_RIGHT or event.key == K_LEFT: xy[0] += inc if 0 <= xy[0] <= (board.board_size[0] - 1): if 0 <= xy[1] <= (board.board_size[1] - 1): data.selected_square = board.get_square(xy) if event.key == K_c: self.center_on_square(data.selected_square) if event.key == K_F3: data.draw_square_numbers = toggle_boolvar( data.draw_square_numbers) if event.key == K_ESCAPE: quit_game() #MOUSE if event.type == MOUSEBUTTONDOWN: if event.button == 1: data.selected_square = get_square_under_mouse() if event.button == 3: if data.selected_square.unit != None: data.astar.start_pathfinding( data.selected_square, get_square_under_mouse()) if event.button == DRAGBUTTON: self.drag_camera_start() if event.button == 4: self.zoom_in() if event.button == 5: self.zoom_out() if event.type == MOUSEBUTTONUP: if event.button == DRAGBUTTON: self.drag_camera_end() elif data.focus == "menu1": if event.type == KEYDOWN: if event.key == K_F1: data.focus = "normal" self.menu1.visible = False if event.key == K_1: pygame.display.set_mode((1024, 768)) data.display_size = (1024, 768) self.resize_windows() if event.key == K_2: pygame.display.set_mode((1280, 800)) data.display_size = (1280, 800) self.resize_windows()