OSDN Git Service

Merge branch 'master' of o_ggy@git.sourceforge.jp:/gitroot/moflib/moflib
[moflib/moflib.git] / saisei-1.0 / rpg / rpg / oldcode / Symbol.cpp
1 #include "Symbol.h"
2 #include <iostream>
3 #include "mof/KeyFrameAnimation.h"
4 #include "mof/ConsoleIO.h"
5
6
7 et::Symbol::Symbol(mof::Component3D* pBody , float scale)
8 : mof::Component3D()
9 {
10         m_pBody = pBody;
11         m_nextRunningKey = 0;
12         setDirection(et::Symbol::DOWN);
13         m_scale = mof::Vector3D(scale , scale , scale);
14         
15         mof::KeyFrameAnimation* pAnimation = new mof::KeyFrameAnimation(true);
16         pAnimation->setScale(0 , m_scale);
17         setAnimation(0 , mof::AnimationResource(pAnimation));
18         
19 }
20
21
22
23 et::Symbol::Symbol(mof::Component3D* pBody , mof::Vector3D& scale)
24 : mof::Component3D()
25 {
26         m_pBody = pBody;
27         m_nextRunningKey = 0;
28         setDirection(et::Symbol::DOWN);
29         m_scale = scale;
30         
31         mof::KeyFrameAnimation* pAnimation = new mof::KeyFrameAnimation(true);
32         pAnimation->setScale(0 , mof::Vector3D(scale.x , scale.y , scale.z));
33         setAnimation(0 , mof::AnimationResource(pAnimation));
34 }
35
36
37 et::Symbol::~Symbol(void)
38 {
39         delete m_pBody;
40 }
41
42
43 /*
44 void et::Symbol::move(et::Symbol::Direction direction , float span , int length){
45         m_direction = direction;
46         mof::AnimationResource pAnimation = getAnimation(2);
47         if(pAnimation.get() != NULL && !pAnimation->isFinalized())return;
48         
49
50         const float SPEED_X = span;
51         const float SPEED_Y = span;
52         const float tableX[] = {0.0f , 0.0f , -SPEED_X , SPEED_X};
53         const float tableZ[] = {SPEED_Y , -SPEED_Y , 0.0f , 0.0f};
54
55         mof::KeyFrameAnimation* pKeyFrameAnimation = new mof::KeyFrameAnimation();
56         pKeyFrameAnimation->setVelocity(0 , mof::Vector3D(tableX[direction] , 0.0f , tableZ[direction] ));
57         pKeyFrameAnimation->setVelocity(length ,mof::Vector3D( 0.0f , 0.0f , 0.0f));
58
59
60         
61
62         setAnimation(3 , mof::AnimationResource(pKeyFrameAnimation));
63         
64
65 }*/
66
67
68
69 void et::Symbol::move(Direction direction ,  mof::Vector3D& position , int length)
70 {
71         m_direction = direction;
72         mof::AnimationResource pAnimation = getAnimation(3);
73         if(pAnimation.get() != NULL && !pAnimation->isFinalized())return;
74         
75         mof::Vector3D current = getPosition();
76         mof::KeyFrameAnimation* pKeyFrameAnimation = new mof::KeyFrameAnimation();
77         pKeyFrameAnimation->setPosition(0 , current);
78         pKeyFrameAnimation->setPosition(length , position);
79         pKeyFrameAnimation->update();//\8e\9f\82Ì\8dX\90V\82Å\88Ú\93®\82·\82é
80
81         setAnimation( 3 , mof::AnimationResource(pKeyFrameAnimation));
82         
83         pKeyFrameAnimation = new mof::KeyFrameAnimation();
84
85         const int tableRunningY[] = {3 , 2 , 1 , 2 , 3 , 3 , 2 , 1 , 2 , 3};
86         const int tableRunningX[] = {0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1};
87         const int lengthOfRunning = 10;
88         for(int i = 0 ; i < 1 ; i++){
89                 int key = (m_nextRunningKey + i) % lengthOfRunning;
90                 mof::Vector2D begin(32 * direction + 128 * tableRunningX[key] , tableRunningY[key] * 64 );
91                 mof::Vector2D end(32 * (direction+1) + 128 * tableRunningX[key] ,  (tableRunningY[key]+1) * 64 );
92                 pKeyFrameAnimation->setTextureRectangle(i*6 , mof::Line2D(begin , end));
93         }
94         m_nextRunningKey = (m_nextRunningKey + 1) % lengthOfRunning;
95
96         pKeyFrameAnimation->setTextureRectangle(length+1 , mof::Line2D(32 * direction , 0 , 32 * (direction+1) , 64));
97         pKeyFrameAnimation->setFinalKey(length);
98
99         setAnimation( 2 , mof::AnimationResource(pKeyFrameAnimation));
100         
101
102 }
103
104 bool et::Symbol::update(){
105         
106         return m_pBody->update();
107
108 }
109
110 bool et::Symbol::draw(){
111         return m_pBody->draw(m_worldTransform);
112 }
113
114 bool et::Symbol::draw(mof::Matrix3D& transform){
115         return m_pBody->draw(m_worldTransform * transform);
116 }
117
118
119
120 void et::Symbol::setAnimation(int index , mof::AnimationResource& pAnimation){
121         mof::GraphicsObject::setAnimation(index , pAnimation);
122         m_pBody->setAnimation(index , pAnimation);
123         
124 }
125
126 void et::Symbol::setWorldTransform(mof::Matrix3D& matrix){
127         m_pBody->setWorldTransform( matrix);
128 }
129         
130
131 mof::Vector3D et::Symbol::getPosition(){
132         return m_pBody->getPosition();
133 }
134
135 /*
136 void et::Symbol::setPosition(mof::Vector3D& position){
137         m_pBody->setPosition(position);
138 }*/
139
140 void et::Symbol::setPosition(mof::Vector3D& position , et::Symbol::Direction direction){
141         
142         setDirection(direction);
143         mof::Vector3D current = getPosition();
144         mof::KeyFrameAnimation* pKeyFrameAnimation = new mof::KeyFrameAnimation();
145         pKeyFrameAnimation->setPosition(0 , position);
146         setAnimation( 3 , mof::AnimationResource(pKeyFrameAnimation));
147         
148 }
149
150
151 et::Symbol::Direction et::Symbol::getDirection(){
152         return m_direction;
153 }
154
155 void et::Symbol::setDirection(et::Symbol::Direction direction){
156         mof::KeyFrameAnimation* pKeyFrameAnimation = new mof::KeyFrameAnimation();
157         pKeyFrameAnimation->setTextureRectangle(0 , mof::Line2D(32 * direction , 0 , 32 * (direction+1) , 64));
158         setAnimation(2 , mof::AnimationResource(pKeyFrameAnimation));
159         m_direction = direction;
160
161 }
162
163 mof::Vector3D& et::Symbol::getScale(){
164         return m_scale;
165 }
166
167