Browse Source

add/remove painting

master
cinnaboot 8 years ago
parent
commit
866af1f3a0
  1. 46
      src/hexgame.cpp

46
src/hexgame.cpp

@ -153,14 +153,6 @@ mapMouseToViewport(int32 x, int32 y)
return coords; return coords;
} }
void
setStartHex(hex_info *hex)
{
hex->selected = true;
g_game_state->grid.start_hex = g_game_state->grid.current_hex = hex;
g_game_state->grid.is_selecting = true;
}
void void
startDrawHelper(int32 x, int32 y) startDrawHelper(int32 x, int32 y)
{ {
@ -168,8 +160,10 @@ startDrawHelper(int32 x, int32 y)
v2i dims = g_render_state->viewport_dims; v2i dims = g_render_state->viewport_dims;
v2f v = cameraUnproject(g_render_state->cam, x, y, dims.x, dims.y); v2f v = cameraUnproject(g_render_state->cam, x, y, dims.x, dims.y);
hex_info *hex = hgGetSingleHex(g_game_state->grid, v.x, v.y); hex_info *hex = hgGetSingleHex(g_game_state->grid, v.x, v.y);
if (hex) if (hex) {
setStartHex(hex); hex->selected = true;
g_game_state->grid.start_hex = g_game_state->grid.current_hex = hex;
}
} }
void void
@ -223,22 +217,42 @@ handleMouseDown(SDL_MouseButtonEvent &e)
void void
handleMouseMove(SDL_MouseMotionEvent &e) handleMouseMove(SDL_MouseMotionEvent &e)
{ {
game_state* gs = g_game_state;
render_state* rs = g_render_state;
v2i coords = mapMouseToViewport(e.x, e.y); v2i coords = mapMouseToViewport(e.x, e.y);
v2i dims = g_render_state->viewport_dims; v2i dims = rs->viewport_dims;
v2f v = cameraUnproject(g_render_state->cam, coords.x, coords.y, dims.x, dims.y); v2f v = cameraUnproject(rs->cam, coords.x, coords.y, dims.x, dims.y);
switch (g_game_state->grid.draw_mode) { switch (gs->grid.draw_mode) {
case FILL: case FILL:
hgUpdateHexFill(g_game_state->grid, v.x, v.y); hgUpdateHexFill(gs->grid, v.x, v.y);
break; break;
case LINE: case LINE:
hgUpdateHexLineDraw(g_game_state->grid, v.x, v.y); hgUpdateHexLineDraw(gs->grid, v.x, v.y);
break; break;
case CONE_FILL: case CONE_FILL:
hgUpdateHexConeFill(g_game_state->grid, v.x, v.y, CONE_ANGLE, g_polygon_select_vertices); hgUpdateHexConeFill(gs->grid, v.x, v.y, CONE_ANGLE, g_polygon_select_vertices);
break; break;
case PATHFINDING: case PATHFINDING:
break; break;
case ADD_HEXES: {
if (gs->grid.is_selecting) {
v3f ray = cameraCreateRay(rs->cam, coords, dims);
v3f xsect;
if (cameraIntersectPlane(rs->cam, ray, gs->grid.position, gs->grid.normal, xsect))
hgAddHex(gs->grid, xsect, rs->filled_hex_render_group, rs->hex_line_render_group);
}
break;
}
case REMOVE_HEXES: {
if (gs->grid.is_selecting) {
v3f ray = cameraCreateRay(rs->cam, coords, dims);
v3f xsect;
if (cameraIntersectPlane(rs->cam, ray, gs->grid.position, gs->grid.normal, xsect))
hgRemoveHex(gs->grid, xsect, rs->filled_hex_render_group, rs->hex_line_render_group);
}
break;
}
case NONE: case NONE:
default: default:
break; break;

Loading…
Cancel
Save