コード例 #1
0
ファイル: draw_buffer.c プロジェクト: evktalo/cdogs-sdl
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;
	}
}
コード例 #2
0
ファイル: cdogsed.c プロジェクト: kodephys/cdogs-sdl
static void Setup(int buildTables)
{
	Mission *m = CampaignGetCurrentMission(&gCampaign);
	if (!m)
	{
		return;
	}
	MissionCopy(&lastMission, &currentMission);
	MissionCopy(&currentMission, m);
	MissionOptionsTerminate(&gMission);
	CampaignAndMissionSetup(buildTables, &gCampaign, &gMission);
	MakeBackground(&gGraphicsDevice, buildTables);
	sCursorTile = TileNone();

	Autosave();

	sJustLoaded = true;
	sHasUnbakedChanges = false;
}