using System; using System.Diagnostics; using System.Collections; namespace AMXXRelease { //Holds information about a plugin public class Plugin { public string name; //Plugin output file name public string source; //Source code file public string options; //Compile-time options public string outdir; //Output folder public Plugin(string Name) { name = (string)Name.Clone(); source = (string)Name.Clone(); outdir = "plugins"; } } //Holds information necessary to compile a module/C++ program public class Module { public string sourcedir; //Source directory public string projname; //Output binary name (such as amxmodx_mm) public string build; //Build configuration public string bindir; //Binary directory public string vcproj; //VCProj file name public string outdir; //Output directory public Module() { build = "Release"; outdir = "modules"; } public Module(string name) { build = "Release"; outdir = "modules"; sourcedir = "dlls\\" + name; projname = name + "_amxx"; vcproj = name; } } //Class that represents how a mod wants to be built. //It exports a list of functions, mods, and a few // tidbits of information. It can also hook an extra // step for copying miscellanious files. public abstract class AMod { protected ArrayList m_Modules; protected ArrayList m_Plugins; public abstract string GetName(); public virtual string GetBaseName() { return GetName(); } public AMod() { m_Modules = new ArrayList(); m_Plugins = new ArrayList(); } //called when it's okay to build an extra dir structure // and copy files to it public virtual bool CopyExtraFiles(ABuilder ab, string basedir, string sourcedir) { return true; } //defines a copy prevention filter public virtual bool ExcludeCopy(string file) { return false; } public virtual string GetPluginDir() { return GetName(); } public virtual int GetModules() { return m_Modules.Count; } public virtual Module GetModule(int i) { return (Module)m_Modules[i]; } public virtual int GetPlugins() { return m_Plugins.Count; } public virtual string GetModPath() { return GetName() + "\\addons\\amxmodx"; } public virtual Plugin GetPlugin(int i) { return (Plugin)m_Plugins[i]; } public virtual Plugin AddPlugin(string name) { Plugin pl = new Plugin(name); m_Plugins.Add(pl); return pl; } } }