Skip to content

Commit f3b4161

Browse files
ohol-vitaliymxlgv
authored andcommitted
Fixed saving unlocked tracks and levels
1 parent ec3c7b0 commit f3b4161

File tree

7 files changed

+116
-101
lines changed

7 files changed

+116
-101
lines changed

src/MenuManager.cpp

Lines changed: 75 additions & 84 deletions
Large diffs are not rendered by default.

src/MenuManager.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class IGameMenuElement;
2121

2222
class MenuManager : public IMenuManager {
2323
private:
24-
std::vector<int8_t> field_278;
24+
std::vector<int8_t> savedData;
2525
Micro* micro;
2626
RecordManager* recordManager;
2727
Command* commandOk;
@@ -82,11 +82,11 @@ class MenuManager : public IMenuManager {
8282
int field_338;
8383
int field_339;
8484
std::string field_340;
85-
char* field_341;
86-
char field_342[4];
87-
char defaultInputString[4] = "AAA";
85+
char* playerName;
86+
char availableTracks[4];
87+
char defaultName[4] = "AAA";
8888
int8_t availableLeagues = 0;
89-
int8_t field_344 = 0;
89+
int8_t availableLevels = 0;
9090
std::vector<int> field_345 = { 0, 0, 0 };
9191
std::vector<std::vector<std::string>> levelNames;
9292
std::vector<std::string> leagueNames = std::vector<std::string>(3);
@@ -123,8 +123,8 @@ class MenuManager : public IMenuManager {
123123
void fillCanvasWithImage(Graphics* graphics);
124124
void processNonFireKeyCode(int keyCode);
125125
std::vector<int8_t> method_216(int var1, int8_t var2);
126-
int8_t method_217(int var1, int8_t var2);
127-
void copyThreeBytesFromArr(int var1, char* var2);
126+
int8_t getSettingOrDefault(int var1, int8_t var2);
127+
// void copyThreeBytesFromArr(int var1, char* var2);
128128
std::string timeToString(int64_t time);
129129
void setValue(int pos, int8_t value);
130130
void exit();

src/RecordManager.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ void RecordManager::method_8(int var1, int var2)
4040
}
4141

4242
loadRecordInfo(var4);
43-
recordEnum->destroy();
4443
}
4544
}
4645

@@ -161,13 +160,17 @@ void RecordManager::writeRecordInfo()
161160
try {
162161
packedRecordInfoRecordId = recordStore->addRecord(packedRecordInfo, 0, 96);
163162
} catch (RecordStoreNotOpenException& var1) {
163+
return;
164164
} catch (RecordStoreException& var2) {
165+
return;
165166
}
166167
} else {
167168
try {
168169
recordStore->setRecord(packedRecordInfoRecordId, packedRecordInfo, 0, 96);
169170
} catch (RecordStoreNotOpenException& var3) {
171+
return;
170172
} catch (RecordStoreException& var4) {
173+
return;
171174
}
172175
}
173176
}
@@ -220,6 +223,7 @@ void RecordManager::deleteRecordStores()
220223
// RecordStore *var10000 = recordStore;
221224
RecordStore::deleteRecordStore(names[i]);
222225
} catch (RecordStoreException& var3) {
226+
return;
223227
}
224228
}
225229
}
@@ -232,6 +236,7 @@ void RecordManager::closeRecordStore()
232236
recordStore->closeRecordStore();
233237
return;
234238
} catch (RecordStoreException& var1) {
239+
return;
235240
}
236241
}
237242
}

src/lcdui/CanvasImpl.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,20 @@ CanvasImpl::CanvasImpl(Canvas* canvas)
2828
0,
2929
SDL_WINDOWPOS_UNDEFINED,
3030
SDL_WINDOWPOS_UNDEFINED,
31-
width, height,
31+
defaultWidth, defaultHeight,
3232
SDL_WINDOW_SHOWN);
3333

3434
if (!window) {
3535
throw std::runtime_error(SDL_GetError());
3636
}
3737

38-
renderer = SDL_CreateRenderer(
39-
window, -1, SDL_RENDERER_ACCELERATED);
38+
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
4039

4140
if (!renderer) {
4241
throw std::runtime_error(SDL_GetError());
4342
}
4443

44+
SDL_GetRendererOutputSize(renderer, &windowWidth, &windowHeight);
4545
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
4646
SDL_RenderClear(renderer);
4747
}
@@ -62,12 +62,20 @@ void CanvasImpl::repaint()
6262

6363
int CanvasImpl::getWidth()
6464
{
65-
return width;
65+
if (windowWidth < 0) {
66+
return defaultWidth;
67+
}
68+
69+
return windowWidth;
6670
}
6771

6872
int CanvasImpl::getHeight()
6973
{
70-
return height;
74+
if (windowHeight < 0) {
75+
return defaultHeight;
76+
}
77+
78+
return windowHeight;
7179
}
7280

7381
SDL_Renderer* CanvasImpl::getRenderer()

src/lcdui/CanvasImpl.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ class Canvas;
1010

1111
class CanvasImpl {
1212
private:
13+
const int defaultWidth = 640;
14+
const int defaultHeight = 480;
15+
16+
int windowWidth = -1;
17+
int windowHeight = -1;
18+
1319
Canvas* canvas;
1420

1521
SDL_Window* window;
1622
SDL_Renderer* renderer;
1723

18-
const int width = 640;
19-
const int height = 480;
20-
2124
static int convertKeyCharToKeyCode(SDL_Keycode keyCode);
2225

2326
public:

src/rms/RecordEnumerationImpl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ void RecordEnumerationImpl::setRecord(int index, std::vector<int8_t> bytes)
3636
if (static_cast<int>(data.size()) <= index) {
3737
throw RecordStoreException();
3838
}
39+
3940
data[index] = bytes;
4041
}
4142

@@ -49,6 +50,7 @@ int RecordEnumerationImpl::nextRecordId()
4950
if (currentPos >= static_cast<int>(data.size())) {
5051
throw RecordStoreException();
5152
}
53+
5254
return currentPos;
5355
}
5456

@@ -65,6 +67,7 @@ void RecordEnumerationImpl::serialize(FileStream* outStream)
6567

6668
for (auto i = data.cbegin(); i != data.cend(); i++) {
6769
outStream->writeVariable(&(temp = i->size()));
70+
6871
for (auto j = i->cbegin(); j != i->cend(); j++) {
6972
int8_t buffer;
7073
outStream->writeVariable(&(buffer = *j));
@@ -82,6 +85,7 @@ void RecordEnumerationImpl::deserialize(FileStream* inStream)
8285
for (size_t i = 0; i < data.size(); ++i) {
8386
inStream->readVariable(&temp);
8487
data[i].resize(temp);
88+
8589
for (size_t j = 0; j < data[i].size(); ++j) {
8690
inStream->readVariable(&data[i][j]);
8791
}

src/rms/RecordStore.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ void RecordStore::closeRecordStore()
4040

4141
int RecordStore::addRecord(std::vector<int8_t> arr, int offset, int numBytes)
4242
{
43-
log("addRecord()");
43+
log("addRecord(" + std::to_string(arr.size()) + "," + std::to_string(offset) + "," + std::to_string(numBytes) + ")");
4444
assert(static_cast<int>(arr.size()) == numBytes);
4545
assert(offset == 0);
4646
int id = records->addRecord(arr);
47+
log("record id = " + std::to_string(id));
4748
save();
4849
return id;
4950
}
@@ -72,6 +73,8 @@ RecordEnumerationImpl* RecordStore::load(std::filesystem::path filePath)
7273

7374
RecordStore* RecordStore::openRecordStore(std::string name, bool createIfNecessary)
7475
{
76+
log("openRecordStore(" + name + ", " + std::to_string(createIfNecessary) + ")");
77+
7578
if (opened.find(name) == opened.end()) {
7679
opened[name] = createRecordStore(name, createIfNecessary);
7780
}
@@ -95,6 +98,7 @@ std::unique_ptr<RecordStore> RecordStore::createRecordStore(std::string name, bo
9598
rs->save();
9699
return rs;
97100
} else {
101+
log("can't create record, file is missing");
98102
throw RecordStoreException();
99103
}
100104
}

0 commit comments

Comments
 (0)