Use a location set in the implementation of the item functions and WML tags
This commit is contained in:
parent
4b9f5d4485
commit
74e004c265
1 changed files with 8 additions and 8 deletions
|
@ -1,14 +1,14 @@
|
||||||
local helper = wesnoth.require "helper"
|
local helper = wesnoth.require "helper"
|
||||||
local wml_actions = wesnoth.wml_actions
|
local wml_actions = wesnoth.wml_actions
|
||||||
|
|
||||||
local scenario_items = {}
|
local scenario_items = (wesnoth.require "location_set").create()
|
||||||
local next_item_name = 0
|
local next_item_name = 0
|
||||||
local function add_overlay(x, y, cfg)
|
local function add_overlay(x, y, cfg)
|
||||||
wesnoth.interface.add_hex_overlay(x, y, cfg)
|
wesnoth.interface.add_hex_overlay(x, y, cfg)
|
||||||
local items = scenario_items[x * 10000 + y]
|
local items = scenario_items:get(x, y)
|
||||||
if not items then
|
if not items then
|
||||||
items = {}
|
items = {}
|
||||||
scenario_items[x * 10000 + y] = items
|
scenario_items:insert(x, y, items)
|
||||||
end
|
end
|
||||||
table.insert(items,
|
table.insert(items,
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ local function add_overlay(x, y, cfg)
|
||||||
end
|
end
|
||||||
|
|
||||||
function wesnoth.interface.remove_item(x, y, name)
|
function wesnoth.interface.remove_item(x, y, name)
|
||||||
local items = scenario_items[x * 10000 + y]
|
local items = scenario_items:get(x, y)
|
||||||
if not items then return end
|
if not items then return end
|
||||||
wesnoth.interface.remove_hex_overlay(x, y, name)
|
wesnoth.interface.remove_hex_overlay(x, y, name)
|
||||||
if name then
|
if name then
|
||||||
|
@ -37,13 +37,13 @@ function wesnoth.interface.remove_item(x, y, name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not name or #items == 0 then
|
if not name or #items == 0 then
|
||||||
scenario_items[x * 10000 + y] = nil
|
scenario_items:insert(x, y, nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function wesnoth.persistent_tags.item.write(add)
|
function wesnoth.persistent_tags.item.write(add)
|
||||||
for i,v in pairs(scenario_items) do
|
for x,y,v in scenario_items:iter() do
|
||||||
for j,w in ipairs(v) do
|
for i,w in ipairs(v) do
|
||||||
add(w)
|
add(w)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -95,7 +95,7 @@ function wml_actions.store_items(cfg)
|
||||||
wml.variables[variable] = nil
|
wml.variables[variable] = nil
|
||||||
local index = 0
|
local index = 0
|
||||||
for i, loc in ipairs(wesnoth.get_locations(cfg)) do
|
for i, loc in ipairs(wesnoth.get_locations(cfg)) do
|
||||||
local items = scenario_items[loc[1] * 10000 + loc[2]]
|
local items = scenario_items[loc]
|
||||||
if items then
|
if items then
|
||||||
for j, item in ipairs(items) do
|
for j, item in ipairs(items) do
|
||||||
-- note: item_name can not be part of standard location filter because
|
-- note: item_name can not be part of standard location filter because
|
||||||
|
|
Loading…
Add table
Reference in a new issue