[wesnoth-commits] [wesnoth/wesnoth] 810240: Add a utility function to extract a location from ...
Celtic Minstrel
noreply at github.com
Mon Feb 22 18:44:47 UTC 2021
Branch: refs/heads/lua_gamemap
Home: https://github.com/wesnoth/wesnoth
Commit: 8102404c49d0d128b50e30c9be0dd414ab64a1cb
https://github.com/wesnoth/wesnoth/commit/8102404c49d0d128b50e30c9be0dd414ab64a1cb
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M data/lua/location_set.lua
Log Message:
-----------
Add a utility function to extract a location from the front of a variadic parameter pack
The purpose of this is to make it easy for functions implemented in Lua to handle locations
in the same way as functions implemented in C++.
The location_set module has been updated to make use of this functionality in its setter functions.
Usage example:
Imagine a function foo with the following signature:
foo(bar : string, home : location, mode : string, target : location, moo : boolean) -> boolean
With the new read_location function it could be implemented as follows:
function foo(...)
-- First argument goes in bar
local bar = ...
-- Read location starting at the second argument
local home, n = wesnoth.mP.read_location(select(2, ...))
-- note: n will be 0 if a location wasn't found at that position
-- This could be an error, or it could be handled as an optional parameter
-- Next argument after that goes in mode
local mode = select(n + 2, ...)
-- Then read a location into target
local target, m = wesnoth.map.read_location(select(n + 2, ...))
-- Finally, read a parameter into moo
local moo = select(m + n + 2, ...)
-- Do stuff with all these parameters
return true
end
With that code, all the following invocations of foo work:
foo('a', 'b', true) -- both optional locations omitted
foo('a', 1, 2, 'q', 5, 6, false) -- locations given as separate integer parameters
foo('a', 'm', {1, 7}, true) -- first location omitted, second given as 2-element array
foo('a', some_unit, 'z', {x = 5, y = 10}, false) -- a unit also functions as a location
foo('a', 7, 12, 'q', my_leader, true) -- mixing different forms also works
Commit: 10bb9a35caf079a11e0d78134bd395c671e41068
https://github.com/wesnoth/wesnoth/commit/10bb9a35caf079a11e0d78134bd395c671e41068
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M src/editor/action/action.cpp
M src/editor/action/mouse/mouse_action.cpp
M src/editor/map/editor_map.cpp
M src/game_board.cpp
M src/game_board.hpp
M src/map/map.cpp
M src/map/map.hpp
M src/scripting/game_lua_kernel.cpp
M src/scripting/game_lua_kernel.hpp
M src/scripting/lua_terrainfilter.cpp
M src/scripting/lua_terrainfilter.hpp
M src/scripting/lua_terrainmap.cpp
M src/scripting/lua_terrainmap.hpp
M src/scripting/mapgen_lua_kernel.cpp
Log Message:
-----------
Refactor the game map to permit exposing it to Lua via wesnoth.current.map
The method of accessing terrain on the map has drastically changed.
- wesnoth.get_terrain and wesnoth.set_terrain are both deprecated
- wesnoth.terrain_mask still works but is moved into the wesnoth.map module and now takes the map object as the first parameter
- The map's terrain is now accessed exclusively via indexing on the map object, ie map[{x,y}]
- You set terrain by assigning a terrain code; the position of ^ in the terrain code now determines the merge mode
- The replace_if_failed option is now manifested as a function that converts any terrain code into a special value that, when assigned to a location on the map, uses the replace if failed logic.
The map object has a few attributes in it:
- width and height are the total size, including borders
- playable_width and playable_height are the values returned from wesnoth.get_map_size, which is now deprecated
- border_size is the third value from wesnoth.get_map_size
- data converts the map to a string
- Special locations are now part of the map object. The length operator is deprecated.
- other than that, wesnoth.map is treated as if it were the metatable of the map object
Commit: dbb527bda601d641b9a158ff63863302ff1661f0
https://github.com/wesnoth/wesnoth/commit/dbb527bda601d641b9a158ff63863302ff1661f0
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M src/scripting/game_lua_kernel.cpp
M src/scripting/game_lua_kernel.hpp
Log Message:
-----------
Move various functions into the map module
Commit: 07c218f62bdaa66520c161b40098eb3c5a310b00
https://github.com/wesnoth/wesnoth/commit/07c218f62bdaa66520c161b40098eb3c5a310b00
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M src/scripting/game_lua_kernel.cpp
M src/scripting/lua_terrainfilter.cpp
M src/scripting/lua_terrainmap.cpp
M src/scripting/lua_terrainmap.hpp
M src/scripting/mapgen_lua_kernel.cpp
Log Message:
-----------
Rename existing map functions in the map generation kernel
Commit: 3a696757c78bf403246a358735c86109cf1506a1
https://github.com/wesnoth/wesnoth/commit/3a696757c78bf403246a358735c86109cf1506a1
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M src/scripting/lua_kernel_base.cpp
Log Message:
-----------
Rename two functions for consistency of terminology
Commit: c4eeb92e6a0e8b074dbd768acf83e5bd1b3f79ff
https://github.com/wesnoth/wesnoth/commit/c4eeb92e6a0e8b074dbd768acf83e5bd1b3f79ff
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M src/scripting/game_lua_kernel.cpp
M src/scripting/game_lua_kernel.hpp
Log Message:
-----------
Add wesnoth.map.get_label
Commit: 24e8bf05798d13a46e0e4cf1b8585b05722d858e
https://github.com/wesnoth/wesnoth/commit/24e8bf05798d13a46e0e4cf1b8585b05722d858e
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M src/scripting/lua_kernel_base.cpp
M src/scripting/lua_map_location_ops.cpp
M src/scripting/lua_map_location_ops.hpp
Log Message:
-----------
Add wesnoth.map.get_hexes_in_radius
Commit: 416a461aa811a4ca8e75e19685fdeded672b92ac
https://github.com/wesnoth/wesnoth/commit/416a461aa811a4ca8e75e19685fdeded672b92ac
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M src/scripting/game_lua_kernel.cpp
M src/scripting/lua_terrainmap.cpp
M src/scripting/lua_terrainmap.hpp
Log Message:
-----------
Add on_board and on_border map methods
Commit: 6d6452fa2a260c3de2be31a728dfa70f88db7938
https://github.com/wesnoth/wesnoth/commit/6d6452fa2a260c3de2be31a728dfa70f88db7938
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M src/scripting/game_lua_kernel.cpp
M src/scripting/lua_terrainmap.cpp
M src/scripting/lua_terrainmap.hpp
Log Message:
-----------
Implement a map iterator
Commit: 2042282bc8b3cacd3bf8d494be1a4594f33329e0
https://github.com/wesnoth/wesnoth/commit/2042282bc8b3cacd3bf8d494be1a4594f33329e0
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
Log Message:
-----------
Add a terrain hex reference API
This adds a metatable to all locations returned from wesnoth.map.find.
Commit: 80747bc28f2cf46f79a2815e36b759b8ed463824
https://github.com/wesnoth/wesnoth/commit/80747bc28f2cf46f79a2815e36b759b8ed463824
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/core/map.lua
M src/scripting/game_lua_kernel.cpp
M src/scripting/game_lua_kernel.hpp
Log Message:
-----------
Add a wesnoth.terrain_types table
Commit: 9f97aff62f6ba2dd228314df80ff0b8598fe99e4
https://github.com/wesnoth/wesnoth/commit/9f97aff62f6ba2dd228314df80ff0b8598fe99e4
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/ai/lua/ai_helper.lua
M data/ai/lua/battle_calcs.lua
M data/ai/lua/ca_castle_switch.lua
M data/ai/lua/ca_grab_villages.lua
M data/ai/lua/ca_recruit_rushers.lua
M data/ai/lua/ca_spread_poison.lua
M data/ai/lua/ca_village_hunt.lua
M data/ai/lua/generic_recruit_engine.lua
M data/ai/lua/retreat.lua
M data/ai/micro_ais/cas/ca_assassin_move.lua
M data/ai/micro_ais/cas/ca_big_animals.lua
M data/ai/micro_ais/cas/ca_bottleneck_move.lua
M data/ai/micro_ais/cas/ca_fast_attack_utils.lua
M data/ai/micro_ais/cas/ca_fast_move.lua
M data/ai/micro_ais/cas/ca_forest_animals_new_rabbit.lua
M data/ai/micro_ais/cas/ca_goto.lua
M data/ai/micro_ais/cas/ca_healer_move.lua
M data/ai/micro_ais/cas/ca_herding_dog_move.lua
M data/ai/micro_ais/cas/ca_herding_f_herding_area.lua
M data/ai/micro_ais/cas/ca_herding_herd_sheep.lua
M data/ai/micro_ais/cas/ca_lurkers.lua
M data/ai/micro_ais/cas/ca_protect_unit_move.lua
M data/ai/micro_ais/cas/ca_recruit_random.lua
M data/ai/micro_ais/cas/ca_stationed_guardian.lua
M data/ai/micro_ais/cas/ca_wolves_move.lua
M data/ai/micro_ais/cas/ca_zone_guardian.lua
M data/campaigns/Descent_Into_Darkness/scenarios/04_Spring_of_Reprisal.cfg
M data/campaigns/Eastern_Invasion/ai/ca_ogres_flee.lua
M data/campaigns/Eastern_Invasion/lua/bandits.lua
M data/campaigns/Heir_To_The_Throne/scenarios/13_The_Dwarven_Doors.cfg
M data/campaigns/Northern_Rebirth/lua/respawn_utils.lua
M data/campaigns/Son_Of_The_Black_Eye/ai/ca_transport_S6.lua
M data/campaigns/The_Hammer_of_Thursagan/lua/spawns.lua
M data/campaigns/The_Hammer_of_Thursagan/scenarios/05_Fear.cfg
M data/campaigns/Two_Brothers/ai/ca_muff_toras_move.lua
M data/campaigns/World_Conquest/lua/campaign/autorecall.lua
M data/campaigns/World_Conquest/lua/campaign/enemy.lua
M data/campaigns/World_Conquest/lua/campaign/enemy_themed.lua
M data/campaigns/World_Conquest/lua/game_mechanics/bonus.lua
M data/campaigns/World_Conquest/lua/game_mechanics/supply.lua
M data/campaigns/World_Conquest/lua/map/generator/utilities.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/1A_Start.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/2A_Springs.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/2C_Glaciers.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/2D_Provinces.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/2E_Paradise.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/3C_Delta.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/3F_Wetland.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/4A_Thermal.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/4B_Volcanic.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/4C_Mines.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/6A_Rural.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/6B_Maritime.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/6C_Industrial.lua
M data/campaigns/World_Conquest/lua/map/postgeneration/6D_Feudal.lua
M data/campaigns/World_Conquest/lua/map/postgeneration_utils/engine.lua
M data/campaigns/World_Conquest/lua/map/postgeneration_utils/events.lua
M data/campaigns/World_Conquest/lua/map/postgeneration_utils/noise.lua
M data/campaigns/World_Conquest/lua/map/postgeneration_utils/utilities.lua
M data/campaigns/World_Conquest/lua/map/postgeneration_utils/wild_zones.lua
M data/campaigns/World_Conquest/lua/map/scenario_utils/bonus_points.lua
M data/campaigns/World_Conquest/lua/map/wct_map_generator.lua
M data/campaigns/World_Conquest/lua/optional_mechanics/destruction.lua
M data/lua/helper.lua
M data/lua/location_set.lua
M data/lua/wml-tags.lua
M data/lua/wml/animate_unit.lua
M data/lua/wml/find_path.lua
M data/lua/wml/items.lua
M data/lua/wml/modify_side.lua
M data/lua/wml/random_placement.lua
M data/modifications/pick_advance/main.lua
M data/multiplayer/scenarios/2p_Dark_Forecast.lua
M data/scenario-test.cfg
M src/scripting/lua_terrainmap.cpp
Log Message:
-----------
Update everything to use the new wesnoth.map module
- get_terrain and set_terrain replaced with direct indexing operations
- get_map_size mostly replaced with either the iterator or an on_board call.
Only a few cases really needed to know the size of the map for some other purpose.
- shroud and fog operations, village owner, time areas, and location filters
- get_terrain_info replaced with terrain_types table
- Map generation functions create_map and create_filter
Commit: 698153f99834776ef584936d6589381f4d1f6082
https://github.com/wesnoth/wesnoth/commit/698153f99834776ef584936d6589381f4d1f6082
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M src/map/location.cpp
Log Message:
-----------
No reason to use the less clear implementation, is there?
Commit: 5cd733fc621fc1ff069ffebf49b833372533a429
https://github.com/wesnoth/wesnoth/commit/5cd733fc621fc1ff069ffebf49b833372533a429
Author: Celtic Minstrel <celtic.minstrel.ca at some.place>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M data/lua/wml/modify_side.lua
Log Message:
-----------
Fix [modify_side]reset_maps
Compare: https://github.com/wesnoth/wesnoth/compare/0c1c0d369f12...5cd733fc621f
More information about the Commits
mailing list