SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
RailGraphIter.cpp
1#include "Game/Map/RailGraphIter.hpp"
2
3RailGraphIter::RailGraphIter(const RailGraph *pGraph) {
4 mGraph = pGraph;
5 _4 = -1;
6 mSelectedEdge = -1;
7 mNextEdge = -1;
8 _10 = -1;
9}
10
11void RailGraphIter::moveNodeNext() {
12 s32 selected_edge = mSelectedEdge;
13 _10 = _4;
14 RailGraphEdge* edge = mGraph->getEdge(selected_edge);
15 s32 next_node = edge->getNextNode(_10);
16 _4 = next_node;
17}
18
19void RailGraphIter::setNode(s32 a1) {
20 _4 = a1;
21 _10 = -1;
22 mSelectedEdge = -1;
23 mNextEdge = -1;
24}
25
26void RailGraphIter::watchStartEdge() {
27 RailGraphNode* node = mGraph->getNode(_4);
28 mNextEdge = node->_C;
29}
30
31void RailGraphIter::watchNextEdge() {
32 RailGraphEdge* edge = mGraph->getEdge(mNextEdge);
33 s32 next_edge = edge->getNextEdge(_4);
34 mNextEdge = next_edge;
35}
36
37bool RailGraphIter::isWatchEndEdge() const {
38 return mNextEdge == -1;
39}
40
41void RailGraphIter::selectEdge() {
42 mSelectedEdge = mNextEdge;
43}
44
45void RailGraphIter::selectEdge(s32 edge) {
46 mSelectedEdge = edge;
47}
48
49bool RailGraphIter::isWatchedPrevEdge() const {
50 RailGraphEdge* edge = mGraph->getEdge(mNextEdge);
51 return edge->getNextNode(_4) == _10;
52}
53
54bool RailGraphIter::isSelectedEdge() const {
55 return mGraph->isValidEdge(mSelectedEdge);
56}
57
58RailGraphNode* RailGraphIter::getCurrentNode() const {
59 return mGraph->getNode(_4);
60}
61
62RailGraphNode* RailGraphIter::getNextNode() const {
63 RailGraphEdge* edge = mGraph->getEdge(mSelectedEdge);
64 s32 next = edge->getNextNode(_4);
65 return mGraph->getNode(next);
66}
67
68RailGraphNode* RailGraphIter::getWatchNode() const {
69 RailGraphEdge* edge = mGraph->getEdge(mNextEdge);
70 s32 next_node = edge->getNextNode(_4);
71 return mGraph->getNode(next_node);
72}
73
74RailGraphEdge* RailGraphIter::getCurrentEdge() const {
75 return mGraph->getEdge(mSelectedEdge);
76}
77
78RailGraphEdge* RailGraphIter::getWatchEdge() const {
79 return mGraph->getEdge(mNextEdge);
80}