DXフレームワーク　リファレンス・マニュアル 0.01 DXフレームワークのリファレンスです。詳細は公式wiki

- メインページ
- 関連ページ
- クラス
- ファイル

- ファイル一覧

Layer.h
1 #pragma once
2 #include "Object.h"
3
4 namespace DXFW
5 {
6 class Layer
7 {
8 public:
9 std::vector<std::shared_ptr<Object>> objects;
10 std::vector<std::shared_ptr<Object>> suspend;
11
12 void Add(Object *object , int suspend)
13 {
14 object->SetTimer(-suspend);
15
16 if( object->GetTimer() >= 0 )
17 {
18 this->objects.push_back( std::shared_ptr<Object>(object) );
19 }else{
20 this->suspend.push_back( std::shared_ptr<Object>(object) );
21 }
22 }
23
24 void Update( )
25 {
26 auto it = suspend.begin();
27 while( it != suspend.end() )
28 {
29 (*it)->SetTimer( (*it)->GetTimer() + 1 );
30 if( (*it)->GetTimer() >= 0 )
31 {
32 objects.push_back( (*it) );
33 it = suspend.erase( it );
34 continue;
35 }
36 it++;
37 }
38
39 for( auto it : objects )
40 {
41 it->Update( );
42 }
43 }
44
45 void Draw()
46 {
47 for( auto it : objects )
48 {
49 it->Draw();
50 }
51 }
52
53 void DrawShadow(double X座標ずれ , double Y座標ずれ )
54 {
55 for( auto it : objects )
56 {
57 it->DrawShadow( X座標ずれ , Y座標ずれ);
58 }
59 }
60
61 void ExeRemove(Rect* area)
62 {
63 auto it = objects.begin();
64 while( it != objects.end() )
65 {
66 if( (*it)->RemoveCheck( area ) )
67 {
68 it = objects.erase( it );
69 }else{
70 it++;
71 }
72 }
73 }
74
75 void Clear()
76 {
77 objects.clear();
78 suspend.clear();
79 }
80
81 int GetCount()
82 {
83 return objects.size();
84 }
85
86 Object* GetNearest(Object* object)
87 {
88 double nearest = -1;
89 Object* nearObject = nullptr;
90
91 for( auto it : objects )
92 {
93
94
95 double dist = object->GetDistance( it.get() );
96 if( dist < nearest || nearest == -1)
97 {
98 nearest = dist;
99 nearObject = it.get();
100 }
101 }
102
103 return nearObject;
104 }
105
106 void Hit( Layer &layer )
107 {
108 for( auto itA : objects )
109 {
110 for( auto itB : layer.objects )
111 {
112 if( itB->GetRemoveFlag() ) continue;
113
114 if( itA->Hit( itB.get() ) )
115 {
116 itA->Attack( itB.get() );
117 itB->Attack( itA.get() );
118 }
119 }
120 }
121 }
122
123 void Hit( Object* objcet )
124 {
125
126 for( auto it : objects )
127 {
128 if( it->GetRemoveFlag() ) continue;
129
130 if( it->Hit( objcet ) )
131 {
132 it->Attack( objcet );
133 objcet->Attack( it.get() );
134 }
135 }
136
137 }
138 };
139 }
DXFW::Layer
Definition: Layer.h:6
DXFW::Rect
説明
Definition: Figure.h:768
DXFW::Object
説明
Definition: Object.h:18