1-------------------------------------------------------------------------------- 2-------------------------------------------------------------------------------- 3-- 4-- file: resources.lua 5-- brief: resources.tdf lua parser 6-- author: Craig Lawrence, Dave Rodgers 7-- 8-- Copyright (C) 2007. 9-- Licensed under the terms of the GNU GPL, v2 or later. 10-- 11-------------------------------------------------------------------------------- 12-------------------------------------------------------------------------------- 13 14local TDF = VFS.Include('gamedata/parse_tdf.lua') 15 16local resources, err = TDF.Parse('gamedata/resources.tdf') 17 18-------------------------------------------------------------------------------- 19 20 21if (resources == nil) then 22 -- load the defaults 23 resources = { 24 graphics = { 25 caustics = { 26 'caustics/caustic00.jpg', 27 'caustics/caustic01.jpg', 28 'caustics/caustic02.jpg', 29 'caustics/caustic03.jpg', 30 'caustics/caustic04.jpg', 31 'caustics/caustic05.jpg', 32 'caustics/caustic06.jpg', 33 'caustics/caustic07.jpg', 34 'caustics/caustic08.jpg', 35 'caustics/caustic09.jpg', 36 'caustics/caustic10.jpg', 37 'caustics/caustic11.jpg', 38 'caustics/caustic12.jpg', 39 'caustics/caustic13.jpg', 40 'caustics/caustic14.jpg', 41 'caustics/caustic15.jpg', 42 'caustics/caustic16.jpg', 43 'caustics/caustic17.jpg', 44 'caustics/caustic18.jpg', 45 'caustics/caustic19.jpg', 46 'caustics/caustic20.jpg', 47 'caustics/caustic21.jpg', 48 'caustics/caustic22.jpg', 49 'caustics/caustic23.jpg', 50 'caustics/caustic24.jpg', 51 'caustics/caustic25.jpg', 52 'caustics/caustic26.jpg', 53 'caustics/caustic27.jpg', 54 'caustics/caustic28.jpg', 55 'caustics/caustic29.jpg', 56 'caustics/caustic30.jpg', 57 'caustics/caustic31.jpg', 58 }, 59 smoke = { 60 'smoke/smoke00.tga', 61 'smoke/smoke01.tga', 62 'smoke/smoke02.tga', 63 'smoke/smoke03.tga', 64 'smoke/smoke04.tga', 65 'smoke/smoke05.tga', 66 'smoke/smoke06.tga', 67 'smoke/smoke07.tga', 68 'smoke/smoke08.tga', 69 'smoke/smoke09.tga', 70 'smoke/smoke10.tga', 71 'smoke/smoke11.tga', 72 }, 73 scars = { 74 'scars/scar1.bmp', 75 'scars/scar2.bmp', 76 'scars/scar3.bmp', 77 'scars/scar4.bmp', 78 }, 79 trees = { 80 bark = 'Bark.bmp', 81 leaf = 'bleaf.bmp', 82 gran1 = 'gran.bmp', 83 gran2 = 'gran2.bmp', 84 birch1 = 'birch1.bmp', 85 birch2 = 'birch2.bmp', 86 birch3 = 'birch3.bmp', 87 }, 88 maps = { 89 detailtex = 'detailtex2.bmp', 90 watertex = 'ocean.jpg', 91 }, 92 groundfx = { 93 groundflash = 'groundflash.tga', 94 groundring = 'groundring.tga', 95 seismic = 'circles.tga', 96 }, 97 projectiletextures = { 98 circularthingy = 'circularthingy.tga', 99 laserend = 'laserend.tga', 100 laserfalloff = 'laserfalloff.tga', 101 randdots = 'randdots.tga', 102 smoketrail = 'smoketrail.tga', 103 wake = 'wake.tga', 104 flare = 'flare.tga', 105 explo = 'explo.tga', 106 explofade = 'explofade.tga', 107 heatcloud = 'explo.tga', 108 flame = 'flame.tga', 109 muzzleside = 'muzzleside.tga', 110 muzzlefront = 'muzzlefront.tga', 111 largebeam = 'largelaserfalloff.tga', 112 }, 113 } 114 } 115 116else 117 resources = resources.resources 118 119 local function MakeArray(t, prefix) 120 if (type(t) ~= 'table') then 121 return nil 122 end 123 124 local sorted = {} 125 for k,v in pairs(t) do 126 if ((type(k) == 'string') and (type(v) == 'string')) then 127 local s, e, p, num = k:find('(%D*)(%d*)') 128 num = tonumber(num) 129 if ((p == prefix) and num) then 130 table.insert(sorted, { num, v }) 131 end 132 end 133 end 134 table.sort(sorted, function(a, b) 135 if (a[1] < b[1]) then return true end 136 if (b[1] < a[1]) then return false end 137 return (a[2] < b[2]) 138 end) 139 140 local newTable = {} 141 for _,numVal in ipairs(sorted) do 142 table.insert(newTable, numVal[2]) 143 end 144 return newTable 145 end 146 147 local gfx = resources.graphics 148 gfx.smoke = MakeArray(gfx.smoke, 'smoke') 149 gfx.scars = MakeArray(gfx.scars, 'scar') 150 gfx.caustics = MakeArray(gfx.caustics, 'caustic') 151end 152 153-------------------------------------------------------------------------------- 154 155return resources 156 157-------------------------------------------------------------------------------- 158-------------------------------------------------------------------------------- 159