Grid *ReadUserGrid() { Grid *user_grid; SubgridArray *user_all_subgrids; SubgridArray *user_subgrids; int num_user_subgrids; int i; num_user_subgrids = GetIntDefault("UserGrid.NumSubgrids", 1); /* read user_subgrids */ user_all_subgrids = NewSubgridArray(); user_subgrids = NewSubgridArray(); for(i = 0; i < num_user_subgrids; i++) { AppendSubgrid(ReadUserSubgrid(), user_all_subgrids); AppendSubgrid(SubgridArraySubgrid(user_all_subgrids, i), user_subgrids); } /* create user_grid */ user_grid = NewGrid(user_subgrids, user_all_subgrids); return user_grid; }
TerrainTest::TerrainTest() : Frame(gui, "TerrainTest", gui->GetScreenPosition()) { grid = NULL; width = height = 0; m_iUpperHeight = 2; m_iLowerHeight = 0; m_bDisplayTypeMap = true; NewGrid(Width() / TILE_SIZE, Height() / TILE_SIZE); }
void TerrainTest::Event(SDL_Event* event) { switch (event->type) { case SDL_KEYUP: { switch (event->key.keysym.sym) { case SDLK_n: NewGrid(Width() / TILE_SIZE, Height() / TILE_SIZE); break; case SDLK_q: if (m_iUpperHeight < MAX_HEIGHT) m_iUpperHeight++; break; case SDLK_a: if (m_iUpperHeight > 0) m_iUpperHeight--; break; case SDLK_w: if (m_iLowerHeight < MAX_HEIGHT) m_iLowerHeight++; break; case SDLK_s: if (m_iLowerHeight > 0) m_iLowerHeight--; break; case SDLK_t: m_bDisplayTypeMap = !m_bDisplayTypeMap; break; default: break; } } break; case SDL_MOUSEMOTION: { int x, y; if (gui->IsMouseButtonDown(MOUSE_BUTTON_LEFT, &x, &y)) { PushUp(x / TILE_SIZE, y / TILE_SIZE); } else if (gui->IsMouseButtonDown(MOUSE_BUTTON_RIGHT, &x, &y)) { PushDown(x / TILE_SIZE, y / TILE_SIZE); } } break; default: break; } }