[Scummvm-cvs-logs] CVS: scummvm/queen logic.cpp,1.67,1.68 logic.h,1.51,1.52 xref.txt,1.27,1.28

Joost Peters joostp at users.sourceforge.net
Sun Nov 2 06:51:10 CET 2003


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv16147/queen

Modified Files:
	logic.cpp logic.h xref.txt 
Log Message:
add missing inventory functions

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -d -r1.67 -r1.68
--- logic.cpp	31 Oct 2003 13:47:27 -0000	1.67
+++ logic.cpp	2 Nov 2003 14:49:50 -0000	1.68
@@ -2040,19 +2040,89 @@
 	update();
 }
 
+int16 Logic::previousInventoryItem(int16 start) const {
+	int i;
+	for (i = start - 1; i >= 1; i--)
+		if (_itemData[i].name > 0)
+			return i;
+	for (i = _numItems; i > start; i--)
+		if (_itemData[i].name > 0)
+			return i;
+
+	return 0;	//nothing found
+}
+
+int16 Logic::nextInventoryItem(int16 start) const {
+	int i;
+	for (i = start + 1; i < _numItems; i++)
+		if (_itemData[i].name > 0)
+			return i;
+	for (i = 1; i < start; i++)
+		if (_itemData[i].name > 0)
+			return i;
+
+	return 0;	//nothing found
+}
+
+void Logic::removeDuplicateItems() {
+	for (int i = 0; i < 4; i++)
+		for (int j = i + 1; j < 4; j++)
+			if (_inventoryItem[i] == _inventoryItem[j])
+				_inventoryItem[j] = 0;
+}
+
+uint16 Logic::numItemsInventory() const {
+	uint16 count = 0;
+	for (int i = 1; i < _numItems; i++)
+		if (_itemData[i].name > 0)
+			count++;
+
+	return count;
+}
 
 void Logic::inventoryInsertItem(uint16 itemNum, bool refresh) {
-	warning("Logic::inventoryInsertItem() unimplemented");
+	int16 item = _inventoryItem[0] = (int16)itemNum; 
+	_itemData[itemNum].name = abs(_itemData[itemNum].name);	//set visible
+	for (int i = 1; i < 4; i++) {
+		item = nextInventoryItem(item);
+		_inventoryItem[i] = item;
+		removeDuplicateItems();
+	}
+	
+	if (refresh)
+		inventoryRefresh();
 }
 
 
 void Logic::inventoryDeleteItem(uint16 itemNum, bool refresh) {
-	warning("Logic::inventoryDeleteItem() unimplemented");
+	int16 item = (int16)itemNum;
+	_itemData[itemNum].name = -abs(_itemData[itemNum].name);	//set invisible
+	for (int i = 0; i < 4; i++) {
+		item = nextInventoryItem(item);
+		_inventoryItem[i] = item;
+		removeDuplicateItems();
+	}
+	
+	if (refresh)
+		inventoryRefresh();
 }
 
 
 void Logic::inventoryScroll(uint16 count, bool up) {
-	warning("Logic::inventoryScroll() unimplemented");
+	if (!(numItemsInventory() > 4))
+		return;
+
+	if (up) {
+		for (int i = 0; i < 3; i++)
+			_inventoryItem[i] = _inventoryItem[i + 1];
+		_inventoryItem[3] = nextInventoryItem(_inventoryItem[3]);
+	} else {
+		for (int i = 3; i > 0; i--)
+			_inventoryItem[i] = _inventoryItem[i - 1];
+		_inventoryItem[0] = previousInventoryItem(_inventoryItem[0]);
+	}
+
+	inventoryRefresh();
 }
 
 

Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.h,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- logic.h	1 Nov 2003 20:45:45 -0000	1.51
+++ logic.h	2 Nov 2003 14:49:50 -0000	1.52
@@ -256,6 +256,10 @@
 	void inventorySetup();
 	uint16 findInventoryItem(int invSlot) const;
 	void inventoryRefresh();
+	int16 previousInventoryItem(int16 start) const;
+	int16 nextInventoryItem(int16 start) const;
+	void removeDuplicateItems();
+	uint16 numItemsInventory() const;
 	void inventoryInsertItem(uint16 itemNum, bool refresh = true);
 	void inventoryDeleteItem(uint16 itemNum, bool refresh = true);
 	void inventoryScroll(uint16 count, bool up);

Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- xref.txt	1 Nov 2003 20:45:45 -0000	1.27
+++ xref.txt	2 Nov 2003 14:49:51 -0000	1.28
@@ -167,11 +167,11 @@
 
 INVENTORY
 =========
-DEL_ITEM_NUM()				Logic::inventoryDeleteItem // TODO
-INS_ITEM_NUM()				Logic::inventoryInsertItem // TODO
-INVDWN()					Logic::inventoryScroll // TODO
+DEL_ITEM_NUM()				Logic::inventoryDeleteItem 
+INS_ITEM_NUM()				Logic::inventoryInsertItem
+INVDWN()					Logic::inventoryScroll
 INVENTORY()					Logic::inventoryRefresh
-INVUP()						Logic::inventoryScroll // TODO
+INVUP()						Logic::inventoryScroll
 SETUP_ITEMS()				Logic::inventorySetup
 -
 INV1,INV2,INV3,INV4			Logic::_inventoryItem





More information about the Scummvm-git-logs mailing list