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)