diff --git a/Main.py b/Main.py index 3c8dc32..1a719b3 100644 --- a/Main.py +++ b/Main.py @@ -13,7 +13,8 @@ import RealmManager # pygame setup pygame.init() -screen = pygame.display.set_mode((1280, 720)) +w,h = 1280, 720 +screen = pygame.display.set_mode((w, h)) pygame.display.set_caption('CountDuchKing') clock = pygame.time.Clock() running = True @@ -137,7 +138,11 @@ class uText: if textTest[0] != text and textTest[1] == position: self.texts.remove(textTest) self.texts.append((text,position)) - print(self.texts) + #print("\n\nT E X T S :") + #p = [] + #for t in self.texts: + # p.append(t[0]) + #print(p) def delete(self, parameter, info): text2 = [] @@ -155,22 +160,30 @@ class uText: textPrintRect = textPrintRect.move(int(text[1][0]),int(text[1][1])) screen.blit(textPrint, textPrintRect) - def runTextTile(self, tile_pressed): + def runResourceView(self, info, mode): i=0 - info = GameMap.getTileInfo(tile_pressed) - self.write(info["terrain"],(1000,50)) - - for bit in info["gameplay"]: - if True: #type(bit) == " 0: + print(f"Claiming {pt.Id} for {ip.name}") + GameMap.claimTileFor(pt.Id,ip) + for tile in GameMap.findBorderTiles(pt.Id): + ip.borderTiles.append(int(tile)) + ip.resources["villagers"] -= 1 + self.turnHolder += 1 + elif ip.resources["settlers"] > 0: + print(f"Settling {pt.Id} for {ip.name}") + GameMap.claimTileFor(pt.Id,ip) + for tile in GameMap.findBorderTiles(pt.Id): + ip.borderTiles.append(int(tile)) + ip.resources["settlers"] -= 1 + self.turnHolder += 1 + else: + self.turnHolder += 1 def expand_cccs(self, ccc): print(f"Using ccc = {ccc}") @@ -352,6 +393,7 @@ while running: # pygame.QUIT event means the user clicked X to close your window for event in pygame.event.get(): if event.type == pygame.QUIT: + uCommunicator.globalGameState = 0 running = False if event.type == pygame.MOUSEBUTTONDOWN: if pygame.mouse.get_pressed()[0] == True: @@ -366,8 +408,13 @@ while running: # fill the screen with a color to wipe away anything from last frame screen.fill("black") - if tile_pressed != None: - uTexter.runTextTile(tile_pressed) + if uCommunicator.resourceViewActive == False and uCommunicator.resourceView == True and tile_pressed != None: + uButtoner.addButton("State", 850, 0, 120, 50, "darkgray", "gray", "uCommunicator.switchResourceView()", True) + + if tile_pressed != None and uCommunicator.resourceView == False: + uTexter.runResourceView(tile_pressed, "t") + elif uCommunicator.globalGameState == 1: + uTexter.runResourceView("p1", "p") uButtoner.updateHover() uButtoner.drawButtons() diff --git a/Map/MapManager.py b/Map/MapManager.py index 6ba997b..d933a4e 100644 --- a/Map/MapManager.py +++ b/Map/MapManager.py @@ -148,14 +148,18 @@ class MapManager: tilesMapped[position[0]][position[1]] = self.TileWorker.get_rand_tType(tilesMapped, position) #print(f"{tilesMapped}") mappedColours = self.TileWorker.get_terrain("colours") + print("Assigning terrains and features...") for x in self.tiles.keys(): tile = self.tiles[f"{x}"] if tilesMapped[tile.Position[0]][tile.Position[1]] != "": - colour = mappedColours[f"{tilesMapped[tile.Position[0]][tile.Position[1]]}"] + terrain = f"{tilesMapped[tile.Position[0]][tile.Position[1]]}" + colour = mappedColours[terrain] colour1, colour2, colour3 = colour[0], colour[1], colour[2] - tile.add_terrain(f"{tilesMapped[tile.Position[0]][tile.Position[1]]}") + tile.add_terrain(terrain) tile.paint_pixels(mapObject, int(colour1),int(colour2),int(colour3)) tile.findBorder(mapObject) + tile.add_resources(self.TileWorker.get_resource_for(terrain)) + def re_load(self): print("To Be Implomented") @@ -179,6 +183,30 @@ class MapManager: print(f"Could not find tile at position: {pos[0]},{pos[1]}") return None + def findBorderTiles(self, id): + bTiles = [] + id = int(id) + pos = self.tiles[str(id)].Position + if id != 0: + bTiles.append(id-1) + if self.findTileAtRel((pos[0],pos[1]-1)): + bTiles.append(self.findTileAtRel((pos[0],pos[1]-1))) + if self.findTileAtRel((pos[0],pos[1]+1)): + bTiles.append(self.findTileAtRel((pos[0],pos[1]+1))) + if pos[1] % 2 == 1: + pos1 = (pos[0]+1) + else: + pos1 = (pos[0]-1) + bTiles.append(self.findTileAtRel((pos1,pos[1]-1))) + bTiles.append(self.findTileAtRel((pos1,pos[1]+1))) + + if pos[1] == self.tiles[str(id+1)].Position[1]: + bTiles.append(id+1) + print(f"Tile: {id}/{pos} has bordertiles: ") + for tile in bTiles: + print(f"{tile}/{self.tiles[str(tile)].Position}") + return bTiles + def findTileAtRel(self, pos): for x in self.tiles.keys(): tile = self.tiles[f"{x}"] @@ -200,6 +228,10 @@ class MapManager: info["gameplay"] = thistile.getGameplayInfo() return info + def illegalTilePaint(self, id, mapObject): + tile = self.tiles[str(id)] + tile.paint_border_pixels(mapObject) + def paintTileBorder(self, id, mapObject): if self.paintedTile != None: self.clearPaintedTile(mapObject) @@ -233,7 +265,7 @@ class Tile: self.pixels = [] self.colour = (0,0,0) self.terrain = "" - self.resources = {} + self.resources = [] self.buildings = [] self.units = {} self.owner = "Unclaimed" @@ -264,6 +296,10 @@ class Tile: def add_terrain(self, terrain): self.terrain = terrain #print(f"Added terrain for tile {self.Id}, it is now a {self.terrain} / {terrain} biome") + + def add_resources(self, resources): + for resource in resources: + self.resources.append(resource) def paint_pixels(self, map, r,g,b): for pixel in self.pixels: diff --git a/Map/TileTypes.py b/Map/TileTypes.py index b8955b1..779ee0e 100644 --- a/Map/TileTypes.py +++ b/Map/TileTypes.py @@ -4,19 +4,19 @@ class TerrainWorker: def generateTerrain(self): self.terrains = [] - ocean = Terrain("ocean", (0, 102, 255), 2, True, ("plains", "forest", "hills")) + ocean = Terrain("ocean", (0, 102, 255), 2, True, ("plains", "forest", "hills"),((0.5,"food"),)) self.terrains.append(ocean) - lake = Terrain("lake", (0, 204, 255), 1, True, ("plains", "forest", "hills")) + lake = Terrain("lake", (0, 204, 255), 1, True, ("plains", "forest", "hills"),((1,"food"),)) self.terrains.append(lake) - plains = Terrain("plains", (0, 200, 0), 1, False, ("ocean", "lake", "forest", "hills", "desert")) + plains = Terrain("plains", (0, 200, 0), 1, False, ("ocean", "lake", "forest", "hills", "desert"),((0.5,"food"),(0.25,"wood"),(0.25,"stone"))) self.terrains.append(plains) - forest = Terrain("forest", (0, 100, 0), 2, False, ("ocean", "lake", "plains", "hills")) + forest = Terrain("forest", (0, 100, 0), 2, False, ("ocean", "lake", "plains", "hills"),((1,"wood"),(0.25,"stone"),(0.25,"food"))) self.terrains.append(forest) - hills = Terrain("hills", (102, 102, 153), 2, False, ("ocean", "lake", "plains", "forest")) + hills = Terrain("hills", (102, 102, 153), 2, False, ("ocean", "lake", "plains", "forest"),((1,"stone"),(0.25,"wood"),(0.25,"food"))) self.terrains.append(hills) - desert = Terrain("desert", (230, 230, 0), 1, False, ("plains", "dune")) + desert = Terrain("desert", (230, 230, 0), 1, False, ("plains", "dune"),((0.25,"stone"),)) self.terrains.append(desert) - dune = Terrain("dune", (153, 153, 0), 2, False, ("desert",)) + dune = Terrain("dune", (153, 153, 0), 2, False, ("desert",),((0.5,"stone"),)) self.terrains.append(dune) self.terrainNames = [] for terrain in self.terrains: @@ -34,6 +34,11 @@ class TerrainWorker: #print(f"{dictionary}") return dictionary + def get_resource_for(self, terrainName): + for terrain in self.terrains: + if terrain.name == terrainName: + return terrain.resources + def biomebalance(self, biome): if biome == "ocean": return 2 @@ -83,9 +88,10 @@ class TerrainWorker: class Terrain: - def __init__(self, name, colour, moveC, water, proxys): + def __init__(self, name, colour, moveC, water, proxys, resources): self.name = name self.colour = colour self.moveCost = moveC self.isWater = water - self.proxys = proxys \ No newline at end of file + self.proxys = proxys + self.resources = resources \ No newline at end of file diff --git a/Map/__pycache__/MapManager.cpython-312.pyc b/Map/__pycache__/MapManager.cpython-312.pyc index a231d2a..63033af 100644 Binary files a/Map/__pycache__/MapManager.cpython-312.pyc and b/Map/__pycache__/MapManager.cpython-312.pyc differ diff --git a/Map/__pycache__/TileTypes.cpython-312.pyc b/Map/__pycache__/TileTypes.cpython-312.pyc index aa1fb08..c461dca 100644 Binary files a/Map/__pycache__/TileTypes.cpython-312.pyc and b/Map/__pycache__/TileTypes.cpython-312.pyc differ diff --git a/Realms/RealmManager.py b/Realms/RealmManager.py index 075c0ae..3020caf 100644 --- a/Realms/RealmManager.py +++ b/Realms/RealmManager.py @@ -8,18 +8,22 @@ class RealmManager: self.amount = amount temptext = open("./Realms/computer_names.txt", "r") self.compnames = temptext.read() - print (self.compnames) self.compnames = self.compnames.split("\n") temptext.close() temptext = open("./Realms/valid_border_colours.txt", "r") self.colournames = temptext.read() - print (self.colournames) self.colournames = self.colournames.split("\n") temptext.close() for x in range(self.amount): if x == 0: - self.players[0] = Player("p1", self.colournames) - self.players[x] = Player("c", self.colournames, x, self.compnames) + c = self.colournames[random.randint(0,len(self.colournames)-1)] + self.players[0] = Player("p1", c) + self.colournames.remove(c) + c1 = self.colournames[random.randint(0,len(self.colournames)-1)] + c2 = self.compnames[random.randint(0,len(self.compnames)-1)] + self.players[x] = Player("c", c1, x, c2) + self.colournames.remove(c1) + self.compnames.remove(c2) for x in self.players: p = self.players[x] print(f"Player {p.id}/{p.name} with colour {p.borderColour}") @@ -33,13 +37,21 @@ class RealmManager: class Player: - def __init__(self, controller, colour, id=0, names=None,): + def __init__(self, controller, colour, id=0, name=None,): + self.resources = { + "settlers": 1, + "villagers": 4, + "wood": 0.0, + "stone": 0.0, + "food": 0.0, + "weapons": 0.0, + "tools": 0.0, + } self.id = id self.controller = controller self.heldTiles = [] - colour = colour[random.randint(0,len(colour)-1)] + self.borderTiles = [] colour = colour.split(",") print (colour) self.borderColour = (int(colour[0]),int(colour[1]),int(colour[2])) - if controller == "c": - self.name = names[random.randint(0,len(names)-1)] \ No newline at end of file + self.name = name \ No newline at end of file diff --git a/Realms/__pycache__/RealmManager.cpython-312.pyc b/Realms/__pycache__/RealmManager.cpython-312.pyc index 222a887..e3ad1ee 100644 Binary files a/Realms/__pycache__/RealmManager.cpython-312.pyc and b/Realms/__pycache__/RealmManager.cpython-312.pyc differ diff --git a/Realms/valid_border_colours.txt b/Realms/valid_border_colours.txt index 4dcefaf..a7068b6 100644 --- a/Realms/valid_border_colours.txt +++ b/Realms/valid_border_colours.txt @@ -1,8 +1,8 @@ -255,0,0 -255,255,0 +255,51,102 +204,0,102 +255,128,0 255,0,255 -0,0,0 -160,160,160 -0,100,0 -255,100,255 -180,0,180 \ No newline at end of file +255,255,0 +102,0,204 +255,255,102 +204,51,255 \ No newline at end of file diff --git a/Script/__pycache__/ScriptUtils.cpython-312.pyc b/Script/__pycache__/ScriptUtils.cpython-312.pyc index c3644de..24c6d33 100644 Binary files a/Script/__pycache__/ScriptUtils.cpython-312.pyc and b/Script/__pycache__/ScriptUtils.cpython-312.pyc differ