diff --git a/Resources/OpenSans-Bold.ttf b/Resources/OpenSans-Bold.ttf new file mode 100755 index 0000000..efdd5e8 Binary files /dev/null and b/Resources/OpenSans-Bold.ttf differ diff --git a/Resources/OpenSans-BoldItalic.ttf b/Resources/OpenSans-BoldItalic.ttf new file mode 100755 index 0000000..9bf9b4e Binary files /dev/null and b/Resources/OpenSans-BoldItalic.ttf differ diff --git a/Resources/OpenSans-ExtraBold.ttf b/Resources/OpenSans-ExtraBold.ttf new file mode 100755 index 0000000..67fcf0f Binary files /dev/null and b/Resources/OpenSans-ExtraBold.ttf differ diff --git a/Resources/OpenSans-ExtraBoldItalic.ttf b/Resources/OpenSans-ExtraBoldItalic.ttf new file mode 100755 index 0000000..0867228 Binary files /dev/null and b/Resources/OpenSans-ExtraBoldItalic.ttf differ diff --git a/Resources/OpenSans-Light.ttf b/Resources/OpenSans-Light.ttf new file mode 100755 index 0000000..6580d3a Binary files /dev/null and b/Resources/OpenSans-Light.ttf differ diff --git a/Resources/OpenSans-LightItalic.ttf b/Resources/OpenSans-LightItalic.ttf new file mode 100755 index 0000000..1e0c331 Binary files /dev/null and b/Resources/OpenSans-LightItalic.ttf differ diff --git a/Resources/OpenSans-Regular.ttf b/Resources/OpenSans-Regular.ttf new file mode 100755 index 0000000..29bfd35 Binary files /dev/null and b/Resources/OpenSans-Regular.ttf differ diff --git a/Resources/OpenSans-SemiBold.ttf b/Resources/OpenSans-SemiBold.ttf new file mode 100755 index 0000000..54e7059 Binary files /dev/null and b/Resources/OpenSans-SemiBold.ttf differ diff --git a/src/view.cxx b/src/view.cxx index 192d720..795ce4f 100644 --- a/src/view.cxx +++ b/src/view.cxx @@ -23,8 +23,6 @@ View::View(Model const& model) , player_grey_token_(7, dark_grey_color) , position_sprite_(8, red_color) , background_black_sprite(this->initial_window_dimensions(), black_color) - , background_white_sprite(this->initial_window_dimensions(), - white_color) , background_grey_sprite(this->initial_window_dimensions(), light_grey_color) // You may want to add sprite initialization here @@ -36,40 +34,56 @@ void View::draw(Sprite_set& set) { Position centre = model_.board().center(); + ge211::Text_sprite::Builder black_turn_builder(sans30); + black_turn_builder.color(white_color) << "BLACK TURN"; + black_turn_sprite.reconfigure(black_turn_builder); + + ge211::Text_sprite::Builder white_turn_builder(sans30); + white_turn_builder.color(white_color) << "WHITE TURN"; + white_turn_sprite.reconfigure(white_turn_builder); + + ge211::Text_sprite::Builder black_winner_builder(sans30); + black_winner_builder.color(white_color) << "BLACK WINS"; + black_wins_sprite.reconfigure(black_winner_builder); + + ge211::Text_sprite::Builder white_winner_builder(sans30); + white_winner_builder.color(white_color) << "WHITE WINS"; + white_wins_sprite.reconfigure(white_winner_builder); + + ge211::Text_sprite::Builder neither_winner_builder(sans30); + neither_winner_builder.color(white_color) << "DRAW"; + neither_wins_sprite.reconfigure(neither_winner_builder); + for(int i = 0; i < model_.board().dimensions().width; i++) { for (int j = 0; j < model_.board().dimensions().height; j++) { + + set.add_sprite(background_black_sprite, {0,0}, 0); Position on_board = {i, j}; ge211::Position screen_pos = board_to_screen_(on_board); set.add_sprite(board_sprite_, screen_pos, 1); const Move* move = model_.find_move(on_board); - Player player = model_.operator[](on_board); - if(player == Player::dark) { - set.add_sprite(player_black_token_, screen_pos, 3); - } - else if(player == Player::light) { - set.add_sprite(player_white_token_, screen_pos, 3); - } - - if(move != nullptr && player == Player::neither) { - set.add_sprite(position_sprite_, screen_pos, 2); - } - if(model_.is_game_over()) { ge211::Rectangle board = model_.board(); set.add_sprite(background_grey_sprite, {0,0}, 0); if(model_.winner() == Player::light) { + set.add_sprite(white_wins_sprite, { + (initial_window_dimensions() + .width / 2 - 50), 0}, 4); for (Position each_pos: board) { ge211::Position final_screen_pos = - board_to_screen_(each_pos); + board_to_screen_(each_pos); if(model_.operator[](each_pos) == Player::dark){ set.add_sprite(player_grey_token_, - final_screen_pos, 3); + final_screen_pos, 3); } } } - else if(model_.winner() == Player::dark){ + else if(model_.winner() == Player::dark) { + set.add_sprite(black_wins_sprite, { + (initial_window_dimensions() + .width / 2 - 50), 0}, 4); for (Position each_pos: board) { ge211::Position final_screen_pos = board_to_screen_(each_pos); @@ -80,20 +94,37 @@ void View::draw(Sprite_set& set) } } } else if (model_.winner() == Player::neither){ + set.add_sprite(neither_wins_sprite, { + (initial_window_dimensions() + .width / 2 - 50), 0}, 4); for (Position each_pos: board) { ge211::Position final_screen_pos = board_to_screen_(each_pos); - set.add_sprite(player_grey_token_, - final_screen_pos, 3); + set.add_sprite(player_grey_token_, + final_screen_pos, 3); } } } else if(model_.turn() == Player::dark) { - set.add_sprite(background_black_sprite, {0,0}, 0); + set.add_sprite(black_turn_sprite, {(initial_window_dimensions() + .width / 2 - 50), 0}, 4); } - else if(model_.turn() == Player:: light) { - set.add_sprite(background_white_sprite, {0,0}, 0); + else { + set.add_sprite(white_turn_sprite, {(initial_window_dimensions() + .width / 2 - 50), 0}, 4); + } + + Player player = model_.operator[](on_board); + if(player == Player::dark) { + set.add_sprite(player_black_token_, screen_pos, 3); + } + else if(player == Player::light) { + set.add_sprite(player_white_token_, screen_pos, 3); + } + + if(move != nullptr && player == Player::neither) { + set.add_sprite(position_sprite_, screen_pos, 2); } } } diff --git a/src/view.hxx b/src/view.hxx index 296eb44..cbdd1bf 100644 --- a/src/view.hxx +++ b/src/view.hxx @@ -18,6 +18,7 @@ public: void draw(ge211::Sprite_set& set); ge211::Position board_to_screen_(ge211::Position board_pos) const; + ge211::Font sans30{"OpenSans-Light.ttf", 15}; ge211::Position screen_to_board_(ge211::Position screen_pos) const; @@ -31,8 +32,12 @@ private: ge211::Circle_sprite const player_black_token_; ge211::Circle_sprite const player_grey_token_; ge211::Rectangle_sprite const background_black_sprite; - ge211::Rectangle_sprite const background_white_sprite; ge211::Rectangle_sprite const background_grey_sprite; + ge211::Text_sprite black_turn_sprite; + ge211::Text_sprite white_turn_sprite; + ge211::Text_sprite black_wins_sprite; + ge211::Text_sprite white_wins_sprite; + ge211::Text_sprite neither_wins_sprite; ge211::Rectangle_sprite const board_sprite_ {{16, 16}, green_color};