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;
}
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
startDrawHelper(int32 x, int32 y)
{
@ -168,8 +160,10 @@ startDrawHelper(int32 x, int32 y)
v2i dims = g_render_state->viewport_dims;
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);
if (hex)
setStartHex(hex);
if (hex) {
hex->selected = true;
g_game_state->grid.start_hex = g_game_state->grid.current_hex = hex;
}
}
void
@ -223,22 +217,42 @@ handleMouseDown(SDL_MouseButtonEvent &e)
void
handleMouseMove(SDL_MouseMotionEvent &e)
{
game_state* gs = g_game_state;
render_state* rs = g_render_state;
v2i coords = mapMouseToViewport(e.x, e.y);
v2i dims = g_render_state->viewport_dims;
v2f v = cameraUnproject(g_render_state->cam, coords.x, coords.y, dims.x, dims.y);
v2i dims = rs->viewport_dims;
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:
hgUpdateHexFill(g_game_state->grid, v.x, v.y);
hgUpdateHexFill(gs->grid, v.x, v.y);
break;
case LINE:
hgUpdateHexLineDraw(g_game_state->grid, v.x, v.y);
hgUpdateHexLineDraw(gs->grid, v.x, v.y);
break;
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;
case PATHFINDING:
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:
default:
break;

Loading…
Cancel
Save