1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-22 17:49:43 +01:00

Add suggestions from style pass

Co-authored-by: Misa Elizabeth Kai <infoteddy@infoteddy.info>
This commit is contained in:
Ally 2023-03-20 09:00:58 -03:00 committed by Misa Elizabeth Kai
parent 234776bbec
commit 0edbf6398a
2 changed files with 194 additions and 216 deletions

View file

@ -807,29 +807,26 @@ static void draw_entities(void)
}
// Need to also check warp point destinations
if (entity->t == 13 && ed.warp_token_entity != i)
if (entity->t == 13 && ed.warp_token_entity != i &&
entity->p1 / 40 == ed.levx && entity->p2 / 30 == ed.levy)
{
// Is the destination in this room?
if (entity->p1 / 40 == ed.levx && entity->p2 / 30 == ed.levy)
const int x = entity->p1 % 40 * 8;
const int y = entity->p2 % 30 * 8;
std::string text;
graphics.draw_sprite(x, y, 18 + (ed.entframe % 2), 64, 64, 64);
graphics.draw_rect((entity->p1 * 8) - (ed.levx * 40 * 8), (entity->p2 * 8) - (ed.levy * 30 * 8), 16, 16, graphics.getRGB(96, 64, 64));
if (ed.tilex == x / 8 && ed.tiley == y / 8)
{
const int x = entity->p1 % 40 * 8;
const int y = entity->p2 % 30 * 8;
std::string text;
graphics.draw_sprite(x, y, 18 + (ed.entframe % 2), 64, 64, 64);
graphics.draw_rect((entity->p1 * 8) - (ed.levx * 40 * 8), (entity->p2 * 8) - (ed.levy * 30 * 8), 16, 16, graphics.getRGB(96, 64, 64));
if (ed.tilex == x / 8 && ed.tiley == y / 8)
{
text = "(" + help.String(entity->x / 40 + 1) + "," + help.String(entity->y / 30 + 1) + ")";
}
else
{
text = help.String(cl.findwarptoken(i));
}
font::print(PR_BOR | PR_CJK_HIGH, x, y - 8, text, 190, 190, 225);
text = "(" + help.String(entity->x / 40 + 1) + "," + help.String(entity->y / 30 + 1) + ")";
}
else
{
text = help.String(cl.findwarptoken(i));
}
font::print(PR_BOR | PR_CJK_HIGH, x, y - 8, text, 190, 190, 225);
}
}
}
@ -1024,24 +1021,24 @@ static void draw_tile_drawer(int tileset)
const int numtiles = (int)(texturewidth / 8) * (textureheight / 8);
for (int x = 0; x < 40; x++)
for (int x = 0; x < SCREEN_WIDTH_TILES; x++)
{
for (int y = 0; y < 5; y++)
{
if (tileset == 0)
{
graphics.drawtile(x * 8, (y * 8) - t2, (temp + numtiles + (y * 40) + x) % numtiles);
graphics.drawtile(x * 8, (y * 8) - t2, (temp + numtiles + (y * SCREEN_WIDTH_TILES) + x) % numtiles);
}
else
{
graphics.drawtile2(x * 8, (y * 8) - t2, (temp + numtiles + (y * 40) + x) % numtiles);
graphics.drawtile2(x * 8, (y * 8) - t2, (temp + numtiles + (y * SCREEN_WIDTH_TILES) + x) % numtiles);
}
}
}
// Highlight our little block
graphics.draw_rect(((ed.direct_mode_tile % 40) * 8) - 2, 16 - t2 - 2, 12, 12, graphics.getRGB(255 - help.glow, 196, 196));
graphics.draw_rect(((ed.direct_mode_tile % 40) * 8) - 1, 16 - t2 - 1, 10, 10, graphics.getRGB(0, 0, 0));
graphics.draw_rect(((ed.direct_mode_tile % SCREEN_WIDTH_TILES) * 8) - 2, 16 - t2 - 2, 12, 12, graphics.getRGB(255 - help.glow, 196, 196));
graphics.draw_rect(((ed.direct_mode_tile % SCREEN_WIDTH_TILES) * 8) - 1, 16 - t2 - 1, 10, 10, graphics.getRGB(0, 0, 0));
}
if (ed.direct_mode_drawer > 0 && t2 <= 30)
@ -1302,8 +1299,6 @@ static void draw_main_ui(void)
void editorclass::draw_tool(EditorTools tool, int x, int y)
{
extern editorclass ed;
switch (tool)
{
case EditorTool_WALLS:
@ -1340,7 +1335,7 @@ void editorclass::draw_tool(EditorTools tool, int x, int y)
graphics.drawtile(x + 8, y + 4, 1);
break;
case EditorTool_ENEMIES:
graphics.draw_sprite(x, y, 78 + ed.entframe, 196, 196, 196);
graphics.draw_sprite(x, y, 78 + entframe, 196, 196, 196);
break;
case EditorTool_GRAVITY_LINES:
graphics.fill_rect(x + 2, y + 8, 12, 1, graphics.getRGB(255, 255, 255));
@ -1356,7 +1351,7 @@ void editorclass::draw_tool(EditorTools tool, int x, int y)
graphics.draw_rect(x + 4, y + 4, 8, 8, graphics.getRGB(96, 96, 96));
break;
case EditorTool_WARP_TOKENS:
graphics.draw_sprite(x, y, 18 + (ed.entframe % 2), 196, 196, 196);
graphics.draw_sprite(x, y, 18 + (entframe % 2), 196, 196, 196);
break;
case EditorTool_WARP_LINES:
graphics.fill_rect(x + 6, y + 2, 4, 12, graphics.getRGB(255, 255, 255));
@ -1383,7 +1378,6 @@ void editorrender(void)
switch (ed.state)
{
case EditorState_DRAW:
{
// Draw the editor guidelines
draw_background_grid();
@ -1461,47 +1455,46 @@ void editorrender(void)
}
break;
}
case EditorState_SCRIPTS:
// Intended to look like Commodore 64's UI
graphics.fill_rect(0, 0, 320, 240, graphics.getRGB(123, 111, 218));
graphics.fill_rect(14, 16, 292, 208, graphics.getRGB(61, 48, 162));
if (ed.substate == EditorSubState_MAIN)
switch (ed.substate)
{
case EditorSubState_MAIN:
font::print(PR_CEN, -1, 28, loc::gettext("**** VVVVVV SCRIPT EDITOR ****"), 123, 111, 218);
font::print(PR_CEN, -1, 44, loc::gettext("PRESS ESC TO RETURN TO MENU"), 123, 111, 218);
if (!script.customscripts.empty())
{
for (int i = 0; i < 9; i++)
{
if (ed.script_list_offset + i < (int)script.customscripts.size())
{
if (ed.script_list_offset + i == ed.selected_script)
{
std::string text_upper(loc::toupper(script.customscripts[(script.customscripts.size() - 1) - (ed.script_list_offset + i)].name));
char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str());
font::print(PR_CEN, -1, 68 + (i * 16), buffer, 123, 111, 218);
}
else
{
font::print(PR_CEN, -1, 68 + (i * 16), script.customscripts[(script.customscripts.size() - 1) - (ed.script_list_offset + i)].name, 123, 111, 218);
}
}
}
}
else
if (script.customscripts.empty())
{
font::print(PR_CEN, -1, 110, loc::gettext("NO SCRIPT IDS FOUND"), 123, 111, 218);
font::print_wrap(PR_CEN, -1, 130, loc::gettext("CREATE A SCRIPT WITH EITHER THE TERMINAL OR SCRIPT BOX TOOLS"), 123, 111, 218, 10, 288);
break;
}
}
else if (ed.substate == EditorSubState_SCRIPTS_EDIT)
for (int i = 0; i < 9; i++)
{
const int offset = ed.script_list_offset + i;
const bool draw = offset < (int) script.customscripts.size();
if (!draw)
{
continue;
}
if (offset == ed.selected_script)
{
std::string text_upper(loc::toupper(script.customscripts[script.customscripts.size() - 1 - offset].name));
char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str());
font::print(PR_CEN, -1, 68 + (i * 16), buffer, 123, 111, 218);
}
else
{
font::print(PR_CEN, -1, 68 + (i * 16), script.customscripts[script.customscripts.size() - 1 - offset].name, 123, 111, 218);
}
}
break;
case EditorSubState_SCRIPTS_EDIT:
{
// Draw the current script's name
graphics.fill_rect(14, 226, 292, 12, graphics.getRGB(61, 48, 162));
@ -1529,6 +1522,10 @@ void editorrender(void)
{
font::print(PR_FONT_LEVEL | PR_CJK_LOW, 16 + font::len(PR_FONT_LEVEL, ed.script_buffer[ed.script_cursor_y].c_str()), 20 + ((ed.script_cursor_y - ed.script_offset) * font_height), "_", 123, 111, 218);
}
break;
}
default:
break;
}
break;
case EditorState_MENU:
@ -1780,7 +1777,6 @@ static void input_submitted(void)
break;
case TEXT_WEBSITE:
cl.website = key.keybuffer;
break;
case TEXT_DESC1:
cl.Desc1 = key.keybuffer;
@ -1892,7 +1888,7 @@ static void set_tile_interpolated(const int x1, const int x2, const int y1, cons
const int dx = x2 - x1;
const int dy = y2 - y1;
const int steps = SDL_max(abs(dx), abs(dy));
const int steps = SDL_max(SDL_abs(dx), SDL_abs(dy));
if (steps == 0)
{
@ -1916,7 +1912,7 @@ void editorclass::handle_tile_placement(const int tile)
if (b_modifier)
{
// Vertical line
for (int i = 0; i < 30; i++)
for (int i = 0; i < SCREEN_HEIGHT_TILES; i++)
{
set_tile_interpolated(old_tilex, tilex, i, i, tile);
}
@ -1925,7 +1921,7 @@ void editorclass::handle_tile_placement(const int tile)
else if (h_modifier)
{
// Horizontal line
for (int i = 0; i < 40; i++)
for (int i = 0; i < SCREEN_WIDTH_TILES; i++)
{
set_tile_interpolated(i, i, old_tiley, tiley, tile);
}
@ -1979,7 +1975,7 @@ void editorclass::tool_remove()
for (size_t i = 0; i < customentities.size(); i++)
{
if (customentities[i].x == tilex + (levx * 40) && customentities[i].y == tiley + (levy * 30))
if (customentities[i].x == tilex + (levx * SCREEN_WIDTH_TILES) && customentities[i].y == tiley + (levy * SCREEN_HEIGHT_TILES))
{
remove_entity(i);
}
@ -2053,8 +2049,7 @@ void editorclass::entity_clicked(const int index)
void editorclass::tool_place()
{
const int entity = get_entity_at(tilex + (levx * 40), tiley + (levy * 30));
const int entity = get_entity_at(tilex + (levx * SCREEN_WIDTH_TILES), tiley + (levy * SCREEN_HEIGHT_TILES));
if (entity != -1)
{
entity_clicked(entity);
@ -2455,25 +2450,32 @@ static void start_at_checkpoint(void)
for (size_t i = 0; i < customentities.size(); i++)
{
if (customentities[i].t == 16 || customentities[i].t == 10)
startpoint = customentities[i].t == 16;
const bool is_startpoint_or_checkpoint = startpoint ||
customentities[i].t == 10;
if (!is_startpoint_or_checkpoint)
{
int tx = customentities[i].x / 40;
int ty = customentities[i].y / 30;
if (tx == ed.levx && ty == ed.levy)
{
startpoint = customentities[i].t == 16;
if (startpoint)
{
// Oh, there's a start point! Let's use this.
testeditor = i;
break;
}
else if (testeditor == -1)
{
// This is the first thing we found, so let's use it (unless we find a start point later)
testeditor = i;
}
}
continue;
}
const int tx = customentities[i].x / 40;
const int ty = customentities[i].y / 30;
const bool in_room = tx == ed.levx && ty == ed.levy;
if (!in_room)
{
continue;
}
if (startpoint)
{
// Oh, there's a start point! Let's use this.
testeditor = i;
break;
}
else if (testeditor == -1)
{
// This is the first thing we found, so let's use it (unless we find a start point later)
testeditor = i;
}
}
@ -2599,12 +2601,11 @@ static void handle_draw_input()
for (int i = 0; i < NUM_EditorTools; i++)
{
if (key.keymap[ed.tool_keys[i]])
if (key.keymap[ed.tool_keys[i]] &&
((shift_down && ed.tool_requires_shift[i]) ||
(!shift_down && !ed.tool_requires_shift[i])))
{
if ((shift_down && ed.tool_requires_shift[i]) || (!shift_down && !ed.tool_requires_shift[i]))
{
ed.current_tool = (EditorTools) i;
}
ed.current_tool = (EditorTools) i;
}
}
@ -2650,12 +2651,12 @@ static void handle_draw_input()
if (key.keymap[SDLK_COMMA])
{
ed.current_tool = (EditorTools)POS_MOD(ed.current_tool - 1, NUM_EditorTools);
ed.current_tool = (EditorTools) POS_MOD(ed.current_tool - 1, NUM_EditorTools);
ed.keydelay = 6;
}
else if (key.keymap[SDLK_PERIOD])
{
ed.current_tool = (EditorTools)POS_MOD(ed.current_tool + 1, NUM_EditorTools);
ed.current_tool = (EditorTools) POS_MOD(ed.current_tool + 1, NUM_EditorTools);
ed.keydelay = 6;
}
@ -2899,54 +2900,51 @@ void editorinput(void)
ed.substate = EditorSubState_MAIN;
}
if (key.leftbutton)
if (key.leftbutton && ed.lclickdelay == 0)
{
if (ed.lclickdelay == 0)
if (ed.box_corner == BoxCorner_FIRST)
{
if (ed.box_corner == BoxCorner_FIRST)
ed.lclickdelay = 1;
ed.box_point.x = ed.tilex * 8;
ed.box_point.y = ed.tiley * 8;
ed.box_corner = BoxCorner_LAST;
}
else if (ed.box_corner == BoxCorner_LAST)
{
int left;
int right;
int top;
int bottom;
adjust_box_coordinates(ed.box_point.x, ed.box_point.y, ed.tilex * 8, ed.tiley * 8, &left, &right, &top, &bottom);
ed.lclickdelay = 1;
ed.substate = EditorSubState_MAIN;
switch (ed.box_type)
{
ed.lclickdelay = 1;
ed.box_point.x = ed.tilex * 8;
ed.box_point.y = ed.tiley * 8;
ed.box_corner = BoxCorner_LAST;
}
else if (ed.box_corner == BoxCorner_LAST)
{
int left;
int right;
int top;
int bottom;
case BoxType_SCRIPT:
ed.text_entity = customentities.size();
adjust_box_coordinates(ed.box_point.x, ed.box_point.y, ed.tilex * 8, ed.tiley * 8, &left, &right, &top, &bottom);
ed.add_entity((left / 8) + (ed.levx * 40), (top / 8) + (ed.levy * 30), 19, (right - left) / 8, (bottom - top) / 8);
ed.lclickdelay = 1;
ed.substate = EditorSubState_MAIN;
switch (ed.box_type)
{
case BoxType_SCRIPT:
ed.text_entity = customentities.size();
ed.add_entity((left / 8) + (ed.levx * 40), (top / 8) + (ed.levy * 30), 19, (right - left) / 8, (bottom - top) / 8);
ed.get_input_line(TEXT_SCRIPT, loc::gettext("Enter script name:"), &(customentities[ed.text_entity].scriptname));
break;
case BoxType_ENEMY:
cl.setroomenemyx1(ed.levx, ed.levy, left);
cl.setroomenemyy1(ed.levx, ed.levy, top);
cl.setroomenemyx2(ed.levx, ed.levy, right);
cl.setroomenemyy2(ed.levx, ed.levy, bottom);
break;
case BoxType_PLATFORM:
cl.setroomplatx1(ed.levx, ed.levy, left);
cl.setroomplaty1(ed.levx, ed.levy, top);
cl.setroomplatx2(ed.levx, ed.levy, right);
cl.setroomplaty2(ed.levx, ed.levy, bottom);
break;
case BoxType_COPY:
// Unused
break;
}
ed.get_input_line(TEXT_SCRIPT, loc::gettext("Enter script name:"), &(customentities[ed.text_entity].scriptname));
break;
case BoxType_ENEMY:
cl.setroomenemyx1(ed.levx, ed.levy, left);
cl.setroomenemyy1(ed.levx, ed.levy, top);
cl.setroomenemyx2(ed.levx, ed.levy, right);
cl.setroomenemyy2(ed.levx, ed.levy, bottom);
break;
case BoxType_PLATFORM:
cl.setroomplatx1(ed.levx, ed.levy, left);
cl.setroomplaty1(ed.levx, ed.levy, top);
cl.setroomplatx2(ed.levx, ed.levy, right);
cl.setroomplaty2(ed.levx, ed.levy, bottom);
break;
case BoxType_COPY:
// Unused
break;
}
}
}
@ -3261,7 +3259,7 @@ void editorinput(void)
if (down_pressed && ed.keydelay <= 0)
{
ed.keydelay = 3;
ed.script_cursor_y = SDL_min((int)ed.script_buffer.size() - 1, ed.script_cursor_y + 1);
ed.script_cursor_y = SDL_min((int) ed.script_buffer.size() - 1, ed.script_cursor_y + 1);
key.keybuffer = ed.script_buffer[ed.script_cursor_y];
}
@ -3575,7 +3573,7 @@ int editorclass::get_enemy_tile(int t)
void editorclass::set_tile(int x, int y, int t)
{
if (x >= 0 && y >= 0 && x < 40 && y < 30)
if (x >= 0 && y >= 0 && x < SCREEN_WIDTH_TILES && y < SCREEN_HEIGHT_TILES)
{
cl.settile(levx, levy, x, y, t);
}
@ -3774,116 +3772,96 @@ bool editorclass::is_background(int x, int y)
x = SDL_clamp(x, 0, 39);
y = SDL_clamp(y, 0, 29);
return (cl.gettile(levx, levy, x, y) >= 680);
const int tile = cl.gettile(levx, levy, x, y);
return tile >= 680 && tile <= 739;
}
int editorclass::backfree( int x, int y )
bool editorclass::backfree(int x, int y)
{
// Returns 0 if tile is not a block or background tile, 1 otherwise
x = SDL_clamp(x, 0, 39);
y = SDL_clamp(y, 0, 29);
if (x >= 0 && y >= 0 && x < 40 && y < 30)
{
if (cl.gettile(levx, levy, x, y) == 0)
{
return 0;
}
}
return 1;
const int tile = cl.gettile(levx, levy, x, y);
return tile == 0;
}
bool editorclass::lines_can_pass(int x, int y)
{
// Returns 0 if tile is not a block or spike, 1 otherwise
if (x >= 0 && y >= 0 && x < 40 && y < 30)
const int tile = cl.gettile(levx, levy, x, y);
if (x >= 0 && y >= 0 && x < SCREEN_WIDTH_TILES && y < SCREEN_HEIGHT_TILES)
{
return (cl.gettile(levx, levy, x, y) == 0) || (cl.gettile(levx, levy, x, y) >= 680);
return tile == 0 || tile >= 680;
}
return false;
}
int editorclass::free( int x, int y )
bool editorclass::free(int x, int y)
{
// Returns 0 if tile is not a block, 1 otherwise
x = SDL_clamp(x, 0, 39);
y = SDL_clamp(y, 0, 29);
if (cl.gettile(levx, levy, x, y) == 0)
{
return 0;
}
else
{
if (cl.gettile(levx, levy, x, y) >= 2 && cl.gettile(levx, levy, x, y) < 80)
{
return 0;
}
if (cl.gettile(levx, levy, x, y) >= 680)
{
return 0;
}
}
return 1;
const int tile = cl.gettile(levx, levy, x, y);
return tile == 0 || (tile >= 2 && tile < 80) || tile >= 680;
}
int editorclass::match( int x, int y )
int editorclass::match(int x, int y)
{
if (free(x - 1, y) == 0 && free(x, y - 1) == 0 && free(x + 1, y) == 0 && free(x, y + 1) == 0) return 0;
if (free(x - 1, y) && free(x, y - 1) && free(x + 1, y) && free(x, y + 1)) return 0;
if (free(x - 1, y) == 0 && free(x, y - 1) == 0) return 10;
if (free(x + 1, y) == 0 && free(x, y - 1) == 0) return 11;
if (free(x - 1, y) == 0 && free(x, y + 1) == 0) return 12;
if (free(x + 1, y) == 0 && free(x, y + 1) == 0) return 13;
if (free(x - 1, y) && free(x, y - 1)) return 10;
if (free(x + 1, y) && free(x, y - 1)) return 11;
if (free(x - 1, y) && free(x, y + 1)) return 12;
if (free(x + 1, y) && free(x, y + 1)) return 13;
if (free(x, y - 1) == 0) return 1;
if (free(x - 1, y) == 0) return 2;
if (free(x, y + 1) == 0) return 3;
if (free(x + 1, y) == 0) return 4;
if (free(x - 1, y - 1) == 0) return 5;
if (free(x + 1, y - 1) == 0) return 6;
if (free(x - 1, y + 1) == 0) return 7;
if (free(x + 1, y + 1) == 0) return 8;
if (free(x, y - 1)) return 1;
if (free(x - 1, y)) return 2;
if (free(x, y + 1)) return 3;
if (free(x + 1, y)) return 4;
if (free(x - 1, y - 1)) return 5;
if (free(x + 1, y - 1)) return 6;
if (free(x - 1, y + 1)) return 7;
if (free(x + 1, y + 1)) return 8;
return 0;
}
int editorclass::outsidematch( int x, int y )
int editorclass::outsidematch(int x, int y)
{
if (is_background(x - 1, y) == 0 && is_background(x + 1, y) == 0) return 2;
if (is_background(x, y - 1) == 0 && is_background(x, y + 1) == 0) return 1;
if (!is_background(x - 1, y) && !is_background(x + 1, y)) return 2;
if (!is_background(x, y - 1) && !is_background(x, y + 1)) return 1;
return 0;
}
int editorclass::backmatch( int x, int y )
int editorclass::backmatch(int x, int y)
{
//Returns the first position match for a border
// 5 1 6
// 2 X 4
// 7 3 8
if (backfree(x - 1, y) == 0 && backfree(x, y - 1) == 0 && backfree(x + 1, y) == 0 && backfree(x, y + 1) == 0) return 0;
if (backfree(x - 1, y) && backfree(x, y - 1) && backfree(x + 1, y) && backfree(x, y + 1)) return 0;
if (backfree(x - 1, y) == 0 && backfree(x, y - 1) == 0) return 10;
if (backfree(x + 1, y) == 0 && backfree(x, y - 1) == 0) return 11;
if (backfree(x - 1, y) == 0 && backfree(x, y + 1) == 0) return 12;
if (backfree(x + 1, y) == 0 && backfree(x, y + 1) == 0) return 13;
if (backfree(x - 1, y) && backfree(x, y - 1)) return 10;
if (backfree(x + 1, y) && backfree(x, y - 1)) return 11;
if (backfree(x - 1, y) && backfree(x, y + 1)) return 12;
if (backfree(x + 1, y) && backfree(x, y + 1)) return 13;
if (backfree(x, y - 1) == 0) return 1;
if (backfree(x - 1, y) == 0) return 2;
if (backfree(x, y + 1) == 0) return 3;
if (backfree(x + 1, y) == 0) return 4;
if (backfree(x - 1, y - 1) == 0) return 5;
if (backfree(x + 1, y - 1) == 0) return 6;
if (backfree(x - 1, y + 1) == 0) return 7;
if (backfree(x + 1, y + 1) == 0) return 8;
if (backfree(x, y - 1)) return 1;
if (backfree(x - 1, y)) return 2;
if (backfree(x, y + 1)) return 3;
if (backfree(x + 1, y)) return 4;
if (backfree(x - 1, y - 1)) return 5;
if (backfree(x + 1, y - 1)) return 6;
if (backfree(x - 1, y + 1)) return 7;
if (backfree(x + 1, y + 1)) return 8;
return 0;
}
int editorclass::edgetile( int x, int y )
int editorclass::edgetile(int x, int y)
{
switch(match(x,y))
{
@ -3933,7 +3911,7 @@ int editorclass::edgetile( int x, int y )
}
}
int editorclass::outsideedgetile( int x, int y )
int editorclass::outsideedgetile(int x, int y)
{
switch(outsidematch(x,y))
{
@ -3951,7 +3929,7 @@ int editorclass::outsideedgetile( int x, int y )
}
int editorclass::backedgetile( int x, int y )
int editorclass::backedgetile(int x, int y)
{
switch(backmatch(x,y))
{
@ -4001,22 +3979,22 @@ int editorclass::backedgetile( int x, int y )
}
}
int editorclass::labspikedir( int x, int y, int t )
int editorclass::labspikedir(int x, int y, int t)
{
// a slightly more tricky case
if (free(x, y + 1) == 1) return 63 + (t * 2);
if (free(x, y - 1) == 1) return 64 + (t * 2);
if (free(x - 1, y) == 1) return 51 + (t * 2);
if (free(x + 1, y) == 1) return 52 + (t * 2);
if (!free(x, y + 1)) return 63 + (t * 2);
if (!free(x, y - 1)) return 64 + (t * 2);
if (!free(x - 1, y)) return 51 + (t * 2);
if (!free(x + 1, y)) return 52 + (t * 2);
return 63 + (t * 2);
}
int editorclass::spikedir( int x, int y )
int editorclass::spikedir(int x, int y)
{
if (free(x, y + 1) == 1) return 8;
if (free(x, y - 1) == 1) return 9;
if (free(x - 1, y) == 1) return 49;
if (free(x + 1, y) == 1) return 50;
if (!free(x, y + 1)) return 8;
if (!free(x, y - 1)) return 9;
if (!free(x - 1, y)) return 49;
if (!free(x + 1, y)) return 50;
return 8;
}
@ -4190,4 +4168,4 @@ void editorclass::switch_warpdir(const bool reversed)
graphics.backgrounddrawn = false;
}
#endif /* NO_CUSTOM_LEVELS and NO_EDITOR */
#endif /* NO_CUSTOM_LEVELS and NO_EDITOR */

View file

@ -129,7 +129,7 @@ public:
void entity_clicked(int index);
void tool_place();
void get_input_line(const enum TextMode mode, const std::string& prompt, std::string* ptr);
void get_input_line(enum TextMode mode, const std::string& prompt, std::string* ptr);
void show_note(const char* text);
@ -148,9 +148,9 @@ public:
TileTypes get_tile_type(int x, int y, bool wrap);
bool is_background(int x, int y);
int backfree(int x, int y);
bool backfree(int x, int y);
bool lines_can_pass(int x, int y);
int free(int x, int y);
bool free(int x, int y);
int match(int x, int y);
int outsidematch(int x, int y);
int backmatch(int x, int y);