[Scummvm-git-logs] scummvm master -> e9e9bd342b1a238cc64e655997ccdd39cacbdf92
dreammaster
noreply at scummvm.org
Mon Oct 7 00:16:00 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
dbe7adfe78 M4: RIDDLE: Enable Interface::handleState code
e9e9bd342b M4: RIDDLE: Implemented Riddle Inventory::draw
Commit: dbe7adfe78fc8d1001c5c13948b9c5c326780223
https://github.com/scummvm/scummvm/commit/dbe7adfe78fc8d1001c5c13948b9c5c326780223
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-06T15:23:36-07:00
Commit Message:
M4: RIDDLE: Enable Interface::handleState code
Changed paths:
engines/m4/riddle/gui/interface.cpp
diff --git a/engines/m4/riddle/gui/interface.cpp b/engines/m4/riddle/gui/interface.cpp
index 09965edc0bd..4e869793c34 100644
--- a/engines/m4/riddle/gui/interface.cpp
+++ b/engines/m4/riddle/gui/interface.cpp
@@ -345,7 +345,6 @@ void Interface::dispatch_command() {
}
void Interface::handleState(ControlStatus status) {
-#ifdef TODO
int highlight = _inventory->_highlight;
int index = _inventory->_scroll + highlight;
@@ -407,7 +406,6 @@ void Interface::handleState(ControlStatus status) {
default:
break;
}
-#endif
}
void Interface::l_cb() {
Commit: e9e9bd342b1a238cc64e655997ccdd39cacbdf92
https://github.com/scummvm/scummvm/commit/e9e9bd342b1a238cc64e655997ccdd39cacbdf92
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-06T17:15:53-07:00
Commit Message:
M4: RIDDLE: Implemented Riddle Inventory::draw
Changed paths:
engines/m4/riddle/gui/interface.cpp
engines/m4/riddle/gui/inventory.cpp
engines/m4/riddle/gui/inventory.h
diff --git a/engines/m4/riddle/gui/interface.cpp b/engines/m4/riddle/gui/interface.cpp
index 4e869793c34..c3f8c5afe4a 100644
--- a/engines/m4/riddle/gui/interface.cpp
+++ b/engines/m4/riddle/gui/interface.cpp
@@ -231,21 +231,25 @@ bool Interface::eventHandler(void *bufferPtr, int32 eventType, int32 event, int3
void Interface::trackIcons() {
switch (_interfaceBox->_highlight_index) {
case 4:
+ // Take
t_cb();
break;
case 5:
+ // Look
l_cb();
break;
case 6:
+ // Backpack
mouse_set_sprite(_arrow);
_iconSelected = false;
- _inventory->toggleFlag();
+ _inventory->toggleHidden();
_inventory->refresh_scrollbars();
break;
case 7:
+ // Use
u_cb();
break;
@@ -255,10 +259,12 @@ void Interface::trackIcons() {
break;
case 9:
+ // Scroll inventory left
_inventory->check_left();
break;
case 10:
+ // Scroll inventory right
_inventory->check_right();
break;
diff --git a/engines/m4/riddle/gui/inventory.cpp b/engines/m4/riddle/gui/inventory.cpp
index dee0f62c20a..8ee30434fc2 100644
--- a/engines/m4/riddle/gui/inventory.cpp
+++ b/engines/m4/riddle/gui/inventory.cpp
@@ -122,8 +122,8 @@ void Inventory::set_scroll(int32 new_scroll) {
_must_redraw_all = true;
}
-void Inventory::toggleFlag() {
- _flag1 = !_flag1;
+void Inventory::toggleHidden() {
+ _hidden = !_hidden;
_must_redraw_all = true;
}
@@ -196,48 +196,43 @@ void Inventory::draw(GrBuff *myBuffer) {
Buffer *myBuff = myBuffer->get_buffer();
- if (_must_redraw_all) {
+ if (_must_redraw_all || _hidden) {
gr_color_set(__BLACK);
gr_buffer_rect_fill(myBuff, _x1, _y1, _x2 - _x1, _y2 - _y1);
}
- _right_arrow_visible = false;
-
- for (cell_iter = 0; (cell_iter + _scroll < _num_cells) && (cell_iter < MAX_INVENTORY); cell_iter++) {
- int16 left = (int16)(_x1 + cell_pos_x(cell_iter));
- int16 top = (int16)(_y1 + cell_pos_y(cell_iter));
- int16 leftOffset = left + _cell_w;
- int16 topOffset = top + _cell_h;
-
- if (_must_redraw1 == cell_iter || _must_redraw2 == cell_iter || _must_redraw_all) {
- // This does the scroll buttons update....
- refresh_right_arrow();
- refresh_left_arrow();
-
- // Draw icon here
- gr_color_set(__BLACK);
- gr_buffer_rect_fill(myBuff, left, top, leftOffset - left, topOffset - top);
- series_show_frame(_sprite, _items[cell_iter + _scroll]._cell, myBuff,
- left + (_cell_w - 31) / 2, top + (_cell_h - 31) / 2);
-
- // Draw box around icon
- if (_highlight == cell_iter) {
- left += 2;
- top += 20;
- gr_line(left, top, left + 35, top, __GREEN, myBuff);
- gr_line(left + 35, top, left + 35, top + 35, __GREEN, myBuff);
- gr_line(left, top, left, top + 35, __GREEN, myBuff);
- gr_line(left, top + 35, left + 35, top + 35, __GREEN, myBuff);
+ if (!_hidden) {
+ _right_arrow_visible = false;
+ const int X_BORDER = 2, Y_BORDER = 2;
+
+ for (cell_iter = 0; (cell_iter + _scroll < _num_cells) && (cell_iter < MAX_INVENTORY); cell_iter++) {
+ int16 left =_x1 + X_BORDER + cell_pos_x(cell_iter);
+ int16 top = _y1 + Y_BORDER + cell_pos_y(cell_iter);
+ int16 leftOffset = left + _cell_w;
+ int16 topOffset = top + _cell_h;
+
+ if (_must_redraw1 == cell_iter || _must_redraw2 == cell_iter || _must_redraw_all) {
+ // Update the scroll buttons
+ refresh_right_arrow();
+ refresh_left_arrow();
+
+ // Draw icon here
+ gr_color_set(__BLACK);
+ gr_buffer_rect_fill(myBuff, left, top, leftOffset - left, topOffset - top);
+ series_show_frame(_sprite, _items[cell_iter + _scroll]._cell,
+ myBuff, left - 3, top - 3);
+
+ // Draw box around icon
+ if (_highlight == cell_iter) {
+ gr_line(left, top, left + _cell_w - 2, top, __LTGRAY, myBuff);
+ gr_line(left, top + _cell_h - 2, left + _cell_w - 2, top + _cell_h - 2, __LTGRAY, myBuff);
+ gr_line(left, top, left, top + _cell_w - 2, __LTGRAY, myBuff);
+ gr_line(left + _cell_w - 2, top, left + _cell_w - 2, top + 35, __LTGRAY, myBuff);
+ }
}
}
}
- // Draw inventory slot frames
- for (cell_iter = 0; cell_iter < MAX_INVENTORY; ++cell_iter) {
- series_show_frame(_sprite, 67, myBuff, cell_iter * 39 + 188, 22);
- series_show_frame(_sprite, 68, myBuff, cell_iter * 39 + 188, 92);
- }
-
ScreenContext *iC = vmng_screen_find(_G(gameInterfaceBuff), nullptr);
RestoreScreensInContext(_x1, _y1, _x2, _y2, iC);
_must_redraw1 = _must_redraw2 = -1;
diff --git a/engines/m4/riddle/gui/inventory.h b/engines/m4/riddle/gui/inventory.h
index 93810a5e012..7a308a5c1c0 100644
--- a/engines/m4/riddle/gui/inventory.h
+++ b/engines/m4/riddle/gui/inventory.h
@@ -33,7 +33,7 @@ using namespace M4::GUI;
constexpr int16 INVENTORY_CELLS_COUNT = 128;
constexpr int16 ARROW_WIDTH = 8;
-constexpr int16 MAX_INVENTORY = 9;
+constexpr int16 MAX_INVENTORY = 20;
constexpr int16 LEFT_ARROW_TAG = 128;
constexpr int16 RIGHT_ARROW_TAG = 129;
@@ -62,7 +62,7 @@ private:
int16 _tag = 0;
int16 _num_cells = 0;
bool _right_arrow_visible = false;
- bool _flag1 = false;
+ bool _hidden = false;
int16 cell_pos_x(int16 index);
int16 cell_pos_y(int16 index);
@@ -101,7 +101,11 @@ public:
void check_right();
void set_scroll(int32 new_scroll);
- void toggleFlag();
+
+ /**
+ * Toggles whether the inventory is visible
+ */
+ void toggleHidden();
};
} // namespace GUI
More information about the Scummvm-git-logs
mailing list