OSDN Git Service

fix build system ofmoflib1 and saisei1
[moflib/moflib.git] / saisei-1.0 / src / Demo1.cpp
1 #include "Demo1.hpp"
2 #include "configure.hpp"
3 #include "mof/Interpreter.hpp"
4 #include "mof/EventScheduler.hpp"
5 #include "mof/mofInput.hpp"
6 #include "mof/mofGraphics.hpp"
7 #include "mof/Application.hpp"
8 #include "mof/utilities.hpp"
9 #include "mof/widgets.hpp"
10 #include <mof/Texture.hpp>
11 #include "mof/Font.hpp"
12 #include "mof/Sprite.hpp"
13 #include "resource.hpp"
14 #include <mof/streams.hpp>
15 #include <mof/FactoryMethod.hpp>
16 #include <boost/bind.hpp> 
17 #include <memory> 
18 #include <mof/streams.hpp> 
19 #include "widget/createMenuView.hpp"
20 #include "widget/createFrame.hpp"
21 #include <mof/ConsoleIO.hpp>
22 #include <mof/FactoryMethod.hpp>
23 #include <mof/script/LuaInterpreter.hpp>
24 #include "script/MyEnvironment.hpp"
25
26 using namespace mof::widget;
27 using namespace boost;
28
29 namespace
30 {
31         
32         std::shared_ptr<mof::script::LuaInterpreter> interpreter_;
33         std::shared_ptr<mof::script::Environment> environment_;
34         std::shared_ptr<mof::InputReceiver> m_pInputReceiver;
35         mof::EventScheduler m_scheduler;
36         std::shared_ptr<mof::Sprite> m_pYukkuri;
37     Frame* m_pView;
38 }
39         
40 namespace Demo1
41 {
42 //{{{ initialize
43     void initialize()
44     {
45                 mof::Application::InputMode mode = mof::Application::input_mode();
46                 if (mode == mof::Application::INPUT_MODE_DEVICE) {
47                 m_pInputReceiver = std::shared_ptr<mof::InputReceiver>(mof::InputDevice::getInputReceiver());
48                 }
49                 else if (mode == mof::Application::INPUT_MODE_LOGGING) {
50                 m_pInputReceiver = std::make_shared<mof::LoggingInputReceiver>((TCHAR*)_T("inputLog.txt"));
51                 }
52                 else if (mode == mof::Application::INPUT_MODE_LOGGED) {
53                 m_pInputReceiver = std::make_shared<mof::LoggedInputReceiver>((TCHAR*)_T("inputLog.txt"));
54                 }
55
56                 environment_ = std::make_shared<script::MyEnvironment>(m_pInputReceiver);
57                 interpreter_ = std::make_shared<mof::script::LuaInterpreter>(_T("script/douga.lua"));
58                 interpreter_->bind(environment_);
59                 interpreter_->start("main");
60             mof::GraphicsDevice::lightEnable(false);
61             mof::GraphicsDevice::setAlphaBlendingMode(mof::GraphicsDevice::BLENDING_MODE_ALPHA);
62
63                 m_pYukkuri = 
64                         std::make_shared<mof::Sprite>
65                         (
66                                 std::make_shared<mof::Texture>(_T("image/yukkuri.png")), mof::Rectangle<mof::real>(0, 0, 1, 1)
67                         );
68                 {
69                         mof::Vector2DStream stream;
70                         stream << mof::Vector2D(420, 120);
71                         m_pYukkuri->setPositionStream(stream);
72                 }
73
74                 /*
75                 {
76                         using namespace mof;
77                         mof::Vector2D size = m_pYukkuri->getPreferredSize();
78                         KeyFrameAnimation<Vector2D>::KeyFrame keyframes1[] = {
79                                 makeKeyFrame(0, mof::Vector2D(420, 120)),
80                                 makeKeyFrame(10, mof::Vector2D(420, 100)),
81                                 makeKeyFrame(20, mof::Vector2D(420, 70)),
82                                 makeKeyFrame(30, mof::Vector2D(420, 60)),
83                                 makeKeyFrame(40, mof::Vector2D(420, 70)),
84                                 makeKeyFrame(50, mof::Vector2D(420, 120)),
85                                 makeKeyFrame(60, mof::Vector2D(420, 130)),
86                                 makeKeyFrame(90, mof::Vector2D(420, 130)),
87                                 makeKeyFrame(100, mof::Vector2D(420, 120)),
88                                 makeKeyFrame(110, mof::Vector2D(420, 70)),
89                                 makeKeyFrame(120, mof::Vector2D(420, 60)),
90                                 makeKeyFrame(130, mof::Vector2D(420, 70)),
91                                 makeKeyFrame(140, mof::Vector2D(420, 100)),
92                                 makeKeyFrame(150, mof::Vector2D(420, 120)),
93                         };
94                         KeyFrameAnimation<Vector2D>::KeyFrame keyframes2[] = {
95                                 makeKeyFrame(0, mof::Vector2D(200, 0)),
96                                 makeKeyFrame(60, mof::Vector2D(100, 0)),
97                                 makeKeyFrame(90, mof::Vector2D(100, 0)),
98                                 makeKeyFrame(150, mof::Vector2D(0, 0)),
99                         };
100                         KeyFrameAnimation<Vector2D>::KeyFrame keyframes3[] = {
101                                 makeKeyFrame(50, mof::Vector2D(0, 0)),
102                                 makeKeyFrame(75, mof::Vector2D(0, -60)),
103                                 makeKeyFrame(100, mof::Vector2D(0, 0)),
104                                 makeKeyFrame(150, mof::Vector2D(0, 0)),
105                                 makeKeyFrame(165, mof::Vector2D(0, -60)),
106                                 makeKeyFrame(180, mof::Vector2D(0, 0)),
107                         };
108                         KeyFrameAnimation<Vector2D>::KeyFrame keyframes4[] = {
109                                 makeKeyFrame(50, mof::Vector2D(0, 0)),
110                                 makeKeyFrame(75, mof::Vector2D(0, 60)),
111                                 makeKeyFrame(100, mof::Vector2D(0, 0)),
112                                 makeKeyFrame(150, mof::Vector2D(0, 0)),
113                                 makeKeyFrame(165, mof::Vector2D(0, 60)),
114                                 makeKeyFrame(180, mof::Vector2D(0, 0)),
115                         };
116
117                         Vector2DStream stream;
118                         stream << makeKeyFrameAnimationHandler<Vector2D>(keyframes1[0], lastOf(keyframes1));
119                         stream << makeKeyFrameAnimationHandler<Vector2D>(keyframes2[0], lastOf(keyframes2));
120                         stream << makeKeyFrameAnimationHandler<Vector2D>(keyframes4[0], lastOf(keyframes4));
121                         m_pYukkuri->setPositionStream(stream);
122                         
123                         Vector2DStream stream2;
124                         stream2 << makeConstantHandler(size);
125                         stream2 << makeKeyFrameAnimationHandler<Vector2D>(keyframes3[0], lastOf(keyframes3));
126                         m_pYukkuri->setSizeStream(stream2);
127                 }
128                 */
129
130
131     }
132 //}}}
133 //{{{ finalize
134     void finalize( )
135     {
136         mof::safe_delete( m_pView );
137     }
138 //}}} 
139     
140
141     void update()
142     {
143         m_scheduler.update();
144         m_pInputReceiver->update();
145                 m_pYukkuri->update();
146         //m_pView->update( );
147                 environment_->update();
148                 if(!environment_->isWaiting())interpreter_->update();
149         
150     }
151
152     void draw()
153     {
154                 mof::Rectangle<int> cr = mof::GraphicsDevice::getClientRegion();
155             mof::VertexXYZRHWC vertices[] = 
156             {
157                 mof::VertexXYZRHWC(mof::Vector2D(0 , 0) , mof::createColor(0 , 0 , 0)) ,
158                 mof::VertexXYZRHWC(mof::Vector2D(cr.getWidth() , 0) , mof::createColor(0 , 0 , 0)) ,
159                 mof::VertexXYZRHWC(mof::Vector2D(0 , cr.getHeight()) , mof::createColor(127 , 127 , 127)) ,
160                 mof::VertexXYZRHWC(mof::Vector2D(cr.getWidth() , cr.getHeight()) , mof::createColor(127 , 127 , 127))
161
162             };
163             mof::GraphicsDevice::setTexture(NULL);
164             mof::GraphicsDevice::drawVertexArray(vertices[0] , vertices[3] , mof::PRIMITIVE_TYPE_TRIANGLESTRIP );
165         
166                 environment_->draw();
167                 m_pYukkuri->draw();
168     }
169
170 } // namespace Demo1
171
172