Resources.lua - beyond-all-reason/springrts_engine_wiki_mirror GitHub Wiki
Location
resources.lua
is a file in the Gamedata/
directory of a Spring
Game.
resources_map.lua
is a file in the Gamedata/
directory of a Spring
Map.
Purpose
This file is used by a game to reference textures for use in Custom
Explosion Generators, as well as various default
explosions and other engine textures such as default trees and water
etc. Maps have a corresponding file, resources_map.lua
which behaves
in the same way.
Source
The engine source code which parses the data from this file is viewable here:
- (smoke, groundfx & projectiletextures)
resources_map.lua
is only read here.
-
(scars)
-
(trees)
-
(caustics & maps)
Details
The engine loads textures from seven subtables within the graphics
subtable of the returned resources table. Certain tables are
automatically added by the engine if a game is not overriding them, they
are numerical arrays whereas all others are key-value associative
arrays. Engine defaults which are required to be present are included in
the #Automatic example below.
caustics
- Textures used with bumpmapped water. Automatically added by the engine.smoke
- Textures used for engine default smoke. Automatically added by the engine.scars
- Textures used for the burn scars left on the map by weapon explosions. Automatically added by the engine.trees
- Textures for engine default trees.maps
- Base textures in case a map does not provide it's own.groundfx
- Game or Map specific textures for CSimpleGroundFlash CEG's as well as engine default explosion groundflash.projectiletextures
- Game or Map specific textures for the other CEG-Classes as well as engine defaults. This is the only table that is read fromresources_map.lua
Example
Automatic
The following example (which is becoming a de facto
standard) sets out the
engine default textures, and recursively adds any textures from the
game's Bitmaps/projectileTextures/
and Bitmaps/groundFX/
directories, respectively. It will ignore any directories created by
SVN, and can be easily
edited to filter out
git or any other
version control software.
local resources = {
graphics = {
-- Spring Defaults
trees = {
bark = 'Bark.bmp',
leaf = 'bleaf.bmp',
gran1 = 'gran.bmp',
gran2 = 'gran2.bmp',
birch1 = 'birch1.bmp',
birch2 = 'birch2.bmp',
birch3 = 'birch3.bmp',
},
maps = {
detailtex = 'detailtex2.bmp',
watertex = 'ocean.jpg',
},
groundfx = {
groundflash = 'groundflash.tga',
groundring = 'groundring.tga',
seismic = 'circles.tga',
},
projectiletextures = {
circularthingy = 'circularthingy.tga',
laserend = 'laserend.tga',
laserfalloff = 'laserfalloff.tga',
randdots = 'randdots.tga',
smoketrail = 'smoketrail.tga',
wake = 'wake.tga',
flare = 'flare.tga',
explo = 'explo.tga',
explofade = 'explofade.tga',
heatcloud = 'explo.tga',
flame = 'flame.tga',
muzzleside = 'muzzleside.tga',
muzzlefront = 'muzzlefront.tga',
largebeam = 'largelaserfalloff.tga',
},
}
}
local VFSUtils = VFS.Include('gamedata/VFSUtils.lua')
local function AutoAdd(subDir, map, filter)
local dirList = RecursiveFileSearch("bitmaps/" .. subDir)
for _, fullPath in ipairs(dirList) do
local path, key, ext = fullPath:match("bitmaps/(.*/(.*)%.(.*))")
if not fullPath:match("/%.svn") then
local subTable = resources["graphics"][subDir] or {}
resources["graphics"][subDir] = subTable
if not filter or filter == ext then
if not map then
table.insert(subTable, path)
else -- a mapped subtable
subTable[key] = path
end
end
end
end
end
-- Add mod projectiletextures and groundfx
AutoAdd("projectiletextures", true)
AutoAdd("groundfx", true)
return resources
External
- Engine base content resources.lua