Skip to content

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 dwelling
local my_theme = CustomTheme:new()
-- get some ember effects from volcana
my_theme:override(THEME_OVERRIDE.SPAWN_EFFECTS, THEME.VOLCANA)
-- change level size
my_theme:post(THEME_OVERRIDE.INIT_LEVEL, function()
state.width = 5
state.height = 15
end)
-- set floor textures to eggy
my_theme.textures[DYNAMIC_TEXTURE.FLOOR] = TEXTURE.DATA_TEXTURES_FLOOR_EGGPLANT_0
set_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(): CustomTheme

Returns CustomTheme

function CustomTheme.new(theme_id_: integer, base_theme_: integer): CustomTheme
theme_id_: integer
base_theme_: integer

Returns CustomTheme

function CustomTheme.new(theme_id_: integer, base_theme_: integer, defaults: boolean): CustomTheme
theme_id_: integer
base_theme_: integer
defaults: 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.

source

textures

table<DYNAMIC_TEXTURE, TEXTURE>

Add TEXTUREs here to override different dynamic textures.

source

theme

integer

Theme index. Probably shouldn't collide with the vanilla ones. Purpose unknown.

source

Methods

override

function CustomTheme:override(index: THEME_OVERRIDE, enabled_: boolean)
index: THEME_OVERRIDE
enabled_: boolean
function CustomTheme:override(index: THEME_OVERRIDE, theme_: integer)
index: THEME_OVERRIDE
theme_: integer
function CustomTheme:override(index: THEME_OVERRIDE, func_: function)
index: THEME_OVERRIDE
func_: function
The signature depends on the THEME_OVERRIDE value passed.
source

post

function CustomTheme:post(index: THEME_OVERRIDE, func_: function)
index: THEME_OVERRIDE
func_: function
The signature depends on the THEME_OVERRIDE value passed.
source

pre

function CustomTheme:pre(index: THEME_OVERRIDE, func_: function)
index: THEME_OVERRIDE
func_: function
The signature depends on the THEME_OVERRIDE value passed.
source