#ifndef INCLUDED_Maiahi4_h_ // このファイル INCLUDED_Maiahi4_h_ が定義されていなければ #define INCLUDED_Maiahi4_h_ // このファイル INCLUDED_Maiahi4_h_ を定義する #include "Shared/ERS7Info.h" // AIBOの機種(ERS7)に関する部品ファイル #include "Shared/WorldState.h" // 状態を監視するための部品ファイル #include "StateHeader.h" // 状態と遷移に必要な部品ファイル #include "StartCommFromPC.h" // PCから合図を受信するための部品ファイル // クラス Maiahi4 class Maiahi4 : public StateNode { protected: StateNode * start_node; // start_nodeは、クラス全体で使用するのでココに定義する StartCommFromPC fromPC; // PCからの合図を受け取るオブジェクト public: // コンストラクタ Maiahi4() : StateNode("Maiahi4"), start_node(NULL), fromPC() {} // デコンストラクタ ~Maiahi4() { if(issetup) teardown(); } virtual void setup() { // 親クラスStateNodeのsetup()関数を呼ぶ StateNode::setup(); // 伏せ姿勢ノード(スタート姿勢) StateNode * lie_node = new SmallMotionSequenceNode("Lie","lielie.mot"); addNode(lie_node); // うなずき1回目 StateNode * unazuki1_node = new LargeMotionSequenceNode("Unazuki1","maiahi/una10.mot"); addNode(unazuki1_node); // うなずき2回目 StateNode * unazuki2_node = new LargeMotionSequenceNode("Unazuki2","maiahi/una10.mot"); addNode(unazuki2_node); // うなずき3回目 StateNode * unazuki3_node = new LargeMotionSequenceNode("Unazuki3","maiahi/una10.mot"); addNode(unazuki3_node); // うなずき4回目 StateNode * unazuki4_node = new LargeMotionSequenceNode("Unazuki4","maiahi/una10.mot"); addNode(unazuki4_node); // うなずき5回目 StateNode * unazuki5_node = new LargeMotionSequenceNode("Unazuki5","maiahi/una10.mot"); addNode(unazuki5_node); // うなずき6回目 StateNode * unazuki6_node = new LargeMotionSequenceNode("Unazuki6","maiahi/una10.mot"); addNode(unazuki6_node); // うなずき7回目 StateNode * unazuki7_node = new LargeMotionSequenceNode("Unazuki7","maiahi/una10.mot"); addNode(unazuki7_node); // うなずき8回目 StateNode * unazuki8_node = new LargeMotionSequenceNode("Unazuki8","maiahi/una10.mot"); addNode(unazuki8_node); // うなずき9回目 StateNode * unazuki9_node = new LargeMotionSequenceNode("Unazuki9","maiahi/una10.mot"); addNode(unazuki9_node); // うなずき10回目 StateNode * unazuki10_node = new LargeMotionSequenceNode("Unazuki10","maiahi/una10.mot"); addNode(unazuki10_node); // うなずき11回目 StateNode * unazuki11_node = new LargeMotionSequenceNode("Unazuki11","maiahi/una10.mot"); addNode(unazuki11_node); // うなずき12回目 StateNode * unazuki12_node = new LargeMotionSequenceNode("Unazuki12","maiahi/una6_4.mot"); addNode(unazuki12_node); // 座り3(ダンス準備) StateNode * sit3_node = new SmallMotionSequenceNode("sit3","sitsit.mot"); addNode(sit3_node); // ソログループ GroupNode * solo_group = new GroupNode("SoloGroup"); addNode(solo_group); // ソロダンス StateNode * dance_solo_node = new XLargeMotionSequenceNode("dance_solo","maiahi/solo41.mot"); solo_group->addNode(dance_solo_node); // LEDノード1 LedNode * led1_node = new LedNode("led1"); led1_node->getMC()->cycle(RobotInfo::HeadColorLEDMask, 1000, 100.0); solo_group->addNode(led1_node); // LEDノード2 LedNode * led2_node = new LedNode("led2"); led2_node->getMC()->cycle(RobotInfo::ModeGreenLEDMask, 1000, 100.0); solo_group->addNode(led2_node); // 立ち StateNode * stand_node = new MediumMotionSequenceNode("stand","sitstand.mot"); addNode(stand_node); // デュオダンス StateNode * dance_duo_node = new XLargeMotionSequenceNode("dance_duo","maiahi/duo34.mot"); addNode(dance_duo_node); // ALLグループ GroupNode * all_group = new GroupNode("AllGroup"); addNode(all_group); // ALLダンス1 StateNode * all1_node = new XLargeMotionSequenceNode("ALL_1","maiahi/all_1.mot"); all_group->addNode(all1_node); // LEDノードALL LedNode * led_all_node = new LedNode("led_all"); led_all_node->getMC()->cycle(RobotInfo::AllLEDMask, 1000, 100.0); all_group->addNode(led_all_node); // ALLダンス2 StateNode * all2_node = new XLargeMotionSequenceNode("ALL_2","maiahi/all_2.mot"); addNode(all2_node); // ALLダンス3 StateNode * all3_node = new XLargeMotionSequenceNode("ALL_3","maiahi/all_3.mot"); addNode(all3_node); // ALLダンス4 StateNode * all4_node = new XLargeMotionSequenceNode("ALL_4","maiahi/all_4.mot"); addNode(all4_node); // LEDオフ LedNode * led_off_node = new LedNode("led_off"); led_off_node->getMC()->set(RobotInfo::AllLEDMask, 0.0); addNode(led_off_node); // スタートは伏せ姿勢 start_node = lie_node; // ダンス開始 // TextMessageEventによる遷移(座り→うなずき1) EventTrans * textTrans = new EventTrans(unazuki1_node,EventBase::textmsgEGID); lie_node->addTransition(textTrans); // うなずき1→うなずき2 unazuki1_node->addTransition(new CompletionTrans(unazuki2_node)); // うなずき2→うなずき3 unazuki2_node->addTransition(new CompletionTrans(unazuki3_node)); // うなずき3→うなずき4 unazuki3_node->addTransition(new CompletionTrans(unazuki4_node)); // うなずき4→うなずき5 unazuki4_node->addTransition(new CompletionTrans(unazuki5_node)); // うなずき5→うなずき6 unazuki5_node->addTransition(new CompletionTrans(unazuki6_node)); // うなずき6→うなずき7 unazuki6_node->addTransition(new CompletionTrans(unazuki7_node)); // うなずき7→うなずき8 unazuki7_node->addTransition(new CompletionTrans(unazuki8_node)); // うなずき8→うなずき9 unazuki8_node->addTransition(new CompletionTrans(unazuki9_node)); // うなずき9→うなずき10 unazuki9_node->addTransition(new CompletionTrans(unazuki10_node)); // うなずき10→うなずき11 unazuki10_node->addTransition(new CompletionTrans(unazuki11_node)); // うなずき11→うなずき12 unazuki11_node->addTransition(new CompletionTrans(unazuki12_node)); // うなずき12→座り3 unazuki12_node->addTransition(new CompletionTrans(sit3_node)); // 座り3→ソロダンス sit3_node->addTransition(new CompletionTrans(solo_group)); // ソロダンス→立ち dance_solo_node->addTransition(new CompletionTrans(stand_node)); // 立ち→デュオダンス stand_node->addTransition(new CompletionTrans(dance_duo_node)); // デュオダンス→ALLダンス1 dance_duo_node->addTransition(new CompletionTrans(all_group)); // ALLダンス1→ALLダンス2 all1_node->addTransition(new CompletionTrans(all2_node)); // ALLダンス2→ALLダンス3 all2_node->addTransition(new CompletionTrans(all3_node)); // ALLダンス3→ALLダンス4 all3_node->addTransition(new CompletionTrans(all4_node)); // ALLダンス4→LEDオフ all4_node->addTransition(new CompletionTrans(led_off_node)); } virtual void DoStart() { StateNode::DoStart(); start_node->DoStart(); fromPC.DoStart(); // fromPCオブジェクトをスタート } virtual void DoStop() { StateNode::DoStop(); fromPC.DoStop(); // fromPCオブジェクトをストップ } virtual void teardown() { StateNode::teardown(); } private: // コンパイル時の警告を避けるためのダミー関数 Maiahi4(const Maiahi4&); Maiahi4 operator=(const Maiahi4&); }; #endif