feat(robot): add saveRobotState and loadRobotState methods

This commit is contained in:
Guillaume ARM 2024-05-25 23:22:05 +02:00
parent 022f778f0b
commit 494c32faf6
2 changed files with 40 additions and 1 deletions

View File

@ -30,7 +30,9 @@ upgrade
```
rm config
rm data
rm startup.lua
rm .minerstate
rm .robotstate
upgrade
```

View File

@ -2,6 +2,8 @@
local api = {}
local ROBOT_DEFAULT_STATE_FILE = '/.robotstate'
local function createDefaultState()
return {
y = 0,
@ -12,7 +14,8 @@ local function createDefaultState()
}
end
api.create = function(state)
api.create = function(state, defaultStateFile)
defaultStateFile = defaultStateFile or ROBOT_DEFAULT_STATE_FILE
state = state or createDefaultState()
local mutateRobotPosition = function(isBackward)
@ -113,6 +116,40 @@ api.create = function(state)
return state
end
robot.saveRobotState = function(stateFile)
stateFile = stateFile or defaultStateFile
local file = fs.open(stateFile, 'w')
if not file then
error('saveRobotState: cannot open ' .. stateFile .. ' file!')
end
file.write(textutils.serializeJSON(state))
file.close()
return state
end
robot.loadRobotState = function(stateFile)
stateFile = stateFile or defaultStateFile
local file = fs.open(stateFile, 'r')
if not file then
return robot.saveRobotState(stateFile)
end
local serializedRobotState = file.readAll()
file.close()
local parsedResult = textutils.unserializeJSON(serializedRobotState)
if not parsedResult then
return robot.saveRobotState(stateFile)
end
return parsedResult
end
return robot
end