Use first persistant timer as display value in Horus modelselect (#5772)

[Horus] When selecting model, displays first permanent timer or 00:00 if none exist
This commit is contained in:
3djc
2018-03-25 09:33:55 +02:00
committed by Bertrand Songis
parent 0025c01024
commit b00c4e30d0
+18 -7
View File
@@ -53,7 +53,10 @@ class ModelCell
void load()
{
ModelHeader header;
PACK(struct {
ModelHeader header;
TimerData timers[MAX_TIMERS];
}) partialmodel;
const char * error = NULL;
buffer = new BitmapBuffer(BMP_RGB565, MODELCELL_WIDTH, MODELCELL_HEIGHT);
@@ -61,10 +64,12 @@ class ModelCell
return;
}
if (strncmp(modelFilename, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME) == 0)
header = g_model.header;
else
error = readModel(modelFilename, (uint8_t *)&header, sizeof(header));
if (strncmp(modelFilename, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME) == 0) {
memcpy(&partialmodel.header, &g_model.header, sizeof(partialmodel));
}
else {
error = readModel(modelFilename, (uint8_t *)&partialmodel.header, sizeof(partialmodel));
}
buffer->clear(TEXT_BGCOLOR);
@@ -73,7 +78,7 @@ class ModelCell
buffer->drawBitmapPattern(5, 23, LBM_LIBRARY_SLOT, TEXT_COLOR);
}
else {
zchar2str(modelName, header.name, LEN_MODEL_NAME);
zchar2str(modelName, partialmodel.header.name, LEN_MODEL_NAME);
if (modelName[0] == 0) {
char * tmp;
strncpy(modelName, modelFilename, LEN_MODEL_NAME);
@@ -84,11 +89,17 @@ class ModelCell
char timer[LEN_TIMER_STRING];
buffer->drawSizedText(5, 2, modelName, LEN_MODEL_NAME, SMLSIZE|TEXT_COLOR);
getTimerString(timer, 0);
for (uint8_t i = 0; i < MAX_TIMERS; i++) {
if (partialmodel.timers[i].mode > 0 && partialmodel.timers[i].persistent) {
getTimerString(timer, partialmodel.timers[i].value);
break;
}
}
buffer->drawText(101, 40, timer, TEXT_COLOR);
for (int i=0; i<4; i++) {
buffer->drawBitmapPattern(104+i*11, 25, LBM_SCORE0, TITLE_BGCOLOR);
}
GET_FILENAME(filename, BITMAPS_PATH, header.bitmap, "");
GET_FILENAME(filename, BITMAPS_PATH, partialmodel.header.bitmap, "");
const BitmapBuffer * bitmap = BitmapBuffer::load(filename);
if (bitmap) {
buffer->drawScaledBitmap(bitmap, 5, 24, 56, 32);