aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/UI/UIControl_SlotList.cpp')
-rw-r--r--Minecraft.Client/Common/UI/UIControl_SlotList.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/UIControl_SlotList.cpp b/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
new file mode 100644
index 00000000..e2130431
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
@@ -0,0 +1,93 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIControl_SlotList.h"
+
+UIControl_SlotList::UIControl_SlotList()
+{
+ m_lastHighlighted = -1;
+}
+
+bool UIControl_SlotList::setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName)
+{
+ UIControl::setControlType(UIControl::eSlotList);
+ bool success = UIControl_Base::setupControl(scene,parent,controlName);
+
+ //SlotList specific initialisers
+ m_addSlotFunc = registerFastName(L"addSlot");
+ m_setRedBoxFunc = registerFastName(L"SetSlotRedBox");
+ m_setHighlightFunc = registerFastName(L"SetSlotHighlight");
+
+ m_lastHighlighted = 0;
+
+ return success;
+}
+
+void UIControl_SlotList::addSlot(int id)
+{
+ IggyDataValue result;
+ IggyDataValue value[3];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = id;
+
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = false;
+ value[2].type = IGGY_DATATYPE_boolean;
+ value[2].boolval = false;
+ IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_addSlotFunc ,3 , value );
+}
+
+void UIControl_SlotList::addSlots(int iStartValue, int iCount)
+{
+ for(unsigned int i = iStartValue; i < iStartValue + iCount; ++i)
+ {
+ addSlot(i);
+ }
+}
+
+
+void UIControl_SlotList::setHighlightSlot(int index)
+{
+ if(index != m_lastHighlighted)
+ {
+ if(m_lastHighlighted != -1)
+ {
+ setSlotHighlighted(m_lastHighlighted, false);
+ }
+ setSlotHighlighted(index, true);
+ m_lastHighlighted = index;
+ }
+}
+
+void UIControl_SlotList::setSlotHighlighted(int index, bool highlight)
+{
+ IggyDataValue result;
+ IggyDataValue value[2];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = index;
+
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = highlight;
+ IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_setHighlightFunc , 2 , value );
+}
+
+void UIControl_SlotList::showSlotRedBox(int index, bool show)
+{
+ //app.DebugPrintf("Setting red box at index %d to %s\n", index, show?"on":"off");
+ IggyDataValue result;
+ IggyDataValue value[2];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = index;
+
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = show;
+ IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_setRedBoxFunc , 2, value );
+}
+
+void UIControl_SlotList::setFocus(bool focus)
+{
+ if(m_lastHighlighted != -1)
+ {
+ if(focus) setSlotHighlighted(m_lastHighlighted, true);
+ else setSlotHighlighted(m_lastHighlighted, false);
+ }
+}