z_mirror/Tapeline

git clone https://git.raiguard.me/z_mirror/Tapeline

Caleb HeuerUse color-setting prototype35cfa44

color-setting
1.6 KiB63 linesraw
1local constants = require("__Tapeline__/constants")
2
3local player_data = {}
4
5--- @param player_index uint
6function player_data.init(player_index)
7  --- @class PlayerTable
8  global.players[player_index] = {
9    flags = {
10      editing = false,
11      drawing = false,
12      holding_tool = false,
13      increased_build_distance = false,
14    },
15    --- @type LuaEntity?
16    last_entity = nil,
17    --- @type VisualSettings?
18    visual_settings = nil,
19    tapes = {
20      -- @type TapeData?
21      editing = nil,
22      -- @type TapeData?
23      drawing = nil,
24    },
25    --- @class TapeSettings
26    tape_settings = {
27      mode = "subgrid",
28      subgrid_divisor = 5,
29      split_divisor = 4,
30    },
31  }
32end
33
34--- @param player LuaPlayer
35--- @param settings_table VisualSettings
36--- @param prototype string
37--- @param internal string
38function player_data.update_visual_setting(player, settings_table, prototype, internal)
39  local value = player.mod_settings[prototype].value
40  if string.find(internal, "color") then
41    settings_table[internal] = value --[[@as Color]]
42  else
43    settings_table[internal] = value
44  end
45end
46
47--- @param player LuaPlayer
48--- @param player_table PlayerTable
49function player_data.update_visual_settings(player, player_table)
50  local settings = {}
51  for prototype, internal in pairs(constants.setting_names) do
52    player_data.update_visual_setting(player, settings, prototype, internal)
53  end
54  player_table.visual_settings = settings
55end
56
57--- @param player LuaPlayer
58--- @param player_table PlayerTable
59function player_data.refresh(player, player_table)
60  player_data.update_visual_settings(player, player_table)
61end
62
63return player_data