Skip to content

Commit

Permalink
Refactor weapon and chunk instantiation (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinigami92 authored Nov 17, 2023
1 parent 797cd4a commit f14647d
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 19 deletions.
5 changes: 5 additions & 0 deletions src/weapons/bullet.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ extends Area2D
var _traveled_distance: float = 0.0


static func instantiate() -> Bullet:
var bullet: Bullet = preload("res://src/weapons/bullet.tscn").instantiate()
return bullet


func _physics_process(delta: float) -> void:
_traveled_distance += speed * delta
position += transform.x * speed * delta
Expand Down
6 changes: 2 additions & 4 deletions src/weapons/revolver/revolver.gd
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
class_name Revolver
extends Node2D

const BULLET_SCENE: PackedScene = preload("res://src/weapons/bullet.tscn")

@export var max_ammo: int = 6

var ammo: int = max_ammo
Expand All @@ -17,9 +15,9 @@ func shoot() -> void:

shoot_interval_timer.start()

var bullet: Bullet = BULLET_SCENE.instantiate()
get_tree().root.add_child(bullet)
var bullet: Bullet = Bullet.instantiate()
bullet.global_position = global_position
get_tree().root.add_child(bullet)
bullet.look_at(get_global_mouse_position())

ammo -= 1
Expand Down
10 changes: 10 additions & 0 deletions src/world/chunks/chunk.gd
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
class_name Chunk
extends Node2D

const CHUNK_SIZE = 16
const TILE_SIZE = 64
const CHUNK_WIDTH = CHUNK_SIZE * TILE_SIZE

@onready var tile_map: TileMap = $TileMap
@onready var visibility_notifier: VisibleOnScreenNotifier2D = $VisibleOnScreenNotifier2D


static func instantiate(coordinated: Vector2i) -> Chunk:
var chunk: Chunk = preload("res://src/world/chunks/chunk.tscn").instantiate()
chunk.position = coordinated * CHUNK_WIDTH
return chunk


func _ready() -> void:
visibility_notifier.screen_entered.connect(tile_map.show)
visibility_notifier.screen_exited.connect(tile_map.hide)
Expand Down
24 changes: 9 additions & 15 deletions src/world/chunks/outer_world_chunk_gen.gd
Original file line number Diff line number Diff line change
@@ -1,32 +1,26 @@
class_name OuterWorldChunkGen
extends Marker2D

const CHUNK_SIZE = 16
const TILE_SIZE = 64
const CHUNK_WIDTH = CHUNK_SIZE * TILE_SIZE
const CHUNK_SCENE: PackedScene = preload("res://src/world/chunks/chunk.tscn")

@export var player: Player

var _chunks: Dictionary = {}


func _process(_delta: float) -> void:
var player_chunk: Vector2i = Vector2i(floor(player.global_position / CHUNK_WIDTH))
var player_chunk: Vector2i = Vector2i(floor(player.global_position / Chunk.CHUNK_WIDTH))

for dx in [-1, 0, 1]:
for dy in [-1, 0, 1]:
var chunk_coord: Vector2i = player_chunk + Vector2i(dx, dy)
var chunk_coordinates: Vector2i = player_chunk + Vector2i(dx, dy)

if not _chunks.has(chunk_coord):
var chunk: Chunk = CHUNK_SCENE.instantiate()
chunk.position = chunk_coord * CHUNK_WIDTH
if not _chunks.has(chunk_coordinates):
var chunk: Chunk = Chunk.instantiate(chunk_coordinates)
add_child(chunk)
_chunks[chunk_coord] = chunk
_chunks[chunk_coordinates] = chunk

for chunk_coord in _chunks:
if (chunk_coord - player_chunk).length() >= 3:
var chunk: Chunk = _chunks.get(chunk_coord)
for chunk_coordinates in _chunks:
if (chunk_coordinates - player_chunk).length() >= 3:
var chunk: Chunk = _chunks.get(chunk_coordinates)

if _chunks.erase(chunk_coord):
if _chunks.erase(chunk_coordinates):
chunk.queue_free()

0 comments on commit f14647d

Please sign in to comment.