mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-08 18:43:05 -04:00
more JUTConsole work
This commit is contained in:
@@ -108,8 +108,8 @@ template <typename T, int I>
|
||||
struct TLinkList : public TNodeLinkList {
|
||||
TLinkList() : TNodeLinkList() {}
|
||||
|
||||
static TLinkListNode* Element_toNode(T* element) { return static_cast<TLinkListNode*>(element); }
|
||||
static T* Element_toValue(TLinkListNode* node) { return static_cast<T*>(node); }
|
||||
static TLinkListNode* Element_toNode(T* element) { return reinterpret_cast<TLinkListNode*>(((char*)element) - I); }
|
||||
static T* Element_toValue(TLinkListNode* node) { return reinterpret_cast<T*>(((char*)node) + I); }
|
||||
|
||||
struct iterator : TNodeLinkList::iterator {
|
||||
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
|
||||
@@ -192,6 +192,14 @@ struct TLinkList : public TNodeLinkList {
|
||||
this->Insert(iter, element);
|
||||
}
|
||||
|
||||
iterator Find(T* element) {
|
||||
return TNodeLinkList::Find(Element_toNode(element));
|
||||
}
|
||||
|
||||
void Remove(T* element) {
|
||||
TNodeLinkList::Remove(Element_toNode(element));
|
||||
}
|
||||
|
||||
T* front() {
|
||||
TLinkList::iterator iter(TLinkList::begin());
|
||||
return *iter;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "Runtime.PPCEABI.H/__va_arg.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JUTConsole : public JKRDisposer, public JGadget::TLinkListNode {
|
||||
class JUTConsole : public JKRDisposer {
|
||||
public:
|
||||
enum EConsoleType {
|
||||
ACTIVE = 0,
|
||||
@@ -89,6 +89,9 @@ public:
|
||||
void scrollToLastLine() { scroll(mMaxLines); }
|
||||
void scrollToFirstLine() { scroll(-mMaxLines); }
|
||||
|
||||
public:
|
||||
/* 0x18 */ JGadget::TLinkListNode mLinkNode;
|
||||
|
||||
private:
|
||||
/* 0x20 */ u32 field_0x20;
|
||||
/* 0x24 */ s32 mMaxLines;
|
||||
@@ -130,7 +133,7 @@ public:
|
||||
static JUTConsoleManager* sManager;
|
||||
|
||||
private:
|
||||
/* 0x00 */ JGadget::TLinkList<JUTConsole, 4> soLink_;
|
||||
/* 0x00 */ JGadget::TLinkList<JUTConsole, -offsetof(JUTConsole, mLinkNode)> soLink_;
|
||||
/* 0x0C */ JUTConsole* mActiveConsole;
|
||||
/* 0x10 */ JUTConsole* mDirectConsole;
|
||||
}; // Size: 0x14
|
||||
|
||||
@@ -386,7 +386,7 @@ void JUTConsoleManager::removeConsole(JUTConsole* console) {
|
||||
if (soLink_.size() <= 1) {
|
||||
mActiveConsole = NULL;
|
||||
} else {
|
||||
mActiveConsole = console != soLink_.back() ? soLink_.Element_toValue(console->getNext()) : soLink_.front();
|
||||
mActiveConsole = console != soLink_.back() ? soLink_.Element_toValue(console->mLinkNode.getNext()) : soLink_.front();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user