summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAHostIO/JAHFrameNode.cpp
blob: 6b4d0d68fcc2ca36993b9d7241fd31a5679636b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <JSystem/JAHostIO/JAHFrameNode.h>
#include <JSystem/JAHostIO/JAHVirtualNode.h>
#include <JSystem/JAHostIO/JAHioMessage.h>
#include <JSystem/JAHostIO/JAHioMgr.h>

JAHFrameNode::JAHFrameNode(const char* name)
    : JAHioNode(name), mTree((JAHVirtualNode*)this), mFrameNodeLink(this) {}

void JAHFrameNode::genMessage(JORMContext* context) {
    JAHControl control(context, this);
    callAllVirtualMessages(control);
    message(control);
    if (JAHSingletonBase<JAHioMgr>::getIns()->getNodeSysType() == 0)
        generateTempChildren(context);
    else
        generateRealChildren(context);
}

void JAHFrameNode::callAllVirtualMessages(JAHControl& control) {
    if (mTree.getNumChildren() == 0)
        return;

    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->message(control);
    }
}

void JAHFrameNode::appendVirNode(JAHVirtualNode* node) {
    mTree.appendChild(node->getVirTree());
}

void JAHFrameNode::listenPropertyEvent(const JORPropertyEvent* event) {
    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->listenVirtualPropertyEvent(JAH_P_EVENT0, (u32)event->id);
    }

    JAHioNode::listenPropertyEvent(event);

    for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
         ++iter)
    {
        iter->listenVirtualPropertyEvent(JAH_P_EVENT1, (u32)event->id);
    }
}

void JAHFrameNode::listenNodeEvent(const JORNodeEvent* event) {
    JAHioNode::listenNodeEvent(event);
    if (event->field_0x0 == 3) {
        for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
             iter != mTree.getEndChild(); ++iter)
            iter->listenVirtualNodeEvent(JAH_N_EVENT0);
    } else if (event->field_0x0 == 4) {
        for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
             iter != mTree.getEndChild(); ++iter)
            iter->listenVirtualNodeEvent(JAH_N_EVENT1);
    } else if (event->field_0x0 == 5) {
        for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
             iter != mTree.getEndChild(); ++iter)
            iter->listenVirtualNodeEvent(JAH_N_EVENT2);
    }
}

void JAHFrameNode::framework() {
    onFrame();
    if (mTree.getNumChildren() != 0) {
        int i = 0;  // unused?
        for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
             iter != mTree.getEndChild(); ++iter)
        {
            iter->framework();
        }
    }
}

void JAHFrameNode::onFrame() {}

void JAHFrameNode::currentFramework() {
    onCurrentNodeFrame();
    if (mTree.getNumChildren() != 0) {
        int i = 0;  // unused?
        for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
             iter != mTree.getEndChild(); ++iter)
        {
            iter->currentFramework();
        }
    }
}

void JAHFrameNode::onCurrentNodeFrame() {}