Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
    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]))
Esempio n. 4
0
    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]))
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
 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)
Esempio n. 8
0
 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)   
Esempio n. 9
0
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."
Esempio n. 10
0
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."
Esempio n. 11
0
 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
Esempio n. 12
0
    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()
Esempio n. 13
0
 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()
Esempio n. 14
0
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
Esempio n. 15
0
    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()
Esempio n. 16
0
    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()