[Scummvm-cvs-logs] SF.net SVN: scummvm: [23006] scummvm/trunk/backends/wince/CEgui

knakos at users.sourceforge.net knakos at users.sourceforge.net
Sat Jun 10 13:23:07 CEST 2006


Revision: 23006
Author:   knakos
Date:     2006-06-10 04:23:00 -0700 (Sat, 10 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=23006&view=rev

Log Message:
-----------
added multiple state support

Modified Paths:
--------------
    scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp
    scummvm/trunk/backends/wince/CEgui/ItemSwitch.h
Modified: scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp
===================================================================
--- scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp	2006-06-10 11:16:43 UTC (rev 23005)
+++ scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp	2006-06-10 11:23:00 UTC (rev 23006)
@@ -25,9 +25,7 @@
 
 namespace CEGUI {
 
-	ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item) :
-	PanelItem(referenceTrue) {
-		_item = item;
+	void ItemSwitch::init(WORD referenceTrue, WORD referenceFalse) {
 		_backgroundTrue = _background;
 		_backgroundFalse = new SDL_ImageResource();
 		if (!_backgroundFalse->load(referenceFalse)) {
@@ -36,10 +34,25 @@
 			_background = NULL;
 			_backgroundFalse = NULL;
 		}
+	}
+
+	ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item) :
+	PanelItem(referenceTrue) {
+		init(referenceTrue, referenceFalse);
+		_item = item;
+		_itemmax = -1;
 		if (!*_item)
 			_background = _backgroundFalse;
 	}
 
+	ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, int *item, int max) :
+	PanelItem(referenceTrue) {
+		 init(referenceTrue, referenceFalse);
+		_itemmultiple = item;
+		_itemmax = max;
+		if (!*item)
+			_background = _backgroundFalse;
+	}
 
 	ItemSwitch::~ItemSwitch() {
 		if (_backgroundFalse)
@@ -49,18 +62,32 @@
 	bool ItemSwitch::action(int x, int y, bool pushed) {
 
 		if (checkInside(x, y) && _visible && pushed) {
-			*_item = !*_item;
-			if (*_item)
-				_background = _backgroundTrue;
-			else
-				_background = _backgroundFalse;
+			if (_itemmax <= 0) {
+				*_item = !*_item;
+				if (*_item)
+					_background = _backgroundTrue;
+				else
+					_background = _backgroundFalse;
 
-			if (_panel)
-				_panel->forceRedraw();
+				if (_panel)
+					_panel->forceRedraw();
 
-			return true;
-		}
-		else
+				return true;
+			} else {
+				*_itemmultiple = *_itemmultiple + 1;
+				if (*_itemmultiple > _itemmax)
+					*_itemmultiple = 0;
+				if (*_itemmultiple)
+					_background = _backgroundTrue;
+				else
+					_background = _backgroundFalse;
+
+				if (_panel)
+					_panel->forceRedraw();
+
+				return true;
+			}
+		} else
 			return false;
 	}
 }

Modified: scummvm/trunk/backends/wince/CEgui/ItemSwitch.h
===================================================================
--- scummvm/trunk/backends/wince/CEgui/ItemSwitch.h	2006-06-10 11:16:43 UTC (rev 23005)
+++ scummvm/trunk/backends/wince/CEgui/ItemSwitch.h	2006-06-10 11:23:00 UTC (rev 23006)
@@ -37,10 +37,14 @@
 	class ItemSwitch : public PanelItem {
 	public:
 		ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item);
+		ItemSwitch(WORD referenceTrue, WORD referenceFalse, int *item, int max);
 		virtual ~ItemSwitch();
 		virtual bool action(int x, int y, bool pushed);
 	private:
+		void init(WORD referenceTrue, WORD referenceFalse);
 		bool *_item;
+		static bool _itemdummy;
+		int  *_itemmultiple, _itemmax;
 		SDL_ImageResource *_backgroundTrue;
 		SDL_ImageResource *_backgroundFalse;
 	};


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list