Added player character and initial interaction functionality

This commit is contained in:
2024-02-24 08:36:43 -06:00
parent 78c4291b6a
commit 5467e044a7
12 changed files with 557 additions and 46 deletions

View File

@@ -1,6 +1,7 @@
class_name World extends Node2D
@export var game_resources: Array[GameResource]
const PLAYER = preload("res://scene/player.tscn")
var terrain_noise := FastNoiseLite.new()
var resource_noise: Noise = FastNoiseLite.new()
@@ -12,8 +13,6 @@ var temp_noise_reg = []
var noise_regions := [-999,0,999]
var atlas_regions := [Vector2i(0,1),Vector2i(0,0)]
var world_data: Dictionary = {}
@onready var world_grid: TileMap = $world_grid
func get_noise_value(x: int, y: int):
@@ -33,12 +32,13 @@ func get_noise_region(x,y):
return i
func _ready():
Grid.init(world_grid)
terrain_noise.seed = randi()
resource_noise.seed = randi()
for x in range(-temp_size, temp_size):
for y in range(-temp_size, temp_size):
change_location_data(Vector2i(x,y), Constants.TilemapLayers.GROUND, atlas_regions[get_noise_region(x,y)])
Grid.change_location_data(Vector2i(x,y), Constants.TilemapLayers.GROUND, atlas_regions[get_noise_region(x,y)])
var tile_res := is_resource_tile(x,y)
if tile_res:
change_location_resource(Vector2i(x,y), tile_res)
@@ -47,29 +47,17 @@ func _ready():
prints(temp_noise_val.min(), temp_noise_val.max())
for region in noise_regions.size():
prints(region, noise_regions[region], temp_noise_reg.count(region))
func _process(delta):
var mouse_pos = world_grid.local_to_map(get_local_mouse_position())
world_grid.clear_layer(Constants.TilemapLayers.CURSOR)
world_grid.set_cell(Constants.TilemapLayers.CURSOR, mouse_pos,0,Vector2i(0,7))
var player = PLAYER.instantiate()
add_child(player)
func corrupt_location(loc: Vector2i):
if world_data[loc].change_layer(Constants.TilemapLayers.CORRUPTION, true):
var corrupted_cells := world_data.values().filter(func(cell: CellData): return cell.is_corrupted()).map(func(cell: CellData) -> Vector2i: return cell._pos)
if Grid.corrupt_location(loc):
var corrupted_cells := Grid.get_corrupted_cells()
world_grid.set_cells_terrain_connect(Constants.TilemapLayers.CORRUPTION, corrupted_cells, 0, 0)
func grid_location(global_pos: Vector2) -> Vector2i:
return world_grid.local_to_map(global_pos)
func change_location_data(pos: Vector2i, layer: int, data: Vector2i) -> void:
if not world_data.has(pos):
world_data[pos] = CellData.new(pos)
world_data[pos].change_layer(layer, data)
world_grid.set_cell(layer, pos, 0, data)
func change_location_resource(pos: Vector2i, data: GameResource) -> void:
world_data[pos].change_resource(data)
Grid.change_location_resource(pos, data)
world_grid.set_cell(Constants.TilemapLayers.ENVIRONMENT, pos, 0, data.atlas_location)
func get_corrupted_resources() -> Array:
return world_data.values().filter(func(cell: CellData): return cell.is_corrupted() and cell.has_layer(Constants.TilemapLayers.ENVIRONMENT))