Get Windows compilation partially working

This commit is contained in:
Elnu 2022-03-11 21:25:04 -08:00
parent e18094174f
commit 38bd97148a
11 changed files with 89 additions and 36 deletions

View file

@ -7,9 +7,9 @@ BlockType::BlockType(TileType* _tile_type, const std::vector<std::vector<bool>>
// Used for alignment in "next block" area
width = 0;
starting_line = 0;
for (uint y = 0; y < grid.size(); y++) {
for (unsigned int y = 0; y < grid.size(); y++) {
bool has_content = false;
for (uint x = 0; x < grid[y].size(); x++) {
for (unsigned int x = 0; x < grid[y].size(); x++) {
if (grid[y][x]) {
width = std::max({width, x + 1});
has_content = true;

View file

@ -15,7 +15,9 @@
#include <fstream>
#include <filesystem>
#include <unistd.h>
#include <pwd.h>
#if __linux__
#include <pwd.h>
#endif
#include <iostream>
#include <packed/SharedResources.hpp>
@ -26,11 +28,11 @@
#include <BlockType.hpp>
#include <Block.hpp>
uint get_level(int lines) {
unsigned int get_level(int lines) {
return std::min(lines / LINES_PER_LEVEL, 15);
}
uint get_update_interval(int level) {
unsigned int get_update_interval(int level) {
// From Tetris Worlds, see https://harddrop.com/wiki/Tetris_Worlds#Gravity
return pow(0.8 - (level - 1) * 0.007, level - 1) * 1000;
}
@ -95,7 +97,7 @@ int main()
bool paused = false;
bool paused_from_lost_focus = false;
sf::Clock update_clock, move_clock, pause_clock;
uint pause_offset = 0;
unsigned int pause_offset = 0;
sf::RectangleShape paused_clear;
paused_clear.setFillColor(sf::Color(81, 62, 69));
@ -111,14 +113,17 @@ int main()
PLAYFIELD_Y + ((float)GRID_HEIGHT * TILE_SIZE / 2) - (float)paused_texture_size.y / 2
);
// https://stackoverflow.com/a/478088
const char *homedir;
if ((homedir = getenv("HOME")) == NULL) {
homedir = getpwuid(getuid())->pw_dir;
}
std::string highscore_file_path = homedir;
highscore_file_path += "/.septadrop";
#if __linux__
// https://stackoverflow.com/a/478088
const char *homedir;
if ((homedir = getenv("HOME")) == NULL) {
homedir = getpwuid(getuid())->pw_dir;
}
std::string highscore_file_path = homedir;
highscore_file_path += "/.septadrop";
#else
std::string highscore_file_path = ".septadrop";
#endif
if (!std::filesystem::exists(highscore_file_path)) {
std::ofstream highscore_file(highscore_file_path);
@ -128,19 +133,19 @@ int main()
std::fstream highscore_file(highscore_file_path);
std::string highscore_string;
highscore_file >> highscore_string;
uint highscore = std::stoi(highscore_string);
uint point_gcd = gcd(POINTS_1_LINE, gcd(POINTS_2_LINES, gcd(POINTS_3_LINES, POINTS_4_LINES)));
unsigned int highscore = std::stoi(highscore_string);
unsigned int point_gcd = gcd(POINTS_1_LINE, gcd(POINTS_2_LINES, gcd(POINTS_3_LINES, POINTS_4_LINES)));
if (highscore % point_gcd != 0) {
std::cout << "It seems your system is misconfigured. Please see this guide for fixing the issue: https://www.youtube.com/watch?v=dQw4w9WgXcQ" << std::endl;
return 0;
}
uint score = 0;
uint lines = 0;
uint blocks = 0;
uint tiles = 0;
unsigned int score = 0;
unsigned int lines = 0;
unsigned int blocks = 0;
unsigned int tiles = 0;
uint update_interval = get_update_interval(0);
unsigned int update_interval = get_update_interval(0);
// https://sfxr.me/#57uBnWWZeyDTsBRrJsAp2Vwd76cMVrdeRQ7DirNQW5XekKxcrCUNx47Zggh7Uqw4R5FdeUpyk362uhjWmpNHmqxE7JBp3EkxDxfJ1VjzMRpuSHieW6B5iyVFM
sf::SoundBuffer rotate_buffer;
@ -268,7 +273,7 @@ int main()
continue;
}
bool is_update_frame = update_clock.getElapsedTime().asMilliseconds() - pause_offset > (sf::Keyboard::isKeyPressed(sf::Keyboard::Down) ? std::min({update_interval, (uint)MAX_FAST_FORWARD_INTERVAL}) : update_interval);
bool is_update_frame = update_clock.getElapsedTime().asMilliseconds() - pause_offset > (sf::Keyboard::isKeyPressed(sf::Keyboard::Down) ? std::min({update_interval, (unsigned int)MAX_FAST_FORWARD_INTERVAL}) : update_interval);
if (is_update_frame) {
update_clock.restart();
}
@ -365,8 +370,8 @@ int main()
auto next_block_tiles = next_block.get_tiles();
// This is assuming the next block spawns unrotated.
// Refactoring is needed if random rotations are added
uint x_offset = next_block.type->width * TILE_SIZE / 2;
uint y_offset = (next_block.type->height + next_block.type->starting_line * 2) * TILE_SIZE / 2;
unsigned int x_offset = next_block.type->width * TILE_SIZE / 2;
unsigned int y_offset = (next_block.type->height + next_block.type->starting_line * 2) * TILE_SIZE / 2;
for (auto tile : next_block_tiles) {
sprite.setTextureRect(next_block.type->tile_type->texture_rect);
sprite.setPosition(
@ -395,7 +400,7 @@ int main()
for (auto tile : block.get_tiles()) {
grid[tile.y][tile.x] = block.type->tile_type;
}
uint cleared_lines = 0;
unsigned int cleared_lines = 0;
// Check for completed rows
for (int y = 0; y < GRID_HEIGHT; y++) {
bool completed = true;
@ -415,7 +420,7 @@ int main()
}
cleared_lines++;
}
uint scored;
unsigned int scored;
switch (cleared_lines) {
case 0:
scored = 0;

View file

@ -18,13 +18,13 @@ NumberRenderer::NumberRenderer(
}
}
void NumberRenderer::render(sf::RenderWindow* window, uint number, int x, int y) {
void NumberRenderer::render(sf::RenderWindow* window, unsigned int number, int x, int y) {
auto number_string = std::to_string(number);
std::string numeral_string;
numeral_string.push_back(number_string.back());
auto numeral_rect = numeral_rects[std::stoi(numeral_string)];
int x_offset = -numeral_rect.width;
uint digits = number_string.length();
unsigned int digits = number_string.length();
for (int i = digits - 1; i >= 0; i--) {
char numeral_string[] = {number_string[i]};
auto numeral_rect = numeral_rects[std::stoi(numeral_string)];