File size: 10,834 Bytes
b6a38d7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
-- Register all error texts in MessageText[err] or MessageText[context][err]
-- error codes are listed as literals: MessageText["error code"]
-- named message texts use camel case identifiers: MessageText.ErrorCode
--[[section:errors]]
---
-- Defines two global tables, `MessageText` and `MessageTitle`, to store error message text and titles.
--
-- The `MessageText` table is used to store error message text, where the keys are either literal error codes or camel case identifiers for named message texts.
--
-- The `MessageTitle` table is used to store error message titles, where the keys are context-specific titles.
--
-- These tables are typically populated by calling the `AddMessageContext` function, which adds a new context to the tables.
MessageText = {}
MessageTitle = {}
---
--- Adds a new message context to the `MessageText` and `MessageTitle` tables.
---
--- @param context string The name of the new message context to add.
--- @param ... any Additional contexts to add (optional).
--- @return nil
function AddMessageContext(context, ...)
if not context then
return
end
MessageText[context] = MessageText[context] or {}
MessageTitle[context] = MessageTitle[context] or {}
return AddMessageContext(...)
end
MessageTitle.Generic = T(634182240966, "Error")
MessageTitle.Warning = T(824112417429, "Warning")
MessageText.Generic = T(463126936264, 'An error has occurred: "<err>/<context>"')
MessageText.DlcRequiresUpdate = T(519529788732, "Some downloadable content requires a game update in order to work.")
-- Common errors.
MessageText["File is corrupt"] = T(631831331619, "File is corrupted.")
MessageText["File Not Found"] = T(950959678764, "File not found.")
MessageText["Mount Not Found"] = T(639145562955, "Mount not found.")
MessageText["Access Denied"] = T(157438408284, "Access denied.")
MessageText["Invalid Parameter"] = T(311342666009, "Invalid parameter.")
MessageText["Allocation Error"] = T(932157256532, "Out of memory.")
MessageText["A file of the same name exists"] = T(493581690114, "File already exists.")
-- PlayStation specific common save data errors. Valid in all contexts.
MessageText["Savegame not initialized"] = T(320309712530, "Storage is not initialized.")
MessageText["Savegame busy"] = T(843835835267, "Storage is busy.")
MessageText["Savegame fingerprint mismatch"] = T(462819971888, "Storage fingerprint mismatch.")
MessageText["Savegame internal"] = T(686870623950, "Savegame internal error.")
MessageText["Savegame mount full"] = T(557131064264, "Storage mount is full.")
MessageText["Savegame bad mounted"] = T(147878217218, "Faulty storage mount.")
MessageText["Savegame invalid login user"] = T(739959355591, "Invalid storage user.")
MessageText["Savegame memory not ready"] = T(850329789527, "Storage memory is not ready.")
MessageText["Savegame not mounted"] = T(166996754616, "Storage is not mounted.")
AddMessageContext("account save")
MessageTitle["account save"].Generic = MessageTitle.Warning
MessageText["account save"].Generic = T(392924077757, "Failed to save your settings")
MessageText["account save"]["Disk Full"] = T(477874811467, "There is not enough storage space. To save your settings, free storage space.")
MessageText["account save"]["Save Storage Full"] = T(947319053929, "The save data limit for this game was reached. To save your settings, delete old save data.")
AddMessageContext("account load")
MessageTitle["account load"].Generic = MessageTitle.Warning
MessageText["account load"].Generic = T(698174397420, 'Failed to load your game settings. "<savename>" save data will be deleted and new save data will be created.')
MessageText["account load"]["File is corrupt"] = T(250310486356, 'Failed to load your game settings. "<savename>" save data is corrupted. This save data will be deleted and new save data will be created.')
AddMessageContext("account use backup")
MessageTitle["account use backup"].Generic = MessageTitle.Warning
MessageText["account use backup"].Generic = T(468273295904, 'Rolled back to previous game settings. Failed to load "<savename>" save data.')
MessageText["account use backup"]["File is corrupt"] = MessageText["account use backup"].Generic
MessageText["account use backup"]["File Not Found"] = T(296060091337, 'Rolled back to previous game settings. "<savename>" save data is missing.')
MessageText["account use backup"]["Path Not Found"] = T(296060091337, 'Rolled back to previous game settings. "<savename>" save data is missing.')
AddMessageContext("account load backup")
MessageTitle["account load backup"].Generic = MessageTitle.Warning
MessageText["account load backup"].Generic = T(235370130285, 'Failed to roll back to previous game settings. Previous "<savename>" save data will be deleted and new save data will be created.')
MessageText["account load backup"]["File is corrupt"] = T(727832925180, 'Failed to roll back to previous game settings. Previous "<savename>" save data is corrupted. This save data will be deleted and new save data will be created.')
AddMessageContext("savegame")
MessageTitle["savegame"].Generic = T(606901390406, "Save Failed")
MessageText["savegame"].Generic = T(408428310307, "Unidentified error while saving <savename>!<newline>Error code: <error_code>")
MessageText["savegame"]["Disk Full"] = T(269487733043, "There is not enough storage space. To save your progress, free storage space.")
MessageText["savegame"]["Save Storage Full"] = T(758106651114, "The save data limit for this game was reached. To save your progress, delete old save data.")
MessageText["savegame"]["Out Of Local Storage"] = T(898462935482, "The local storage of this console is full. To save your progress, free storage space.")
MessageText["savegame"]["Xblive Sync Failed"] = T(293964617315, "There has been a problem with connecting to the cloud savegame storage at this time.")
AddMessageContext("loadgame")
MessageTitle["loadgame"].Generic = T(307531266745, "Load Failed")
MessageText["loadgame"].Generic = T(209917042810, "Could not load <name>.")
MessageText["loadgame"]["File is corrupt"] = T(620584534835, "Could not load <name>.<newline>The savegame is corrupted.")
MessageText["loadgame"]["incompatible"] = T(117116727535, "Please update the game to the latest version to load this savegame.")
MessageText["loadgame"]["corrupt"] = T(726428638755, "The savegame is corrupted.")
MessageText["loadgame"]["Xblive Sync Failed"]= T(293964617315, "There has been a problem with connecting to the cloud savegame storage at this time.")
AddMessageContext("deletegame")
MessageTitle["deletegame"].Generic = MessageTitle.Warning
MessageText["deletegame"].Generic = T(109901281893, "Unable to delete <name>")
AddMessageContext("photo mode")
MessageTitle["photo mode"].Generic = MessageTitle.Warning
MessageText["photo mode"].Generic = T(797434507583, "Failed to take screenshot")
-- Uncomment for next project
-- MessageText["photo mode"]["Disk Full"] = T("There is not enough storage space. To take a screenshot, free storage space.")
-- MessageText["photo mode"]["Busy"] = T("Failed because another processing is being executed. Try again.")
---
--- Returns the error message text for the given error and context.
---
--- @param err string The error code or message.
--- @param context string The error context.
--- @param obj table Optional table of parameters to substitute in the error message.
--- @return string The error message text.
function GetErrorText(err, context, obj)
err = tostring(err or "no err")
context = tostring(context or "unknown")
local tcontext = MessageText[context]
local text = tcontext and tcontext[err] or MessageText[err]
if text then
return type(text) == "function" and text() or T {text, obj}
end
text = tcontext and tcontext.Generic or MessageText.Generic
if not text then
return ""
end
return T {text, obj, err=Untranslated(err), context=Untranslated(context)}
end
---
--- Returns the error message title for the given error and context.
---
--- @param err string The error code or message.
--- @param context string The error context.
--- @return string The error message title.
function GetErrorTitle(err, context)
err = tostring(err or "no err")
context = tostring(context or "unknown")
local tcontext = MessageTitle[context]
local text = tcontext and tcontext[err] or MessageTitle[err]
if text then
return text
end
return tcontext and tcontext.Generic or MessageTitle.Generic or ""
end
---
--- Creates an error message box with the given error and context.
---
--- @param err string The error code or message.
--- @param context string The error context.
--- @param ok_text string The text for the OK button.
--- @param parent table The parent UI element for the message box.
--- @param obj table Optional table of parameters to substitute in the error message.
--- @return table The created message box.
function CreateErrorMessageBox(err, context, ok_text, parent, obj)
RecordError("msg", err, context)
return CreateMessageBox(parent, GetErrorTitle(err, context), GetErrorText(err, context, obj), ok_text, obj)
end
---
--- Creates a message box with the given error and context, and waits for the user to dismiss it.
---
--- @param err string The error code or message.
--- @param context string The error context.
--- @param ok_text string The text for the OK button.
--- @param parent table The parent UI element for the message box.
--- @param obj table Optional table of parameters to substitute in the error message.
--- @return table The created message box.
function WaitErrorMessage(err, context, ok_text, parent, obj)
RecordError("msg", err, context)
return WaitMessage(parent or terminal.desktop, GetErrorTitle(err, context), GetErrorText(err, context, obj),
ok_text, obj)
end
---
--- Records an error with the given action, error code or message, and context.
---
--- @param action string The action that triggered the error, such as "msg" or "ignore".
--- @param err string The error code or message.
--- @param context string The error context.
function RecordError(action, err, context)
if Platform.ged then
return
end
local stack = GetStack(2) or "(no stack)"
action = tostring(action or "unknown")
err = tostring(err or "no err")
context = tostring(context or "unknown")
NetRecord("err-" .. action, err, context, stack)
DebugPrint(string.format("err-%s: %s (%s)\n%s\n", action, err, context, stack))
printf("err-%s: %s (%s)", action, err, context)
end
---
--- Records an error with the given action, error code or message, and context, and ignores the error.
---
--- @param err string The error code or message.
--- @param context string The error context.
function IgnoreError(err, context)
RecordError("ignore", err, context)
end
|