SHOW:
|
|
- or go back to the newest paste.
| 1 | - | local patentFile = "disk/patents.pat" |
| 1 | + | local databaseFile = "disk/patents.skydb" |
| 2 | - | local adminPassword = "PVSfVF" |
| 2 | + | local adminPassword = "" |
| 3 | - | |
| 3 | + | |
| 4 | local function save(tbl,name) | |
| 5 | local file = fs.open(name,"w") | |
| 6 | file.write(textutils.serialise(tbl)) | |
| 7 | file.close() | |
| 8 | end | |
| 9 | - | |
| 9 | + | |
| 10 | local function load(name) | |
| 11 | local file = fs.open(name,"r") | |
| 12 | local data = file.readAll() | |
| 13 | file.close() | |
| 14 | return textutils.unserialise(data) | |
| 15 | end | |
| 16 | - | |
| 16 | + | |
| 17 | local function centerText(text,y) | |
| 18 | local x,_ = term.getSize() | |
| 19 | local x = math.floor(x/2) - math.floor(string.len(text)/2) | |
| 20 | term.setCursorPos(x,y) | |
| 21 | term.write(text) | |
| 22 | end | |
| 23 | - | |
| 23 | + | |
| 24 | - | patTable = load(patentFile) |
| 24 | + | database = load(databaseFile) |
| 25 | - | numPats = #patTable |
| 25 | + | numData = #database |
| 26 | cpn = 1 | |
| 27 | - | patentWriting = false |
| 27 | + | dataWriting = false |
| 28 | - | |
| 28 | + | |
| 29 | local function checkCurNumber() | |
| 30 | - | if cpn > numPats then cpn = numPats end |
| 30 | + | if cpn > numData then cpn = numData end |
| 31 | if cpn < 1 then cpn = 1 end | |
| 32 | end | |
| 33 | - | |
| 33 | + | |
| 34 | - | local function writePatent() |
| 34 | + | local function writeData() |
| 35 | patentWriting = true | |
| 36 | - | newPatNum = numPats + 1 |
| 36 | + | newDataNum = numData + 1 |
| 37 | term.clear() | |
| 38 | term.setCursorPos(1,1) | |
| 39 | term.write("Owner: ")
| |
| 40 | - | patentOwner = read() |
| 40 | + | dOwner = read() |
| 41 | term.setCursorPos(1,2) | |
| 42 | term.write("Name: ")
| |
| 43 | - | patentName = read() |
| 43 | + | dName = read() |
| 44 | term.setCursorPos(1,3) | |
| 45 | term.write("Description: ")
| |
| 46 | - | patentDesc = read() |
| 46 | + | dDesc = read() |
| 47 | ||
| 48 | - | patTable[newPatNum] = {owner = patentOwner,name = patentName,desc = patentDesc}
|
| 48 | + | database[newDataNum] = {owner = dOwner,name = dName,desc = dDesc}
|
| 49 | patentWriting = false | |
| 50 | - | save(patTable,patentFile) |
| 50 | + | save(database,patentFile) |
| 51 | - | numPats = #patTable |
| 51 | + | numData = #database |
| 52 | term.clear() | |
| 53 | end | |
| 54 | - | |
| 54 | + | |
| 55 | - | local function deletePatent(tbl,num) |
| 55 | + | local function deleteData(tbl,num) |
| 56 | dataWriting = true | |
| 57 | term.clear() | |
| 58 | term.setCursorPos(1,1) | |
| 59 | - | term.write("Are you sure you want to delete this patent? (y/n)")
|
| 59 | + | term.write("Are you sure you want to delete this data? (y/n)")
|
| 60 | term.setCursorPos(1,2) | |
| 61 | acceptance = read() | |
| 62 | if acceptance == "y" then | |
| 63 | term.setCursorPos(1,3) | |
| 64 | term.write("Please enter the admin password: ")
| |
| 65 | local password = read("*")
| |
| 66 | if adminPassword == password then | |
| 67 | table.remove(tbl,num) | |
| 68 | term.setCursorPos(1,5) | |
| 69 | - | print("Patent deleted. A copy is stored on the working disk, and a read only copy is stored on the backup disk.")
|
| 69 | + | print("Data deleted. A copy is stored on the working disk, and a read only copy is stored on the backup disk.")
|
| 70 | else | |
| 71 | term.setCursorPos(1,5) | |
| 72 | - | print("PASSWORD INCORRECT, RETURNING TO VIEW ONLY.")
|
| 72 | + | print("Password incorrect, returning to data view")
|
| 73 | end | |
| 74 | sleep(1) | |
| 75 | - | numPats = #patTable |
| 75 | + | numData = #database |
| 76 | - | save(patTable,patentFile) |
| 76 | + | save(database,databaseFile) |
| 77 | - | patentWriting = false |
| 77 | + | dataWriting = false |
| 78 | term.clear() | |
| 79 | end | |
| 80 | end | |
| 81 | - | |
| 81 | + | |
| 82 | local function handleKeys() | |
| 83 | while true do | |
| 84 | _,key = os.pullEvent("key")
| |
| 85 | if key == keys.q then cpn = cpn - 1 term.clear() end | |
| 86 | if key == keys.e then cpn = cpn + 1 term.clear() end | |
| 87 | - | if key == keys.p then writePatent() end |
| 87 | + | if key == keys.p then writeData() end |
| 88 | - | if key == keys.semiColon then deletePatent(patTable,cpn) end |
| 88 | + | if key == keys.semiColon then deleteData(database,cpn) end |
| 89 | end | |
| 90 | end | |
| 91 | - | |
| 91 | + | |
| 92 | local function main() | |
| 93 | while true do | |
| 94 | - | if patentWriting == false then |
| 94 | + | if not patentWriting then |
| 95 | term.setCursorPos(1,1) | |
| 96 | term.clearLine() | |
| 97 | term.setTextColour(colours.white) | |
| 98 | - | centerText(tostring(cpn) .. "/" .. tostring(numPats),1) |
| 98 | + | centerText(tostring(cpn) .. "/" .. tostring(numData),1) |
| 99 | checkCurNumber() | |
| 100 | - | if patTable[cpn] ~= nil then |
| 100 | + | if database[cpn] ~= nil then |
| 101 | term.setTextColour(colours.red) | |
| 102 | - | centerText("Owner: "..patTable[cpn]["owner"],2)
|
| 102 | + | centerText("Owner: "..database[cpn]["owner"],2)
|
| 103 | term.setTextColour(colours.yellow) | |
| 104 | - | centerText("Name: "..patTable[cpn]["name"],3)
|
| 104 | + | centerText("Name: "..database[cpn]["name"],3)
|
| 105 | term.setTextColour(colours.white) | |
| 106 | term.setCursorPos(1,4) | |
| 107 | - | print(patTable[cpn]["desc"]) |
| 107 | + | print(database[cpn]["desc"]) |
| 108 | else | |
| 109 | term.clear() | |
| 110 | end | |
| 111 | end | |
| 112 | sleep(0.1) | |
| 113 | end | |
| 114 | end | |
| 115 | term.clear() | |
| 116 | - | parallel.waitForAny(handleKeys,main) |
| 116 | + | parallel.waitForAny(handleKeys,main) |