mirror of
https://github.com/duckduckdoof/miniopolis.git
synced 2025-03-15 00:51:20 +00:00
Basic link established between scene and game
This commit is contained in:
parent
455f392965
commit
d0e9beddba
5 changed files with 25 additions and 13 deletions
|
@ -9,8 +9,10 @@ visual elements; this is handles in the scene/ python files
|
|||
|
||||
# IMPORTS -----------------------------------------------------------
|
||||
|
||||
from global_config import *
|
||||
from lib.engine.game_config import *
|
||||
from lib.engine.game_board import LayeredFlatWorld
|
||||
from lib.engine.game_objects import str_to_game_object
|
||||
|
||||
# FUNCTIONS ---------------------------------------------------------
|
||||
|
||||
|
@ -19,7 +21,13 @@ def init_gb_from_scene_info(scene_info: dict):
|
|||
Takes a dictionary of 2D arrays (organized by layer name), and
|
||||
converts them into their proper game board of game objects.
|
||||
"""
|
||||
|
||||
board_layers = {}
|
||||
for layer in scene_info.keys():
|
||||
board_layers[layer] = [[None] * BOARD_HEIGHT for _ in range(BOARD_WIDTH)]
|
||||
for i in range(BOARD_WIDTH):
|
||||
for j in range(BOARD_HEIGHT):
|
||||
board_layers[layer][i][j] = str_to_game_object(scene_info[layer][i][j])
|
||||
return board_layers
|
||||
|
||||
# CLASSES -----------------------------------------------------------
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ interpreting player inputs on the screen, etc.
|
|||
|
||||
from arcade import Scene
|
||||
|
||||
from scene_config import *
|
||||
from lib.scene.scene_config import *
|
||||
from global_config import *
|
||||
|
||||
# FUNCTIONS ---------------------------------------------------------
|
||||
|
@ -31,6 +31,6 @@ def info_from_layered_tilemap(scene: Scene):
|
|||
scene_info[layer] = [[""] * BOARD_HEIGHT for _ in range(BOARD_WIDTH)]
|
||||
|
||||
# Populate the layer info as 2D arrays
|
||||
for i, S in enumerate(scene[layer]):
|
||||
scene_info[layer][i//BOARD_WIDTH][i%BOARD_HEIGHT] = scene[layer].properties[TILE_NAME]
|
||||
for i, sprite in enumerate(scene[layer]):
|
||||
scene_info[layer][i//BOARD_WIDTH][i%BOARD_HEIGHT] = sprite.properties[TILE_NAME]
|
||||
return scene_info
|
|
@ -56,7 +56,7 @@
|
|||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"height":20,
|
||||
"id":12,
|
||||
"name":"Foundation",
|
||||
"name":"Foundations",
|
||||
"opacity":1,
|
||||
"type":"tilelayer",
|
||||
"visible":true,
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="12" name="Foundation" width="30" height="20">
|
||||
<layer id="12" name="Foundations" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
|
|
@ -10,7 +10,10 @@ First attempt to make a tile-based colony-sim game.
|
|||
|
||||
import arcade
|
||||
|
||||
from global_config import *
|
||||
from lib.scene.scene_config import *
|
||||
from lib.scene.scene_logic import info_from_layered_tilemap
|
||||
from lib.engine.game_logic import GameLogic, init_gb_from_scene_info
|
||||
|
||||
# CLASSES -----------------------------------------------------------
|
||||
|
||||
|
@ -34,9 +37,6 @@ class GameBoard(arcade.Window):
|
|||
)
|
||||
self.scene = arcade.Scene.from_tilemap(self.tile_map)
|
||||
|
||||
for layer in self.scene.keys():
|
||||
print(layer)
|
||||
|
||||
# Tiles selection
|
||||
self.selected_struct_tile = "[Nothing]"
|
||||
self.selected_env_tile = GROUND
|
||||
|
@ -76,8 +76,12 @@ class GameBoard(arcade.Window):
|
|||
color=arcade.color.RED_ORANGE
|
||||
)
|
||||
|
||||
# Initialize the Game Logic class
|
||||
# self.game_logic = GameLogic(self.scene, None)
|
||||
# Initialize the Game Logic manager (this also inits the board)
|
||||
# First, get the layers from the scene, and convert them
|
||||
# into proper game objects
|
||||
scene_info = info_from_layered_tilemap(self.scene)
|
||||
game_layers = init_gb_from_scene_info(scene_info)
|
||||
self.game_logic = GameLogic(game_layers)
|
||||
|
||||
def on_key_release(self, symbol, modifiers):
|
||||
if symbol == arcade.key.ESCAPE:
|
||||
|
@ -114,11 +118,11 @@ class GameBoard(arcade.Window):
|
|||
elif self.pressed_key == arcade.key.C:
|
||||
res = self.game_logic.place_structure(CROPS, x, y)
|
||||
elif self.pressed_key == arcade.key.W:
|
||||
res = self.game_logic.place_structure(HYDROPOWER, x, y)
|
||||
res = self.game_logic.place_structure(HYDRO_POWER, x, y)
|
||||
elif self.pressed_key == arcade.key.H:
|
||||
res = self.game_logic.place_structure(HOUSING, x, y)
|
||||
elif self.pressed_key == arcade.key.M:
|
||||
res = self.game_logic.place_structure(MINER, x, y)
|
||||
res = self.game_logic.place_structure(MINE, x, y)
|
||||
elif self.pressed_key == arcade.key.F:
|
||||
res = self.game_logic.place_structure(FACTORY, x, y)
|
||||
elif self.pressed_key == arcade.key.J:
|
||||
|
|
Loading…
Add table
Reference in a new issue