[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