mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-23 01:59:43 +01:00
Add separate tilecol max for direct mode
This commit readds the ability to select the rainbow BG in lab tileset in direct mode.
This commit is contained in:
parent
17e0d6c330
commit
e36c2764fb
2 changed files with 39 additions and 12 deletions
|
@ -211,6 +211,8 @@ editorclass::editorclass(void)
|
||||||
|
|
||||||
SDL_zeroa(tileset_min_colour);
|
SDL_zeroa(tileset_min_colour);
|
||||||
SDL_zeroa(tileset_max_colour);
|
SDL_zeroa(tileset_max_colour);
|
||||||
|
SDL_zeroa(tileset_min_colour_direct);
|
||||||
|
SDL_zeroa(tileset_max_colour_direct);
|
||||||
|
|
||||||
register_tileset(EditorTileset_SPACE_STATION, "Space Station");
|
register_tileset(EditorTileset_SPACE_STATION, "Space Station");
|
||||||
register_tileset(EditorTileset_OUTSIDE, "Outside");
|
register_tileset(EditorTileset_OUTSIDE, "Outside");
|
||||||
|
@ -269,6 +271,7 @@ editorclass::editorclass(void)
|
||||||
register_tilecol(EditorTileset_LAB, 3, "basic", 289, "none", 0);
|
register_tilecol(EditorTileset_LAB, 3, "basic", 289, "none", 0);
|
||||||
register_tilecol(EditorTileset_LAB, 4, "lab_yellow", 292, "none", 0);
|
register_tilecol(EditorTileset_LAB, 4, "lab_yellow", 292, "none", 0);
|
||||||
register_tilecol(EditorTileset_LAB, 5, "lab_green", 295, "none", 0);
|
register_tilecol(EditorTileset_LAB, 5, "lab_green", 295, "none", 0);
|
||||||
|
register_tilecol(EditorTileset_LAB, 6, "none", 0, "none", 0, true);
|
||||||
|
|
||||||
register_tilecol(EditorTileset_WARP_ZONE, 0, "basic", 80, "none", 120);
|
register_tilecol(EditorTileset_WARP_ZONE, 0, "basic", 80, "none", 120);
|
||||||
register_tilecol(EditorTileset_WARP_ZONE, 1, "basic", 83, "none", 123);
|
register_tilecol(EditorTileset_WARP_ZONE, 1, "basic", 83, "none", 123);
|
||||||
|
@ -291,17 +294,42 @@ void editorclass::register_tileset(EditorTilesets tileset, const char* name)
|
||||||
tileset_names[tileset] = name;
|
tileset_names[tileset] = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void editorclass::register_tilecol(EditorTilesets tileset, const int index, const char* foreground_type, const int foreground_base, const char* background_type, const int background_base)
|
void editorclass::register_tilecol(
|
||||||
{
|
EditorTilesets tileset,
|
||||||
|
const int index,
|
||||||
|
const char* foreground_type,
|
||||||
|
const int foreground_base,
|
||||||
|
const char* background_type,
|
||||||
|
const int background_base,
|
||||||
|
const bool direct
|
||||||
|
) {
|
||||||
EditorTilecolInfo info;
|
EditorTilecolInfo info;
|
||||||
info.foreground_type = foreground_type;
|
info.foreground_type = foreground_type;
|
||||||
info.foreground_base = foreground_base;
|
info.foreground_base = foreground_base;
|
||||||
info.background_type = background_type;
|
info.background_type = background_type;
|
||||||
info.background_base = background_base;
|
info.background_base = background_base;
|
||||||
|
info.direct_mode = direct;
|
||||||
tileset_colors[tileset][index] = info;
|
tileset_colors[tileset][index] = info;
|
||||||
|
|
||||||
|
if (!direct)
|
||||||
|
{
|
||||||
tileset_min_colour[tileset] = SDL_min(tileset_min_colour[tileset], index);
|
tileset_min_colour[tileset] = SDL_min(tileset_min_colour[tileset], index);
|
||||||
tileset_max_colour[tileset] = SDL_max(tileset_max_colour[tileset], index);
|
tileset_max_colour[tileset] = SDL_max(tileset_max_colour[tileset], index);
|
||||||
|
}
|
||||||
|
|
||||||
|
tileset_min_colour_direct[tileset] = SDL_min(tileset_min_colour_direct[tileset], index);
|
||||||
|
tileset_max_colour_direct[tileset] = SDL_max(tileset_max_colour_direct[tileset], index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void editorclass::register_tilecol(
|
||||||
|
EditorTilesets tileset,
|
||||||
|
const int index,
|
||||||
|
const char* foreground_type,
|
||||||
|
const int foreground_base,
|
||||||
|
const char* background_type,
|
||||||
|
const int background_base
|
||||||
|
) {
|
||||||
|
register_tilecol(tileset, index, foreground_type, foreground_base, background_type, background_base, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void editorclass::reset(void)
|
void editorclass::reset(void)
|
||||||
|
@ -2955,12 +2983,7 @@ static void handle_draw_input()
|
||||||
{
|
{
|
||||||
cl.setroomdirectmode(ed.levx, ed.levy, 0);
|
cl.setroomdirectmode(ed.levx, ed.levy, 0);
|
||||||
ed.show_note(loc::gettext("Direct Mode Disabled"));
|
ed.show_note(loc::gettext("Direct Mode Disabled"));
|
||||||
// Kludge fix for rainbow BG here...
|
ed.clamp_tilecol(ed.levx, ed.levy, true);
|
||||||
if (cl.getroomprop(ed.levx, ed.levy)->tileset == 2
|
|
||||||
&& cl.getroomprop(ed.levx, ed.levy)->tilecol == 6)
|
|
||||||
{
|
|
||||||
cl.setroomtilecol(ed.levx, ed.levy, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4070,8 +4093,8 @@ void editorclass::clamp_tilecol(const int rx, const int ry, const bool wrap)
|
||||||
const int tileset = room->tileset;
|
const int tileset = room->tileset;
|
||||||
int tilecol = room->tilecol;
|
int tilecol = room->tilecol;
|
||||||
|
|
||||||
int mincol = tileset_min_colour[tileset];
|
int mincol = (room->directmode ? tileset_min_colour_direct : tileset_min_colour)[tileset];
|
||||||
int maxcol = tileset_max_colour[tileset];
|
int maxcol = (room->directmode ? tileset_max_colour_direct : tileset_max_colour)[tileset];
|
||||||
|
|
||||||
// If wrap is true, wrap-around, otherwise just cap
|
// If wrap is true, wrap-around, otherwise just cap
|
||||||
if (tilecol > maxcol)
|
if (tilecol > maxcol)
|
||||||
|
|
|
@ -28,6 +28,7 @@ struct EditorTilecolInfo
|
||||||
int foreground_base;
|
int foreground_base;
|
||||||
const char* background_type;
|
const char* background_type;
|
||||||
int background_base;
|
int background_base;
|
||||||
|
bool direct_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EditorTools
|
enum EditorTools
|
||||||
|
@ -140,6 +141,7 @@ public:
|
||||||
void reset(void);
|
void reset(void);
|
||||||
|
|
||||||
void register_tileset(EditorTilesets tileset, const char* name);
|
void register_tileset(EditorTilesets tileset, const char* name);
|
||||||
|
void register_tilecol(EditorTilesets tileset, int index, const char* foreground_type, int foreground_base, const char* background_type, int background_base, bool direct);
|
||||||
void register_tilecol(EditorTilesets tileset, int index, const char* foreground_type, int foreground_base, const char* background_type, int background_base);
|
void register_tilecol(EditorTilesets tileset, int index, const char* foreground_type, int foreground_base, const char* background_type, int background_base);
|
||||||
|
|
||||||
void register_tool(EditorTools tool, const char* name, const char* keychar, SDL_KeyCode key, bool shift);
|
void register_tool(EditorTools tool, const char* name, const char* keychar, SDL_KeyCode key, bool shift);
|
||||||
|
@ -194,6 +196,8 @@ public:
|
||||||
const char* tileset_names[NUM_EditorTilesets];
|
const char* tileset_names[NUM_EditorTilesets];
|
||||||
int tileset_min_colour[NUM_EditorTilesets];
|
int tileset_min_colour[NUM_EditorTilesets];
|
||||||
int tileset_max_colour[NUM_EditorTilesets];
|
int tileset_max_colour[NUM_EditorTilesets];
|
||||||
|
int tileset_min_colour_direct[NUM_EditorTilesets];
|
||||||
|
int tileset_max_colour_direct[NUM_EditorTilesets];
|
||||||
|
|
||||||
const char* tool_names[NUM_EditorTools];
|
const char* tool_names[NUM_EditorTools];
|
||||||
const char* tool_key_chars[NUM_EditorTools];
|
const char* tool_key_chars[NUM_EditorTools];
|
||||||
|
|
Loading…
Reference in a new issue