fixed finally webrtc
This commit is contained in:
46
src/scripts/fog_of_war.gd
Normal file
46
src/scripts/fog_of_war.gd
Normal file
@@ -0,0 +1,46 @@
|
||||
extends Node2D
|
||||
|
||||
var map_size: Vector2i = Vector2i.ZERO
|
||||
var tile_size: int = 16
|
||||
var explored_map: PackedInt32Array = PackedInt32Array()
|
||||
var visible_map: PackedInt32Array = PackedInt32Array()
|
||||
var fog_color_unseen: Color = Color(0, 0, 0, 1.0)
|
||||
var fog_color_seen: Color = Color(0, 0, 0, 0.85)
|
||||
var debug_lines: Array = []
|
||||
var debug_enabled: bool = false
|
||||
|
||||
func setup(new_map_size: Vector2i, new_tile_size: int = 16) -> void:
|
||||
map_size = new_map_size
|
||||
tile_size = new_tile_size
|
||||
|
||||
func set_maps(new_explored_map: PackedInt32Array, new_visible_map: PackedInt32Array) -> void:
|
||||
explored_map = new_explored_map
|
||||
visible_map = new_visible_map
|
||||
queue_redraw()
|
||||
|
||||
func set_debug_lines(lines: Array, enabled: bool) -> void:
|
||||
debug_lines = lines
|
||||
debug_enabled = enabled
|
||||
queue_redraw()
|
||||
|
||||
func _draw() -> void:
|
||||
if map_size == Vector2i.ZERO or explored_map.is_empty() or visible_map.is_empty():
|
||||
return
|
||||
|
||||
for x in range(map_size.x):
|
||||
for y in range(map_size.y):
|
||||
var idx = x + y * map_size.x
|
||||
if idx >= explored_map.size() or idx >= visible_map.size():
|
||||
continue
|
||||
var pos = Vector2(x * tile_size, y * tile_size)
|
||||
if visible_map[idx] == 1:
|
||||
continue
|
||||
if explored_map[idx] == 0:
|
||||
draw_rect(Rect2(pos, Vector2(tile_size, tile_size)), fog_color_unseen, true)
|
||||
else:
|
||||
draw_rect(Rect2(pos, Vector2(tile_size, tile_size)), fog_color_seen, true)
|
||||
|
||||
if debug_enabled:
|
||||
for line in debug_lines:
|
||||
if line is Array and line.size() == 2:
|
||||
draw_line(line[0], line[1], Color(0, 1, 0, 0.4), 1.0)
|
||||
Reference in New Issue
Block a user