Skip to content

Commit aa8c5a2

Browse files
authored
Merge pull request #22 from lr8soft/dev-y
v0.29x
2 parents bfe1e23 + 938b583 commit aa8c5a2

53 files changed

Lines changed: 728 additions & 448 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.idea/workspace.xml

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python2D/Python2D.vcxproj

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
<ClCompile Include="util\gl3w.c" />
135135
<ClCompile Include="util\ImageLoader.cpp" />
136136
<ClCompile Include="util\ShaderReader.cpp" />
137+
<ClCompile Include="XCCore\Attack\NormalStrike.cpp" />
137138
<ClCompile Include="XCCore\Background\BackgroundHelper.cpp" />
138139
<ClCompile Include="XCCore\Background\Camera.cpp" />
139140
<ClCompile Include="XCCore\Background\Lake.cpp" />
@@ -153,8 +154,7 @@
153154
<ClCompile Include="XCCore\XCCollide\CollideHelper.cpp" />
154155
<ClCompile Include="XCCore\XCCollide\CollideInfo.cpp" />
155156
<ClCompile Include="XCCore\XCRender\RenderManager.cpp" />
156-
<ClCompile Include="XCCore\XCRender\SpecialEffect\ExplodeParticleGroupSE.cpp" />
157-
<ClCompile Include="XCCore\XCRender\FlexibleParticleGenerater.cpp" />
157+
<ClCompile Include="XCCore\XCRender\ParticleHelper.cpp" />
158158
<ClCompile Include="XCCore\XCRender\SpecialEffect\XCParticle.cpp" />
159159
<ClCompile Include="XCCore\XCRender\XCFont.cpp" />
160160
<ClCompile Include="XCCore\Item\Item.cpp" />
@@ -178,6 +178,8 @@
178178
<ClInclude Include="util\ImageLoader.h" />
179179
<ClInclude Include="util\ShaderReader.h" />
180180
<ClInclude Include="util\stb_image.h" />
181+
<ClInclude Include="XCCore\Attack\IAttack.h" />
182+
<ClInclude Include="XCCore\Attack\NormalStrike.h" />
181183
<ClInclude Include="XCCore\Background\Background.h" />
182184
<ClInclude Include="XCCore\Background\BackgroundHelper.h" />
183185
<ClInclude Include="XCCore\Background\Camera.h" />
@@ -201,8 +203,7 @@
201203
<ClInclude Include="XCCore\XCCollide\CollideInfo.h" />
202204
<ClInclude Include="XCCore\XCRender\RenderManager.h" />
203205
<ClInclude Include="XCCore\XCRender\RenderObject.h" />
204-
<ClInclude Include="XCCore\XCRender\SpecialEffect\ExplodeParticleGroupSE.h" />
205-
<ClInclude Include="XCCore\XCRender\FlexibleParticleGenerater.h" />
206+
<ClInclude Include="XCCore\XCRender\ParticleHelper.h" />
206207
<ClInclude Include="XCCore\XCRender\SpecialEffect\XCParticle.h" />
207208
<ClInclude Include="XCCore\XCRender\XCFont.h" />
208209
<ClInclude Include="XCCore\Item\Item.h" />

Python2D/Python2D.vcxproj.filters

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
<Filter Include="XCCore\XCAudio">
4141
<UniqueIdentifier>{d0df81fa-abea-42c1-a3d3-a689a213969e}</UniqueIdentifier>
4242
</Filter>
43+
<Filter Include="XCCore\Attack">
44+
<UniqueIdentifier>{b873b62a-f989-4429-9109-4a1a7bc6ab6b}</UniqueIdentifier>
45+
</Filter>
4346
<Filter Include="XCCore\Enemy">
4447
<UniqueIdentifier>{2e419218-6347-4310-bc9f-14bf80549af2}</UniqueIdentifier>
4548
</Filter>
@@ -135,9 +138,6 @@
135138
<ClCompile Include="XCCore\XCRender\SpecialEffect\XCParticle.cpp">
136139
<Filter>XCCore\XCRender\SpecialEffect</Filter>
137140
</ClCompile>
138-
<ClCompile Include="XCCore\XCRender\SpecialEffect\ExplodeParticleGroupSE.cpp">
139-
<Filter>XCCore\XCRender\SpecialEffect</Filter>
140-
</ClCompile>
141141
<ClCompile Include="XCCore\UserInterface\CoverInterface.cpp">
142142
<Filter>XCCore\UserInterface</Filter>
143143
</ClCompile>
@@ -150,9 +150,6 @@
150150
<ClCompile Include="XCCore\XCAudio\AudioHelper.cpp">
151151
<Filter>XCCore\XCAudio</Filter>
152152
</ClCompile>
153-
<ClCompile Include="XCCore\XCRender\FlexibleParticleGenerater.cpp">
154-
<Filter>XCCore\XCRender</Filter>
155-
</ClCompile>
156153
<ClCompile Include="XCCore\Task\TaskManager.cpp">
157154
<Filter>XCCore\Task</Filter>
158155
</ClCompile>
@@ -165,6 +162,12 @@
165162
<ClCompile Include="XCCore\Task\TaskEnemy.cpp">
166163
<Filter>XCCore\Task</Filter>
167164
</ClCompile>
165+
<ClCompile Include="XCCore\Attack\NormalStrike.cpp">
166+
<Filter>XCCore\Attack</Filter>
167+
</ClCompile>
168+
<ClCompile Include="XCCore\XCRender\ParticleHelper.cpp">
169+
<Filter>XCCore\XCRender</Filter>
170+
</ClCompile>
168171
</ItemGroup>
169172
<ItemGroup>
170173
<ClInclude Include="util\ConfigManager.h">
@@ -271,9 +274,6 @@
271274
<ClInclude Include="XCCore\XCRender\SpecialEffect\XCParticle.h">
272275
<Filter>XCCore\XCRender\SpecialEffect</Filter>
273276
</ClInclude>
274-
<ClInclude Include="XCCore\XCRender\SpecialEffect\ExplodeParticleGroupSE.h">
275-
<Filter>XCCore\XCRender\SpecialEffect</Filter>
276-
</ClInclude>
277277
<ClInclude Include="XCCore\UserInterface\CoverInterface.h">
278278
<Filter>XCCore\UserInterface</Filter>
279279
</ClInclude>
@@ -286,9 +286,6 @@
286286
<ClInclude Include="XCCore\XCAudio\AudioHelper.h">
287287
<Filter>XCCore\XCAudio</Filter>
288288
</ClInclude>
289-
<ClInclude Include="XCCore\XCRender\FlexibleParticleGenerater.h">
290-
<Filter>XCCore\XCRender</Filter>
291-
</ClInclude>
292289
<ClInclude Include="XCCore\XCRender\RenderManager.h">
293290
<Filter>XCCore\XCRender</Filter>
294291
</ClInclude>
@@ -304,5 +301,14 @@
304301
<ClInclude Include="XCCore\Task\TaskEnemy.h">
305302
<Filter>XCCore\Task</Filter>
306303
</ClInclude>
304+
<ClInclude Include="XCCore\Attack\IAttack.h">
305+
<Filter>XCCore\Attack</Filter>
306+
</ClInclude>
307+
<ClInclude Include="XCCore\Attack\NormalStrike.h">
308+
<Filter>XCCore\Attack</Filter>
309+
</ClInclude>
310+
<ClInclude Include="XCCore\XCRender\ParticleHelper.h">
311+
<Filter>XCCore\XCRender</Filter>
312+
</ClInclude>
307313
</ItemGroup>
308314
</Project>

Python2D/XCCore/Attack/IAttack.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#pragma once
2+
#ifndef _IATTACK_H_
3+
#define _IATTACK_H_
4+
#include "../XCRender/RenderObject.h"
5+
#include "../Enemy/EnemyObject.h"
6+
class IAttack:public RenderObject {
7+
protected:
8+
9+
public:
10+
virtual void Init() = 0;
11+
virtual void Render() = 0;
12+
virtual void Release() = 0;
13+
14+
virtual void checkCollisonWithEnemy(EnemyObject* pEnemy) = 0;
15+
/*
16+
inline bool getIsTerminate() {
17+
return isWorkFinish;
18+
}
19+
20+
ObjectType getCurrentType() {
21+
return objectType;
22+
}
23+
*/
24+
};
25+
#endif
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#include "NormalStrike.h"
2+
#include "../../XCFrameInfo.h"
3+
#include "../XCRender/RenderManager.h"
4+
#include "../XCRender/ParticleHelper.h"
5+
#include <GL3/gl3w.h>
6+
XCWavFile NormalStrike::strikeEffect;
7+
bool NormalStrike::isResInit = false;
8+
9+
NormalStrike::NormalStrike(float x, float y, float z)
10+
{
11+
NowPosition[0] = x;
12+
NowPosition[1] = y;
13+
NowPosition[2] = z;
14+
15+
setCurrentType(AttackType);
16+
}
17+
18+
void NormalStrike::Init()
19+
{
20+
if (!isInit) {
21+
if (!isResInit) {
22+
strikeEffect = AudioHelper::loadWavFromFile("assets/SE/se_plst00.wav");
23+
isResInit = true;
24+
}
25+
26+
std::thread effectThread(&NormalStrike::threadStrikeHitWork, this);
27+
effectThread.detach();
28+
29+
renderHelper = new XCImageHelper("assets/Item/attack.png", true);
30+
31+
scaleSize[1] = 0.075f;
32+
scaleSize[0] = scaleSize[1] / (1.0f * renderHelper->getImageWidth() / renderHelper->getImageHeight());
33+
scaleSize[2] = 0.075f;
34+
35+
isInit = true;
36+
}
37+
}
38+
39+
void NormalStrike::Render()
40+
{
41+
if (isInit) {
42+
timer.Tick();
43+
NowPosition[1] += velocity * timer.getDeltaFrame();
44+
if (isFinish && texIndex < 4) {
45+
texIndex += 1.0f;
46+
}
47+
glEnable(GL_BLEND);
48+
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
49+
renderHelper->Render(glm::vec3(NowPosition[0], NowPosition[1], NowPosition[2]),
50+
glm::vec4(1.0f), glm::radians(90.0f), glm::vec3(0, 0, 1), glm::vec3(scaleSize[0], scaleSize[1], scaleSize[2]),
51+
IRenderHelper::GetSpecificTexWithRate(XCFrameInfo::FrameRight, XCFrameInfo::FrameTop, 4, 1, (int)texIndex, 1));
52+
glDisable(GL_BLEND);
53+
54+
if (!haveEffectPlay) {
55+
AudioHelper::playFromBuffer(strikeEffect.wavBuffer);
56+
haveEffectPlay = true;
57+
}
58+
59+
if (NowPosition[1]>1.0f + 0.025f) {
60+
isWorkFinish = true;
61+
}
62+
63+
if (isFinish && timer.getAccumlateTime() - finishTime > 0.06) {
64+
isWorkFinish = true;
65+
}
66+
}
67+
}
68+
69+
void NormalStrike::Release()
70+
{
71+
if (isInit) {
72+
renderHelper->Release();
73+
delete renderHelper;
74+
75+
isInit = false;
76+
}
77+
}
78+
79+
void NormalStrike::checkCollisonWithEnemy(EnemyObject * pEnemy)
80+
{
81+
if (!pEnemy->getIsTerminate() && !isFinish) {
82+
glm::vec3 enemyPosition = pEnemy->getNowPosition();
83+
float halfWidth = scaleSize[1];
84+
float halfHeight = scaleSize[0];
85+
float lastY = NowPosition[1] - velocity * timer.getDeltaFrame();
86+
if (enemyPosition[0] <= NowPosition[0] + halfWidth && enemyPosition[0] >= NowPosition[0] - halfWidth){
87+
if (enemyPosition[1] <= NowPosition[1] + halfHeight && enemyPosition[1] >= lastY - halfHeight) {
88+
ParticleHelper* particleGroup = new ParticleHelper;
89+
particleGroup->addNewParticle(6, 20.0f, 0.6f, 0.4f, glm::vec4(1.0f), enemyPosition);
90+
RenderManager::getInstance()->AddRenderObject(ParticleGroupUuid, particleGroup);
91+
92+
pEnemy->hurtEnemy(0.2f);
93+
velocity /= 3.0f;
94+
finishTime = timer.getAccumlateTime();
95+
isFinish = true;
96+
}
97+
}
98+
}
99+
}
100+
101+
void NormalStrike::threadStrikeHitWork()
102+
{
103+
AudioHelper::playFromBuffer(strikeEffect.wavBuffer);
104+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#pragma once
2+
#ifndef _NORMAL_STRIKE_H_
3+
#define _NORMAL_STRIKE_H_
4+
#include <thread>
5+
#include "IAttack.h"
6+
#include "../../util/GameTimer.h"
7+
#include "../XCRender/XCImageHelper.h"
8+
#include "../XCAudio/AudioHelper.h"
9+
class NormalStrike:public IAttack {
10+
protected:
11+
static XCWavFile strikeEffect;
12+
static bool isResInit;
13+
14+
XCGameTimer timer;
15+
float scaleSize[3] = { 0.0f };
16+
float texIndex = 1.0f;
17+
float NowPosition[3] = {0.0f, 0.0f, 0.0f}, velocity = 2.5f;
18+
XCImageHelper *renderHelper;
19+
bool isInit = false, haveEffectPlay = false, isFinish = false;
20+
double finishTime = 0.0;
21+
22+
void threadStrikeHitWork();
23+
public:
24+
NormalStrike(float x, float y, float z = 0.0f);
25+
virtual void Init() override;
26+
virtual void Render() override;
27+
virtual void Release() override;
28+
29+
virtual void checkCollisonWithEnemy(EnemyObject* pEnemy) override;
30+
};
31+
#endif

Python2D/XCCore/Bullet/Bullet.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ class Bullet:public RenderObject {
99

1010
float NowPosition[3] = { 0.0f, 0.0f, 0.0f };
1111
/*
12-
boolisWorkFinish = false
12+
bool isWorkFinish = false
1313
*/
14-
bool isFinishTime = false;
1514

1615
bool checkReboundOrOverflow(int *reBoundTimePointer, float *angle, float scaleX, float scaleY)
1716
{
@@ -114,12 +113,7 @@ class Bullet:public RenderObject {
114113

115114
virtual bool BulletCollideWithPoint(float x, float y, bool &haveGraze) = 0;
116115

117-
virtual void startFinishEffect() = 0;
118-
119-
120-
bool getIsFinishTime() {
121-
return isFinishTime;
122-
}
116+
virtual void setBulletTerminate() = 0;
123117

124118
void setPosition(float x, float y, float z) {
125119
NowPosition[0] = x;

0 commit comments

Comments
 (0)