Implement support for Spritemaps
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
widelands |
Won't Fix
|
Undecided
|
GunChleoc |
Bug Description
Since we now have a zoom feature, it would be nice to have higher-resolution graphics. This will mean an increase in filesize though, so we should have support for spritemaps.
There have been 2 approaches to implement utils/make_
1. A grid that joins the images together (trunk)
2. A compact spritemap that analyzes the image content and saves a lot of space (lp:~widelands-dev/widelands/spritemaps_testing)
I have attached an image comparing the 2 approaches.
I have pretty much implemented the C++ part for the second approach, but the python script still needs work if we want to use that. I would be in favor of option 2 if we can fix the script.
Either script would need adjusting so they will write to Lua format rather than the old conf format.
Related branches
- Benedikt Straub: Approve
-
Diff: 3640 lines (+640/-486)29 files modifieddata/scripting/mapobjects.lua (+109/-25)
data/tribes/buildings/productionsites/barbarians/shipyard/init.lua (+7/-18)
data/tribes/buildings/warehouses/barbarians/warehouse/init.lua (+5/-10)
data/tribes/frisians.lua (+0/-1)
data/tribes/immovables/barleyfield_harvested/init.lua (+0/-1)
data/tribes/immovables/barleyfield_medium/init.lua (+0/-1)
data/tribes/immovables/barleyfield_ripe/init.lua (+0/-1)
data/tribes/immovables/barleyfield_small/init.lua (+0/-1)
data/tribes/immovables/barleyfield_tiny/init.lua (+0/-1)
data/tribes/immovables/berry_bushes/blueberry/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/currant_black/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/currant_red/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/desert_hackberry/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/juniper/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/raspberry/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/sea_buckthorn/init.lua (+16/-28)
data/tribes/immovables/berry_bushes/strawberry/init.lua (+16/-28)
data/tribes/immovables/pond_dry/init.lua (+0/-1)
data/tribes/immovables/pond_growing/init.lua (+0/-1)
data/tribes/immovables/pond_mature/init.lua (+0/-1)
data/tribes/immovables/shipconstruction_frisians/init.lua (+0/-1)
data/tribes/workers/barbarians/builder/init.lua (+6/-15)
data/tribes/workers/barbarians/recruit/init.lua (+2/-7)
data/tribes/workers/barbarians/shipwright/init.lua (+6/-14)
doc/sphinx/source/animations.rst (+190/-62)
src/graphic/animation.cc (+183/-92)
src/graphic/animation.h (+2/-2)
src/graphic/rendertarget.cc (+2/-2)
src/logic/map_objects/map_object.cc (+0/-5)
- Widelands Developers: Pending requested
-
Diff: 4552 lines (+2060/-499)51 files modified.bzrignore (+1/-0)
compile.sh (+1/-0)
data/tribes/barbarians.lua (+16/-5)
data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua (+26/-11)
data/tribes/workers/barbarians/carrier/init.lua (+32/-7)
doc/sphinx/source/animations.rst (+75/-0)
src/graphic/CMakeLists.txt (+2/-8)
src/graphic/animation/CMakeLists.txt (+28/-0)
src/graphic/animation/animation.cc (+195/-0)
src/graphic/animation/animation.h (+129/-76)
src/graphic/animation/animation_manager.cc (+74/-0)
src/graphic/animation/animation_manager.h (+73/-0)
src/graphic/animation/diranimations.cc (+30/-0)
src/graphic/animation/diranimations.h (+3/-3)
src/graphic/animation/nonpacked_animation.cc (+50/-336)
src/graphic/animation/nonpacked_animation.h (+84/-0)
src/graphic/animation/spritesheet_animation.cc (+222/-0)
src/graphic/animation/spritesheet_animation.h (+96/-0)
src/graphic/graphic.cc (+1/-1)
src/graphic/rendertarget.cc (+2/-1)
src/graphic/text/CMakeLists.txt (+1/-0)
src/graphic/text/rt_render.cc (+2/-1)
src/logic/map_objects/CMakeLists.txt (+1/-0)
src/logic/map_objects/bob.h (+1/-2)
src/logic/map_objects/immovable.cc (+1/-0)
src/logic/map_objects/immovable.h (+0/-1)
src/logic/map_objects/map_object.cc (+14/-6)
src/logic/map_objects/map_object.h (+3/-2)
src/logic/map_objects/tribes/constructionsite.cc (+6/-5)
src/logic/map_objects/tribes/dismantlesite.cc (+0/-1)
src/logic/map_objects/tribes/ship.h (+1/-1)
src/logic/map_objects/tribes/soldier.cc (+1/-0)
src/logic/map_objects/tribes/tribe_descr.cc (+32/-23)
src/logic/map_objects/tribes/tribe_descr.h (+7/-1)
src/logic/map_objects/tribes/tribes.cc (+10/-0)
src/logic/map_objects/tribes/tribes.h (+3/-0)
src/logic/map_objects/tribes/ware_descr.cc (+0/-1)
src/logic/map_objects/tribes/worker_descr.cc (+0/-2)
src/logic/map_objects/tribes/worker_descr.h (+1/-1)
src/logic/map_objects/world/critter.h (+1/-1)
src/logic/map_objects/world/terrain_description.cc (+2/-2)
src/scripting/lua_root.cc (+36/-0)
src/scripting/lua_root.h (+1/-0)
src/website/CMakeLists.txt (+19/-0)
src/website/create_spritesheet.cc (+361/-0)
src/website/lua/CMakeLists.txt (+10/-0)
src/website/lua/lua_tree.cc (+165/-0)
src/website/lua/lua_tree.h (+98/-0)
src/website/lua/value.cc (+62/-0)
src/website/lua/value.h (+76/-0)
test/maps/plain.wmf/scripting/test_ui.lua (+5/-1)
- Benedikt Straub: Approve
- GunChleoc: Needs Resubmitting
-
Diff: 1348 lines (+229/-92)53 files modifieddata/campaigns/atl01.wmf/scripting/mission_thread.lua (+2/-3)
data/campaigns/atl01.wmf/scripting/texts.lua (+2/-2)
data/campaigns/bar01.wmf/scripting/texts.lua (+10/-10)
data/scripting/editor/editor_help.lua (+1/-1)
data/scripting/editor/terrain_help.lua (+1/-1)
data/scripting/editor/tree_help.lua (+1/-1)
data/scripting/richtext.lua (+41/-1)
data/tribes/immovables/resi/atlanteans/init.lua (+10/-0)
data/tribes/immovables/resi/barbarians/init.lua (+10/-0)
data/tribes/immovables/resi/empire/init.lua (+10/-0)
data/tribes/immovables/resi/frisians/init.lua (+10/-0)
data/tribes/immovables/shipconstruction_atlanteans/init.lua (+2/-1)
data/tribes/immovables/shipconstruction_barbarians/init.lua (+2/-1)
data/tribes/immovables/shipconstruction_empire/init.lua (+2/-1)
data/tribes/immovables/shipconstruction_frisians/init.lua (+2/-1)
data/tribes/scripting/help/building_help.lua (+3/-3)
data/tribes/scripting/help/immovable_help.lua (+1/-1)
data/world/immovables/trees/alder/init.lua (+1/-0)
data/world/immovables/trees/aspen/init.lua (+1/-0)
data/world/immovables/trees/beech/init.lua (+1/-0)
data/world/immovables/trees/birch/init.lua (+1/-0)
data/world/immovables/trees/cirrus/init.lua (+1/-0)
data/world/immovables/trees/larch/init.lua (+1/-0)
data/world/immovables/trees/liana/init.lua (+1/-0)
data/world/immovables/trees/maple/init.lua (+1/-0)
data/world/immovables/trees/mushroom_dark/init.lua (+1/-0)
data/world/immovables/trees/mushroom_green/init.lua (+1/-0)
data/world/immovables/trees/mushroom_red/init.lua (+1/-0)
data/world/immovables/trees/oak/init.lua (+1/-0)
data/world/immovables/trees/palm_borassus/init.lua (+1/-0)
data/world/immovables/trees/palm_coconut/init.lua (+1/-0)
data/world/immovables/trees/palm_date/init.lua (+1/-0)
data/world/immovables/trees/palm_oil/init.lua (+1/-0)
data/world/immovables/trees/palm_roystonea/init.lua (+1/-0)
data/world/immovables/trees/rowan/init.lua (+1/-0)
data/world/immovables/trees/spruce/init.lua (+1/-0)
data/world/immovables/trees/twine/init.lua (+1/-0)
data/world/immovables/trees/umbrella_green/init.lua (+1/-0)
data/world/immovables/trees/umbrella_red/init.lua (+1/-0)
doc/sphinx/source/animations.rst (+3/-0)
src/graphic/animation.cc (+22/-9)
src/graphic/animation.h (+8/-3)
src/graphic/text/rt_parse.cc (+5/-2)
src/graphic/text/rt_render.cc (+35/-17)
src/logic/map_objects/immovable.cc (+10/-0)
src/logic/map_objects/map_object.cc (+7/-6)
src/logic/map_objects/map_object.h (+0/-4)
src/logic/map_objects/tribes/building.cc (+2/-4)
src/logic/map_objects/tribes/tribe_descr.cc (+2/-2)
src/logic/map_objects/tribes/worker.cc (+2/-3)
src/scripting/lua_map.cc (+0/-13)
src/scripting/lua_map.h (+0/-1)
src/website/map_object_info.cc (+1/-1)
- Toni Förster: Approve
-
Diff: 4547 lines (+822/-805)197 files modifieddata/scripting/mapobjects.lua (+8/-55)
data/sound/wl-sound-docu.csv (+39/-38)
data/tribes/atlanteans.lua (+12/-21)
data/tribes/barbarians.lua (+9/-16)
data/tribes/empire.lua (+10/-19)
data/tribes/frisians.lua (+9/-16)
data/tribes/immovables/berry_bushes/blueberry/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/currant_black/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/currant_red/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/desert_hackberry/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/juniper/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/raspberry/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/sea_buckthorn/init.lua (+4/-4)
data/tribes/immovables/berry_bushes/strawberry/init.lua (+4/-4)
data/tribes/ships/atlanteans/init.lua (+1/-1)
data/tribes/ships/barbarians/init.lua (+1/-1)
data/tribes/ships/empire/init.lua (+1/-1)
data/tribes/ships/frisians/init.lua (+1/-1)
data/tribes/workers/atlanteans/armorsmith/init.lua (+2/-2)
data/tribes/workers/atlanteans/baker/init.lua (+2/-2)
data/tribes/workers/atlanteans/blackroot_farmer/init.lua (+2/-2)
data/tribes/workers/atlanteans/builder/init.lua (+2/-2)
data/tribes/workers/atlanteans/carrier/init.lua (+4/-9)
data/tribes/workers/atlanteans/charcoal_burner/init.lua (+2/-2)
data/tribes/workers/atlanteans/farmer/init.lua (+2/-2)
data/tribes/workers/atlanteans/fishbreeder/init.lua (+1/-1)
data/tribes/workers/atlanteans/fisher/init.lua (+2/-2)
data/tribes/workers/atlanteans/forester/init.lua (+2/-2)
data/tribes/workers/atlanteans/geologist/init.lua (+2/-2)
data/tribes/workers/atlanteans/horse/init.lua (+2/-2)
data/tribes/workers/atlanteans/horsebreeder/init.lua (+1/-1)
data/tribes/workers/atlanteans/hunter/init.lua (+2/-2)
data/tribes/workers/atlanteans/miller/init.lua (+2/-2)
data/tribes/workers/atlanteans/miner/init.lua (+2/-2)
data/tribes/workers/atlanteans/recruit/init.lua (+1/-1)
data/tribes/workers/atlanteans/sawyer/init.lua (+2/-2)
data/tribes/workers/atlanteans/scout/init.lua (+1/-1)
data/tribes/workers/atlanteans/shipwright/init.lua (+2/-2)
data/tribes/workers/atlanteans/smelter/init.lua (+2/-2)
data/tribes/workers/atlanteans/smoker/init.lua (+2/-2)
data/tribes/workers/atlanteans/soldier/init.lua (+1/-1)
data/tribes/workers/atlanteans/spiderbreeder/init.lua (+2/-2)
data/tribes/workers/atlanteans/stonecutter/init.lua (+2/-2)
data/tribes/workers/atlanteans/toolsmith/init.lua (+2/-2)
data/tribes/workers/atlanteans/trainer/init.lua (+2/-2)
data/tribes/workers/atlanteans/weaponsmith/init.lua (+2/-2)
data/tribes/workers/atlanteans/weaver/init.lua (+2/-2)
data/tribes/workers/atlanteans/woodcutter/init.lua (+3/-3)
data/tribes/workers/barbarians/baker/init.lua (+2/-2)
data/tribes/workers/barbarians/blacksmith/init.lua (+2/-2)
data/tribes/workers/barbarians/blacksmith_master/init.lua (+2/-2)
data/tribes/workers/barbarians/brewer/init.lua (+2/-2)
data/tribes/workers/barbarians/brewer_master/init.lua (+2/-2)
data/tribes/workers/barbarians/builder/init.lua (+2/-2)
data/tribes/workers/barbarians/carrier/init.lua (+4/-9)
data/tribes/workers/barbarians/cattlebreeder/init.lua (+2/-2)
data/tribes/workers/barbarians/charcoal_burner/init.lua (+2/-2)
data/tribes/workers/barbarians/farmer/init.lua (+2/-2)
data/tribes/workers/barbarians/fisher/init.lua (+2/-2)
data/tribes/workers/barbarians/gamekeeper/init.lua (+2/-2)
data/tribes/workers/barbarians/gardener/init.lua (+2/-2)
data/tribes/workers/barbarians/geologist/init.lua (+2/-2)
data/tribes/workers/barbarians/helmsmith/init.lua (+2/-2)
data/tribes/workers/barbarians/hunter/init.lua (+2/-2)
data/tribes/workers/barbarians/innkeeper/init.lua (+2/-2)
data/tribes/workers/barbarians/lime_burner/init.lua (+2/-2)
data/tribes/workers/barbarians/lumberjack/init.lua (+3/-4)
data/tribes/workers/barbarians/miner/init.lua (+2/-2)
data/tribes/workers/barbarians/miner_chief/init.lua (+2/-2)
data/tribes/workers/barbarians/miner_master/init.lua (+2/-2)
data/tribes/workers/barbarians/ox/init.lua (+2/-2)
data/tribes/workers/barbarians/ranger/init.lua (+2/-2)
data/tribes/workers/barbarians/recruit/init.lua (+1/-1)
data/tribes/workers/barbarians/scout/init.lua (+2/-2)
data/tribes/workers/barbarians/shipwright/init.lua (+2/-2)
data/tribes/workers/barbarians/smelter/init.lua (+2/-2)
data/tribes/workers/barbarians/soldier/init.lua (+1/-1)
data/tribes/workers/barbarians/stonemason/init.lua (+2/-2)
data/tribes/workers/barbarians/trainer/init.lua (+2/-2)
data/tribes/workers/barbarians/weaver/init.lua (+2/-2)
data/tribes/workers/empire/armorsmith/init.lua (+2/-2)
data/tribes/workers/empire/baker/init.lua (+2/-2)
data/tribes/workers/empire/brewer/init.lua (+2/-2)
data/tribes/workers/empire/builder/init.lua (+2/-2)
data/tribes/workers/empire/carpenter/init.lua (+2/-2)
data/tribes/workers/empire/carrier/init.lua (+4/-9)
data/tribes/workers/empire/charcoal_burner/init.lua (+2/-2)
data/tribes/workers/empire/donkey/init.lua (+2/-2)
data/tribes/workers/empire/donkeybreeder/init.lua (+2/-2)
data/tribes/workers/empire/farmer/init.lua (+2/-2)
data/tribes/workers/empire/fisher/init.lua (+2/-2)
data/tribes/workers/empire/forester/init.lua (+2/-2)
data/tribes/workers/empire/geologist/init.lua (+2/-2)
data/tribes/workers/empire/hunter/init.lua (+2/-2)
data/tribes/workers/empire/innkeeper/init.lua (+2/-2)
data/tribes/workers/empire/lumberjack/init.lua (+3/-4)
data/tribes/workers/empire/miller/init.lua (+2/-2)
data/tribes/workers/empire/miner/init.lua (+2/-2)
data/tribes/workers/empire/miner_master/init.lua (+2/-2)
data/tribes/workers/empire/pigbreeder/init.lua (+2/-2)
data/tribes/workers/empire/recruit/init.lua (+1/-1)
data/tribes/workers/empire/scout/init.lua (+2/-2)
data/tribes/workers/empire/shepherd/init.lua (+2/-2)
data/tribes/workers/empire/shipwright/init.lua (+2/-2)
data/tribes/workers/empire/smelter/init.lua (+2/-2)
data/tribes/workers/empire/soldier/init.lua (+1/-1)
data/tribes/workers/empire/stonemason/init.lua (+2/-2)
data/tribes/workers/empire/toolsmith/init.lua (+2/-2)
data/tribes/workers/empire/trainer/init.lua (+2/-2)
data/tribes/workers/empire/vinefarmer/init.lua (+2/-2)
data/tribes/workers/empire/vintner/init.lua (+2/-2)
data/tribes/workers/empire/weaponsmith/init.lua (+2/-2)
data/tribes/workers/empire/weaver/init.lua (+2/-2)
data/tribes/workers/frisians/baker/init.lua (+2/-2)
data/tribes/workers/frisians/baker_master/init.lua (+2/-2)
data/tribes/workers/frisians/beekeeper/init.lua (+2/-2)
data/tribes/workers/frisians/berry_farmer/init.lua (+1/-1)
data/tribes/workers/frisians/blacksmith/init.lua (+2/-2)
data/tribes/workers/frisians/blacksmith_master/init.lua (+2/-2)
data/tribes/workers/frisians/brewer/init.lua (+2/-2)
data/tribes/workers/frisians/brewer_master/init.lua (+2/-2)
data/tribes/workers/frisians/brickmaker/init.lua (+2/-2)
data/tribes/workers/frisians/builder/init.lua (+2/-2)
data/tribes/workers/frisians/carrier/init.lua (+4/-9)
data/tribes/workers/frisians/charcoal_burner/init.lua (+2/-2)
data/tribes/workers/frisians/claydigger/init.lua (+2/-2)
data/tribes/workers/frisians/farmer/init.lua (+2/-2)
data/tribes/workers/frisians/fisher/init.lua (+2/-2)
data/tribes/workers/frisians/forester/init.lua (+1/-1)
data/tribes/workers/frisians/fruit_collector/init.lua (+2/-2)
data/tribes/workers/frisians/geologist/init.lua (+1/-1)
data/tribes/workers/frisians/hunter/init.lua (+2/-2)
data/tribes/workers/frisians/landlady/init.lua (+2/-2)
data/tribes/workers/frisians/miner/init.lua (+2/-2)
data/tribes/workers/frisians/miner_master/init.lua (+2/-2)
data/tribes/workers/frisians/reed_farmer/init.lua (+2/-2)
data/tribes/workers/frisians/reindeer/init.lua (+2/-2)
data/tribes/workers/frisians/reindeer_breeder/init.lua (+2/-2)
data/tribes/workers/frisians/scout/init.lua (+2/-2)
data/tribes/workers/frisians/seamstress/init.lua (+2/-2)
data/tribes/workers/frisians/seamstress_master/init.lua (+2/-2)
data/tribes/workers/frisians/shipwright/init.lua (+2/-2)
data/tribes/workers/frisians/smelter/init.lua (+2/-2)
data/tribes/workers/frisians/smoker/init.lua (+2/-2)
data/tribes/workers/frisians/soldier/init.lua (+4/-4)
data/tribes/workers/frisians/stonemason/init.lua (+2/-2)
data/tribes/workers/frisians/trainer/init.lua (+2/-2)
data/tribes/workers/frisians/woodcutter/init.lua (+4/-2)
data/world/critters/badger/init.lua (+1/-1)
data/world/critters/brownbear/init.lua (+1/-1)
data/world/critters/bunny/init.lua (+1/-1)
data/world/critters/chamois/init.lua (+1/-1)
data/world/critters/deer/init.lua (+1/-1)
data/world/critters/duck/init.lua (+1/-1)
data/world/critters/elk/init.lua (+1/-1)
data/world/critters/fox/init.lua (+1/-1)
data/world/critters/lynx/init.lua (+1/-1)
data/world/critters/marten/init.lua (+1/-1)
data/world/critters/reindeer/init.lua (+1/-1)
data/world/critters/sheep/init.lua (+1/-1)
data/world/critters/stag/init.lua (+1/-1)
data/world/critters/wildboar/init.lua (+1/-1)
data/world/critters/wisent/init.lua (+1/-1)
data/world/critters/wolf/init.lua (+1/-1)
data/world/immovables/grass1/init.lua (+1/-1)
data/world/immovables/grass2/init.lua (+1/-1)
data/world/immovables/grass3/init.lua (+1/-1)
doc/sphinx/source/animations.rst (+30/-59)
src/CMakeLists.txt (+0/-1)
src/game_io/game_loader.cc (+2/-1)
src/graphic/animation.cc (+165/-143)
src/graphic/animation.h (+8/-4)
src/helper.h (+0/-13)
src/io/filesystem/disk_filesystem.cc (+2/-2)
src/io/filesystem/disk_filesystem.h (+2/-2)
src/io/filesystem/filesystem.cc (+81/-0)
src/io/filesystem/filesystem.h (+20/-2)
src/io/filesystem/layered_filesystem.cc (+2/-2)
src/io/filesystem/layered_filesystem.h (+2/-2)
src/io/filesystem/zip_filesystem.cc (+2/-2)
src/io/filesystem/zip_filesystem.h (+2/-2)
src/logic/map_objects/map_object.cc (+47/-18)
src/logic/map_objects/map_object.h (+8/-4)
src/logic/map_objects/tribes/ship.cc (+1/-1)
src/logic/map_objects/tribes/tribe_descr.cc (+6/-4)
src/logic/map_objects/tribes/worker_descr.cc (+3/-3)
src/logic/map_objects/world/critter.cc (+1/-1)
src/map_io/CMakeLists.txt (+0/-1)
src/map_io/map_scripting_packet.cc (+1/-2)
src/scripting/lua_path.cc (+5/-1)
src/sound/fxset.cc (+9/-16)
src/sound/fxset.h (+4/-2)
src/sound/songset.cc (+1/-5)
src/sound/sound_handler.cc (+4/-0)
src/sound/sound_handler.h (+2/-0)
src/wlapplication.cc (+5/-6)
src/wui/load_or_save_game.cc (+2/-3)
Changed in widelands: | |
assignee: | nobody → GunChleoc (gunchleoc) |
status: | New → In Progress |
Changed in widelands: | |
milestone: | build20-rc1 → build21-rc1 |
I am also in favor of 2, but instead of using the python script, I would rewrite it in c++. When this script was started, our build system did not easily allow multiple binaries to be built. And the code could benefit from having access to the graphics system and the lua dictionary parsing that is already implemented in c++.