Added the pathfinding module
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user