aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2016-06-24 08:39:56 -0400
committerPaul Gilbert2016-07-15 19:24:44 -0400
commitc2f6110d0218802b811c1172f114b5d8ed8bf37c (patch)
treed03afb5547dbcece374b95750e77746f6113c654
parent6b376e2fa1cce5323ae2a462451b7742ff5840d6 (diff)
downloadscummvm-rg350-c2f6110d0218802b811c1172f114b5d8ed8bf37c.tar.gz
scummvm-rg350-c2f6110d0218802b811c1172f114b5d8ed8bf37c.tar.bz2
scummvm-rg350-c2f6110d0218802b811c1172f114b5d8ed8bf37c.zip
TITANIC: Added CPetGlyphs methods
-rw-r--r--engines/titanic/pet_control/pet_glyphs.cpp35
-rw-r--r--engines/titanic/pet_control/pet_glyphs.h15
2 files changed, 49 insertions, 1 deletions
diff --git a/engines/titanic/pet_control/pet_glyphs.cpp b/engines/titanic/pet_control/pet_glyphs.cpp
index b5fa407dd4..1aea34f708 100644
--- a/engines/titanic/pet_control/pet_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_glyphs.cpp
@@ -219,7 +219,11 @@ void CPetGlyphs::changeHighlight(int index) {
}
void CPetGlyphs::highlight(int index) {
- warning("TODO: CPetGlyphs::highlight");
+ if (index >= 0) {
+ setSelectedIndex(index);
+ changeHighlight(index);
+ makePetDirty();
+ }
}
void CPetGlyphs::highlight(const CPetGlyph *glyph) {
@@ -235,6 +239,15 @@ int CPetGlyphs::getItemIndex(int index) {
return _firstVisibleIndex + index;
}
+void CPetGlyphs::setSelectedIndex(int index) {
+ if (index >= 0 && index < (int)size() && getHighlightedIndex(index) == -1) {
+ if (_firstVisibleIndex <= index)
+ index -= _numVisibleGlyphs - 1;
+
+ setFirstVisible(index);
+ }
+}
+
CPetGlyph *CPetGlyphs::getGlyph(int index) {
for (iterator i = begin(); i != end(); ++i) {
if (index-- == 0)
@@ -459,4 +472,24 @@ int CPetGlyphs::indexOf(const CPetGlyph *glyph) const {
return -1;
}
+void CPetGlyphs::incSelection() {
+ if (_highlightIndex >= 0 && _highlightIndex < ((int)size() - 1)) {
+ if (getHighlightedIndex(_highlightIndex) >= (_numVisibleGlyphs - 1))
+ scrollRight();
+
+ changeHighlight(_highlightIndex + 1);
+ makePetDirty();
+ }
+}
+
+void CPetGlyphs::decSelection() {
+ if (_highlightIndex > 0) {
+ if (getHighlightedIndex(_highlightIndex) == 0)
+ scrollLeft();
+
+ changeHighlight(_highlightIndex - 1);
+ makePetDirty();
+ }
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_glyphs.h b/engines/titanic/pet_control/pet_glyphs.h
index 26b1a658a6..f1587e3e5a 100644
--- a/engines/titanic/pet_control/pet_glyphs.h
+++ b/engines/titanic/pet_control/pet_glyphs.h
@@ -245,6 +245,11 @@ private:
int getItemIndex(int index);
/**
+ * Set the item index
+ */
+ void setSelectedIndex(int index);
+
+ /**
* Return a specified glyph
*/
CPetGlyph *getGlyph(int index);
@@ -419,6 +424,16 @@ public:
* Resets the scrolling of the glyphs list back to the start
*/
void scrollToStart() { _firstVisibleIndex = 0; }
+
+ /**
+ * Increment the currently selected index
+ */
+ void incSelection();
+
+ /**
+ * Decrement the currently selected index
+ */
+ void decSelection();
};
} // End of namespace Titanic