CustomTheme
Theme typessource
Derived from ThemeInfo
Very basic example how to use a CustomTheme in the procedural levels. Search the examples or check Eternal Flame of Gehenna for custom levels.
-- create a new theme based on dwellinglocal my_theme = CustomTheme:new()-- get some ember effects from volcanamy_theme:override(THEME_OVERRIDE.SPAWN_EFFECTS, THEME.VOLCANA)-- change level sizemy_theme:post(THEME_OVERRIDE.INIT_LEVEL, function() state.width = 5 state.height = 15end)-- set floor textures to eggymy_theme.textures[DYNAMIC_TEXTURE.FLOOR] = TEXTURE.DATA_TEXTURES_FLOOR_EGGPLANT_0set_callback(function(ctx) -- use the level gen from ice caves ctx:override_level_files({"generic.lvl", "icecavesarea.lvl"}) -- force our theme instead of the default force_custom_theme(my_theme)end, ON.PRE_LOAD_LEVEL_FILES)You can call theme functions from other themes, for example to make all growable tile codes work in your theme:
local custom = CustomTheme:new()custom:post(THEME_OVERRIDE.SPAWN_LEVEL, function() state.level_gen.themes[THEME.VOLCANA]:spawn_traps() state.level_gen.themes[THEME.TIDE_POOL]:spawn_traps() state.level_gen.themes[THEME.JUNGLE]:spawn_traps()end)Customizable ThemeInfo with ability to override certain theming functions from different themes or write custom functions. Check ThemeInfo for some notes on the vanilla theme functions. Warning: We WILL change these function names, especially the unknown ones, when you figure out what they do.
Constructors
function CustomTheme.new(): CustomThemeReturns CustomTheme
function CustomTheme.new(theme_id_: integer, base_theme_: integer): CustomThemetheme_id_:integerbase_theme_:integer
Returns CustomTheme
function CustomTheme.new(theme_id_: integer, base_theme_: integer, defaults: boolean): CustomThemetheme_id_:integerbase_theme_:integerdefaults:boolean
Returns CustomTheme
Fields
level_file
string
Level file to load. Probably doesn't do much in custom themes, especially if you're forcing them in PRE_LOAD_LEVEL_FILES.
sourcetextures
table<DYNAMIC_TEXTURE, TEXTURE>
Add TEXTUREs here to override different dynamic textures.
sourceMethods
override
function CustomTheme:override(index: THEME_OVERRIDE, enabled_: boolean)index:THEME_OVERRIDEenabled_:boolean
function CustomTheme:override(index: THEME_OVERRIDE, theme_: integer)index:THEME_OVERRIDEtheme_:integer
function CustomTheme:override(index: THEME_OVERRIDE, func_: function)index:THEME_OVERRIDEfunc_:function- The signature depends on the THEME_OVERRIDE value passed.
post
function CustomTheme:post(index: THEME_OVERRIDE, func_: function)index:THEME_OVERRIDEfunc_:function- The signature depends on the THEME_OVERRIDE value passed.
pre
function CustomTheme:pre(index: THEME_OVERRIDE, func_: function)index:THEME_OVERRIDEfunc_:function- The signature depends on the THEME_OVERRIDE value passed.