1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
--[[
A few functions to make it easier to include files and folders
Thanks to TheMaw for this idea, this entire file is basically ripped form GearFox.
module functions:
a.AddMixedFolder(foldername, recursive) :: nil
DarkRP style file include(cl_,sv_,sh_)
a.AddCSLuaFolder(foldername,recursive) :: nil
a.AddSHLuaFolder(foldername,recursive) :: nil
a.AddSVLuaFolder(foldername,recursive) :: nil
]]
-- @module autolua
local auto = {}
local function ExecuteOnFolder(dir, recursive, func)
recursive = recursive ~= nil and recursive or false
local path = GM.Folder:gsub("gamemodes/","") .. "/gamemode/"
local fpath = table.concat({path,dir,"/*"})
local files, directories = file.Find(fpath,"LUA")
for k,v in pairs(files) do
if string.GetExtensionFromFilename(v) ~= "lua" then continue end
local callpath = table.concat({path,dir,"/",v})
func(callpath)
end
if recursive then
for k,v in pairs(directories) do
local npath = table.concat({dir,"/",v})
ExecuteOnFolder(npath,true,func)
end
end
end
auto.AddMixedFolder = function(dir,recursive)
ExecuteOnFolder(dir,recursive,function(f)
print("Doing file"..f)
if f:find("/cl_%w+%.lua$") then
print("found cl")
if SERVER then AddCSLuaFile(f) else include(f) end
elseif f:find("/sv_%w+%.lua$") then
print("Foudn sv")
if SERVER then include(f) end
else
print("otherwise")
if SERVER then AddCSLuaFile(f) end
include(f)
end
end)
end
--- Adds files client side.
-- Calls AddCSLuaFile on all files under a folder server side, and include() client side, if the recursive flag is checked, calls all files under all folders as well.
-- @string dir The directory relative to /gamemode/ to add client side
-- @param recursive boolean value that when true includes all sub-folders recursively.
auto.AddLuaCSFolder = function(dir,recursive)
ExecuteOnFolder(dir,recursive,function(f)
if SERVER then AddCSLuaFile(f)
else include(f) end
end)
end
--- Adds files server side.
-- Calls include() on all files under a folder, if the recursive flag is checked, calls all files under all folders as well.
-- @string dir The directory relative to /gamemode/ to add client side
-- @param recursive boolean value that when true includes all sub-folders recursively.
auto.AddLuaSVFolder = function(dir,recursive)
if CLIENT then return end
ExecuteOnFolder(dir,recursive,function(f)
include(f)
end)
end
--- Adds files server side.
-- Calls include() and AddCSLuaFile() on all files under a folder server side, and include() client side, if the recursive flag is checked, calls all files under all folders as well.
-- @string dir The directory relative to /gamemode/ to add client side
-- @param recursive boolean value that when true includes all sub-folders recursively.
auto.AddLuaSHFolder = function(dir,recursive)
ExecuteOnFolder(dir,recursive,function(f)
if SERVER then AddCSLuaFile(f) end
include(f)
end)
end
--- Adds resources for the client to download
-- Calls resource.AddFile() on all files under a directory, recursive.
-- @param the path to add all files under, relative to the /content/ directory.
auto.AddContentFolder = function(dir)
local path = string.format("gamemodes/artery/content/%s/",dir)
local files, directories = file.Find(path .. "*","MOD")
for k,v in pairs(files) do
resource.AddFile(path .. v)
end
for k,v in pairs(directories) do
local npath = table.concat({dir,"/",v})
auto.AddContentFolder(npath)
end
end
return auto
|