向已保存的 table 添加新元素

Adding new elements to a table that has already been saved

所以,我正在开发一个高级代码系统,您可以在其中输入密码,如果密码有效,它会根据您使用的代码奖励您。很简单的想法,但是,我遇到了一些麻烦。

我有一个 table,所有代码看起来像这样:

GameState.PremiumCodesTable = GameState.PremiumCodesTable or {{code = "X45", value = 30}, {code = "MM4", value = 45}, {code = "B47", value = 100}}

基本上,如果游戏是第一次运行,GameState.PremiumCodesTable 将是 nil 并且它会在 GameState table 中创建新元素,这就是 table: {{code = "X45", value = 30}, {code = "MM4", value = 45}, {code = "B47", value = 100}}

现在,当用户使用有效代码时,它 会从 table 中删除。最终用户会找到所有的代码,使用它们并且 GameState.PremiumCodesTable table 将是空的。

现在,我想更新游戏并引入一些新代码来查找。但是,由于 GameState.PremiumCodesTable 已经为空并且 已保存 ,因此它将始终为空。

以后如何添加更多代码?

我有一个解决办法,但我不喜欢,所以我在这里问。我的解决方案是像这样按代码添加代码:

GameState.PremiumCodesTable[1] = GameState.PremiumCodesTable[1] or {code = "X45", value = 30}
GameState.PremiumCodesTable[2] = GameState.PremiumCodesTable[2] or {code = "MM4", value = 45}
GameState.PremiumCodesTable[3] = GameState.PremiumCodesTable[3] or {code = "B47", value = 100}

等等...但是,这需要太多space,所以我希望它只有一个大table像上面那个。

使用保存文件存储已使用的代码字符串数组,然后初始化PremiumCodesTable以包含所有代码的完整数据。这样一来,保存文件只保留最少的信息量,并且您可以最大程度地自由处理保存文件。 (您可能需要将代码数据存储在非数组中table以便于访问。)

GameState.usedCodes = GameState.usedCodes or {}

local PremiumCodesTable = {
  {code = "X45", value = 30},
  {code = "MM4", value = 45},
  {code = "B47", value = 100}
}