GameOfLife: Replace DeprecatedString with String

This commit is contained in:
Tim Ledbetter 2023-09-13 17:48:12 +01:00 committed by Andrew Kaster
parent e3cd789ea8
commit 9cd3477763
3 changed files with 99 additions and 100 deletions

View file

@ -167,9 +167,9 @@ void BoardWidget::paint_event(GUI::PaintEvent& event)
if (m_selected_pattern != nullptr) { if (m_selected_pattern != nullptr) {
int y_offset = 0; int y_offset = 0;
for (auto line : m_selected_pattern->pattern()) { for (auto const& line : m_selected_pattern->pattern()) {
int x_offset = 0; int x_offset = 0;
for (auto c : line) { for (auto c : line.bytes_as_string_view()) {
if (c == 'O' && (m_last_cell_hovered.row + y_offset) < m_board->rows() if (c == 'O' && (m_last_cell_hovered.row + y_offset) < m_board->rows()
&& (m_last_cell_hovered.column + x_offset) < m_board->columns() && row == (m_last_cell_hovered.row + y_offset) && column == (m_last_cell_hovered.column + x_offset)) && (m_last_cell_hovered.column + x_offset) < m_board->columns() && row == (m_last_cell_hovered.row + y_offset) && column == (m_last_cell_hovered.column + x_offset))
fill_color = Color::Green; fill_color = Color::Green;
@ -258,9 +258,9 @@ Optional<Board::RowAndColumn> BoardWidget::get_row_and_column_for_point(int x, i
void BoardWidget::place_pattern(size_t row, size_t column) void BoardWidget::place_pattern(size_t row, size_t column)
{ {
int y_offset = 0; int y_offset = 0;
for (auto line : m_selected_pattern->pattern()) { for (auto const& line : m_selected_pattern->pattern()) {
int x_offset = 0; int x_offset = 0;
for (auto c : line) { for (auto c : line.bytes_as_string_view()) {
if (c == 'O' && (row + y_offset) < m_board->rows() && (column + x_offset) < m_board->columns()) if (c == 'O' && (row + y_offset) < m_board->rows() && (column + x_offset) < m_board->columns())
toggle_cell(row + y_offset, column + x_offset); toggle_cell(row + y_offset, column + x_offset);
x_offset++; x_offset++;
@ -276,122 +276,122 @@ void BoardWidget::place_pattern(size_t row, size_t column)
void BoardWidget::setup_patterns() void BoardWidget::setup_patterns()
{ {
auto add_pattern = [&](DeprecatedString name, NonnullOwnPtr<Pattern> pattern) { auto add_pattern = [&](auto name, NonnullOwnPtr<Pattern> pattern) {
auto action = GUI::Action::create(move(name), [this, pattern = pattern.ptr()](const GUI::Action&) { auto action = GUI::Action::create(name, [this, pattern = pattern.ptr()](const GUI::Action&) {
on_pattern_selection(pattern); on_pattern_selection(pattern);
}); });
pattern->set_action(action); pattern->set_action(action);
m_patterns.append(move(pattern)); m_patterns.append(move(pattern));
}; };
Vector<DeprecatedString> blinker = { Vector<String> blinker = {
"OOO" "OOO"_string
}; };
Vector<DeprecatedString> toad = { Vector<String> toad = {
".OOO", ".OOO"_string,
"OOO." "OOO."_string
}; };
Vector<DeprecatedString> glider = { Vector<String> glider = {
".O.", ".O."_string,
"..O", "..O"_string,
"OOO", "OOO"_string,
}; };
Vector<DeprecatedString> lightweight_spaceship = { Vector<String> lightweight_spaceship = {
".OO..", ".OO.."_string,
"OOOO.", "OOOO."_string,
"OO.OO", "OO.OO"_string,
"..OO." "..OO."_string
}; };
Vector<DeprecatedString> middleweight_spaceship = { Vector<String> middleweight_spaceship = {
".OOOOO", ".OOOOO"_string,
"O....O", "O....O"_string,
".....O", ".....O"_string,
"O...O.", "O...O."_string,
"..O..." "..O..."_string
}; };
Vector<DeprecatedString> heavyweight_spaceship = { Vector<String> heavyweight_spaceship = {
"..OO...", "..OO..."_string,
"O....O.", "O....O."_string,
"......O", "......O"_string,
"O.....O", "O.....O"_string,
".OOOOOO" ".OOOOOO"_string
}; };
Vector<DeprecatedString> infinite_1 = { "OOOOOOOO.OOOOO...OOO......OOOOOOO.OOOOO" }; Vector<String> infinite_1 = { "OOOOOOOO.OOOOO...OOO......OOOOOOO.OOOOO"_string };
Vector<DeprecatedString> infinite_2 = { Vector<String> infinite_2 = {
"......O.", "......O."_string,
"....O.OO", "....O.OO"_string,
"....O.O.", "....O.O."_string,
"....O...", "....O..."_string,
"..O.....", "..O....."_string,
"O.O....." "O.O....."_string
}; };
Vector<DeprecatedString> infinite_3 = { Vector<String> infinite_3 = {
"OOO.O", "OOO.O"_string,
"O....", "O...."_string,
"...OO", "...OO"_string,
".OO.O", ".OO.O"_string,
"O.O.O" "O.O.O"_string
}; };
Vector<DeprecatedString> simkin_glider_gun = { Vector<String> simkin_glider_gun = {
"OO.....OO........................", "OO.....OO........................"_string,
"OO.....OO........................", "OO.....OO........................"_string,
".................................", "................................."_string,
"....OO...........................", "....OO..........................."_string,
"....OO...........................", "....OO..........................."_string,
".................................", "................................."_string,
".................................", "................................."_string,
".................................", "................................."_string,
".................................", "................................."_string,
"......................OO.OO......", "......................OO.OO......"_string,
".....................O.....O.....", ".....................O.....O....."_string,
".....................O......O..OO", ".....................O......O..OO"_string,
".....................OOO...O...OO", ".....................OOO...O...OO"_string,
"..........................O......", "..........................O......"_string,
".................................", "................................."_string,
".................................", "................................."_string,
".................................", "................................."_string,
"....................OO...........", "....................OO..........."_string,
"....................O............", "....................O............"_string,
".....................OOO.........", ".....................OOO........."_string,
".......................O........." ".......................O........."_string
}; };
Vector<DeprecatedString> gosper_glider_gun = { Vector<String> gosper_glider_gun = {
"........................O...........", "........................O..........."_string,
"......................O.O...........", "......................O.O..........."_string,
"............OO......OO............OO", "............OO......OO............OO"_string,
"...........O...O....OO............OO", "...........O...O....OO............OO"_string,
"OO........O.....O...OO..............", "OO........O.....O...OO.............."_string,
"OO........O...O.OO....O.O...........", "OO........O...O.OO....O.O..........."_string,
"..........O.....O.......O...........", "..........O.....O.......O..........."_string,
"...........O...O....................", "...........O...O...................."_string,
"............OO......................" "............OO......................"_string
}; };
Vector<DeprecatedString> r_pentomino = { Vector<String> r_pentomino = {
".OO", ".OO"_string,
"OO.", "OO."_string,
".O." ".O."_string
}; };
Vector<DeprecatedString> diehard = { Vector<String> diehard = {
"......O.", "......O."_string,
"OO......", "OO......"_string,
".O...OOO" ".O...OOO"_string
}; };
Vector<DeprecatedString> acorn = { Vector<String> acorn = {
".O.....", ".O....."_string,
"...O...", "...O..."_string,
"OO..OOO" "OO..OOO"_string
}; };
add_pattern("Blinker", make<Pattern>(move(blinker))); add_pattern("Blinker", make<Pattern>(move(blinker)));

View file

@ -6,15 +6,14 @@
*/ */
#include "Pattern.h" #include "Pattern.h"
#include <AK/DeprecatedString.h>
#include <AK/StringBuilder.h> #include <AK/StringBuilder.h>
#include <AK/Vector.h> #include <AK/Vector.h>
#include <LibGUI/Action.h> #include <LibGUI/Action.h>
#include <stdio.h> #include <stdio.h>
Pattern::Pattern(Vector<DeprecatedString> pattern) Pattern::Pattern(Vector<String>&& pattern)
: m_pattern(move(pattern))
{ {
m_pattern = move(pattern);
} }
void Pattern::set_action(GUI::Action* action) void Pattern::set_action(GUI::Action* action)
@ -24,13 +23,13 @@ void Pattern::set_action(GUI::Action* action)
void Pattern::rotate_clockwise() void Pattern::rotate_clockwise()
{ {
Vector<DeprecatedString> rotated; Vector<String> rotated;
for (size_t i = 0; i < m_pattern.first().length(); i++) { for (size_t i = 0; i < m_pattern.first().bytes_as_string_view().length(); i++) {
StringBuilder builder; StringBuilder builder;
for (int j = m_pattern.size() - 1; j >= 0; j--) { for (int j = m_pattern.size() - 1; j >= 0; j--) {
builder.append(m_pattern.at(j).substring(i, 1)); builder.append(m_pattern.at(j).bytes_as_string_view().substring_view(i, 1));
} }
rotated.append(builder.to_deprecated_string()); rotated.append(MUST(builder.to_string()));
} }
m_pattern = move(rotated); m_pattern = move(rotated);
} }

View file

@ -14,13 +14,13 @@
class Pattern final { class Pattern final {
public: public:
Pattern(Vector<DeprecatedString>); Pattern(Vector<String>&&);
Vector<DeprecatedString> pattern() { return m_pattern; } Vector<String> pattern() const { return m_pattern; }
GUI::Action* action() { return m_action; } GUI::Action* action() { return m_action; }
void set_action(GUI::Action*); void set_action(GUI::Action*);
void rotate_clockwise(); void rotate_clockwise();
private: private:
RefPtr<GUI::Action> m_action; RefPtr<GUI::Action> m_action;
Vector<DeprecatedString> m_pattern; Vector<String> m_pattern;
}; };