Added the pathfinding module

This commit is contained in:
douwe
2025-09-01 20:22:54 +02:00
parent a232425980
commit a58cfe74a1
23 changed files with 183 additions and 63 deletions

View File

@@ -5,17 +5,25 @@ signal cpu_tick
var cobor_vm := CoborVirtualMachine.new()
var running := false
var register_size := 8
var register_size := 16
var modules : Array[Module]
func _ready() -> void:
func _init() -> void:
cobor_vm.set_registers(register_size,[])
func _ready() -> void:
var register_index := 1
for child in get_children():
if child is Module:
var module := child as Module
modules.push_back(module)
register_size += module.set_registers(register_index)
module.set_reserved_registers(register_index)
register_index += module.get_register_reservation_size()
if $ProgrammingUI != null:
$ProgrammingUI.memory_setup()
func show_ui(show:bool)->void:
$ProgrammingUI.visible = show
func run_step() -> void:
if not running:

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://crtis0eyywl61"]
[gd_scene load_steps=3 format=3 uid="uid://crtis0eyywl61"]
[ext_resource type="Script" uid="uid://b87ksbp5mjn2a" path="res://nodes/robots/coding/cpu.gd" id="1_mh3k1"]
[ext_resource type="PackedScene" uid="uid://c2es6v8lb8tug" path="res://nodes/robots/coding/programming_ui.tscn" id="2_pm1m8"]
[node name="CPU" type="Node"]
script = ExtResource("1_mh3k1")
[node name="CPUClock" type="Timer" parent="."]
[node name="ProgrammingUI" parent="." instance=ExtResource("2_pm1m8")]
[connection signal="timeout" from="CPUClock" to="." method="_tick"]

View File

@@ -15,6 +15,6 @@ allow_lesser = true
alignment = 1
editable = false
[node name="name" type="Label" parent="."]
[node name="type" type="Label" parent="."]
layout_mode = 2
text = "[X] Click"

View File

@@ -4,20 +4,26 @@ extends PanelContainer
@onready var memory := $%Memory as VBoxContainer
@onready var memory_entry := load("uid://dqwi5rekytyds") as PackedScene
@export var cpu : CPU
@onready var cpu := get_parent() as CPU
func _ready() -> void:
func memory_setup() -> void:
var register_types : Dictionary[int, String]
for module in cpu.modules:
register_types.assign(module.get_register_types())
for i in range(cpu.register_size):
var entry := memory_entry.instantiate() as Control
(entry.get_node("address") as Label).text = "[/" + str(i) + "]"
(entry.get_node("address") as Label).text = "[ /" + str(i).pad_zeros(2) + " ]"
(entry.get_node("value") as SpinBox).value = 0
(entry.get_node("type") as Label).text = register_types[i] if register_types.has(i) else "Free"
memory.add_child(entry)
func _process(_delta: float) -> void:
# Set execution indicator
for line in code_editor.get_executing_lines():
code_editor.set_line_as_executing(line, false)
code_editor.set_line_as_executing(cpu.cobor_vm.get_program_counter(), true)
if cpu.cobor_vm.get_program_size() < cpu.cobor_vm.get_program_counter():
code_editor.set_line_as_executing(cpu.cobor_vm.get_program_counter(), true)
# Show register values
var registers := cpu.cobor_vm.get_registers()
for i in range(registers.size()):

View File

@@ -41,7 +41,12 @@ gutters_draw_line_numbers = true
gutters_zero_pad_line_numbers = true
indent_automatic = true
[node name="Memory" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
horizontal_scroll_mode = 0
[node name="Memory" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/ScrollContainer"]
unique_name_in_owner = true
layout_mode = 2