void DrawBufferSetFromMap( DrawBuffer *buffer, Map *map, Vec2i origin, int width) { int x, y; Tile *bufTile; buffer->Size = Vec2iNew(width, buffer->OrigSize.y); buffer->xTop = origin.x - TILE_WIDTH * width / 2; //buffer->yTop = y_origin - 100; buffer->yTop = origin.y - TILE_HEIGHT * buffer->OrigSize.y / 2; buffer->xStart = buffer->xTop / TILE_WIDTH; buffer->yStart = buffer->yTop / TILE_HEIGHT; if (buffer->xTop < 0) { buffer->xStart--; } if (buffer->yTop < 0) { buffer->yStart--; } buffer->dx = buffer->xStart * TILE_WIDTH - buffer->xTop; buffer->dy = buffer->yStart * TILE_HEIGHT - buffer->yTop; bufTile = &buffer->tiles[0][0]; for (y = buffer->yStart; y < buffer->yStart + buffer->Size.y; y++) { for (x = buffer->xStart; x < buffer->xStart + buffer->Size.x; x++, bufTile++) { if (x >= 0 && x < map->Size.x && y >= 0 && y < map->Size.y) { *bufTile = *MapGetTile(map, Vec2iNew(x, y)); } else { *bufTile = TileNone(); } } bufTile += buffer->OrigSize.x - buffer->Size.x; } }
static void Setup(int buildTables) { Mission *m = CampaignGetCurrentMission(&gCampaign); if (!m) { return; } MissionCopy(&lastMission, ¤tMission); MissionCopy(¤tMission, m); MissionOptionsTerminate(&gMission); CampaignAndMissionSetup(buildTables, &gCampaign, &gMission); MakeBackground(&gGraphicsDevice, buildTables); sCursorTile = TileNone(); Autosave(); sJustLoaded = true; sHasUnbakedChanges = false; }