60 lines
1.8 KiB
GDScript3
60 lines
1.8 KiB
GDScript3
|
|
extends Control
|
||
|
|
class_name MapScreen
|
||
|
|
|
||
|
|
@onready var map: TextureRect = $TextureRect
|
||
|
|
@onready var playerIndicator: ColorRect = $PlayerIndicator
|
||
|
|
@onready var taskListContainer: VBoxContainer = $TaskList
|
||
|
|
@onready var taskLabelSettings: LabelSettings = preload("res://test/TaskListLabelSettingstest.tres")
|
||
|
|
|
||
|
|
var mapImmage: Image
|
||
|
|
var playerCharacter: PlayerCharacter
|
||
|
|
var mapDimensions: Vector2 = Vector2(0,0)
|
||
|
|
var trackPlayer: bool = false
|
||
|
|
|
||
|
|
var taskList: Array[MissionTask]
|
||
|
|
|
||
|
|
|
||
|
|
func _process(_delta: float) -> void:
|
||
|
|
#Update Player Pos on map
|
||
|
|
|
||
|
|
if trackPlayer and playerCharacter:
|
||
|
|
playerIndicator.position = Vector2(playerCharacter.position.x, playerCharacter.position.z) * map.size/mapDimensions + Vector2(map.size.x/2 + map.position.x,map.size.y/2 + map.position.y) - playerIndicator.size/2
|
||
|
|
|
||
|
|
func generateMap(grid: Array[Array]) -> void: #Seccond Array contains gridCells
|
||
|
|
mapImmage = Image.create_empty(grid.size(),grid[0].size(),false,Image.FORMAT_RGB8)
|
||
|
|
|
||
|
|
for x in grid.size():
|
||
|
|
for y in grid[x].size():
|
||
|
|
if grid[x][y].biomeConnection:
|
||
|
|
mapImmage.set_pixel(x,y,Color.DARK_GREEN)
|
||
|
|
elif grid[x][y].spaceTaken:
|
||
|
|
mapImmage.set_pixel(x,y,Color.GREEN)
|
||
|
|
else:
|
||
|
|
mapImmage.set_pixel(x,y,Color.DIM_GRAY)
|
||
|
|
|
||
|
|
map.texture = ImageTexture.create_from_image(mapImmage)
|
||
|
|
|
||
|
|
mapDimensions = Vector2(grid.size(),grid[0].size())
|
||
|
|
|
||
|
|
|
||
|
|
if !playerCharacter:
|
||
|
|
playerCharacter = Multiplayer.thisPlayer
|
||
|
|
|
||
|
|
trackPlayer = true
|
||
|
|
|
||
|
|
func addTask(task: MissionTask) -> void:
|
||
|
|
taskList.push_back(task)
|
||
|
|
|
||
|
|
var label := Label.new()
|
||
|
|
label.name = task.taskName
|
||
|
|
label.text = task.description
|
||
|
|
label.label_settings = taskLabelSettings
|
||
|
|
|
||
|
|
taskListContainer.add_child(label)
|
||
|
|
task.taskLabel = label
|
||
|
|
|
||
|
|
func completeTask(task: MissionTask) -> void:
|
||
|
|
if taskList.has(task):
|
||
|
|
task.taskLabel.queue_free()
|
||
|
|
taskList.erase(task)
|