From 945ee99e4130a787d6d1e2df4d11e574d0bfb446 Mon Sep 17 00:00:00 2001 From: VisualGMQ <2142587070@qq.com> Date: Thu, 17 Feb 2022 15:12:24 +0800 Subject: [PATCH] fixed fight ship ai bug; improved freight ship --- HowToPlay.md | 42 +++++ ReadMe.md | 12 ++ assets/explose.wav | Bin 0 -> 26350 bytes assets/hurt.wav | Bin 0 -> 19664 bytes assets/missile.wav | Bin 0 -> 29802 bytes assets/tilesheet.png | Bin 1462 -> 1071 bytes include/game/component.hpp | 2 + include/game/constants.hpp | 12 +- include/game/quick_list.hpp | 7 + include/game/stages/space.hpp | 20 +- include/game/system.hpp | 2 +- include/tinyengine/event.hpp | 1 + include/tinyengine/libmath.hpp | 4 +- include/tinyengine/renderer.hpp | 10 +- pack.sh | 2 + snapshot/gaming.png | Bin 0 -> 92189 bytes snapshot/select_ship.png | Bin 0 -> 98660 bytes snapshot/welcome.png | Bin 0 -> 96196 bytes src/game/action.cpp | 17 +- src/game/ai.cpp | 56 ++++-- src/game/component.cpp | 1 + src/game/controllers/fightship_controller.cpp | 16 +- .../controllers/freightship_controller.cpp | 6 +- src/game/entity.cpp | 6 +- src/game/global.cpp | 5 +- src/game/gui.cpp | 2 +- src/game/stages/space.cpp | 177 ++++++++++++------ src/game/stages/welcome.cpp | 2 +- src/game/system.cpp | 49 +++-- src/tinyengine/event.cpp | 6 + src/tinyengine/renderer.cpp | 12 +- 31 files changed, 345 insertions(+), 124 deletions(-) create mode 100644 HowToPlay.md create mode 100644 assets/explose.wav create mode 100644 assets/hurt.wav create mode 100644 assets/missile.wav create mode 100644 snapshot/gaming.png create mode 100644 snapshot/select_ship.png create mode 100644 snapshot/welcome.png diff --git a/HowToPlay.md b/HowToPlay.md new file mode 100644 index 0000000..72c900d --- /dev/null +++ b/HowToPlay.md @@ -0,0 +1,42 @@ +![welcome](./snapshot/welcome.png) + +开始界面,上方按钮进入游戏,下方按钮退出游戏 + + +![select-ship](./snapshot/select_ship.png) + +选择飞船和配置阵营界面。左边选择你的飞船(目前只有两架),右边可以配置阵营: + +* `Group Number`:要参战的队伍(最少2队,最多4队) +* `Plane Number`:每队的飞船数目 + +机种: + +* 防御机(圆圆的那个):血量高,但是速度慢,攻击频率慢,且只有炮弹武器,但是可以360度射击。 +* 战斗机(看上去就像战斗机的那个):血量少,但是速度快,攻击频率高,有炮弹和导弹两种武器,炮弹只可以向飞行方向射击。 + +战斗机和防御机的起始数量是随机的(总数为Plane Number)。 + + +![gaming](./snapshot/gaming.png) + +游戏界面。 + +* 左下角是雷达图,可以显示一定范围的飞机 +* 正下方是战队血量,展示了目前在场的战队的所有飞机血量和(红色是我方血量) +* 右下角是武器说明,第一栏为主武器(这里是Bullet子弹),第二栏是副武器(这里是Missile导弹),方括号里显示武器弹药数量(没有就是无限弹药) +* 右上角是你的飞船血量。 + +飞机的操作: + +* 防御机,按下w,a,s,d进行上下左右的移动,按下鼠标左键进行攻击。 +* 战斗机,按下a,d进行左右转向,w,s进行加速和减速(不能向后倒着飞),鼠标左键使用炮弹,鼠标右键发射导弹(导弹有数量限制)。 + +切换飞机: + +当你控制的飞机死亡后,视角会转到我方阵营的另一架飞机上,此时可以选择按空格键操控这辆飞机。 + +胜利条件: + +全灭其他所有阵营获得胜利 + diff --git a/ReadMe.md b/ReadMe.md index e4299bc..e11fca7 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -24,3 +24,15 @@ pack.sh ``` 最终的结果在`output`文件夹下。 + +## 游戏截图 + +![welcome](./snapshot/welcome.png) + +![select](./snapshot/select_ship.png) + +![gaming](./snapshot/gaming.png) + +## 游戏操作 + +[游戏操作](./HowToPlay.md) diff --git a/assets/explose.wav b/assets/explose.wav new file mode 100644 index 0000000000000000000000000000000000000000..05da2cbcb87f62d3d0402ed2571a7464379932fd GIT binary patch literal 26350 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 literal 0 HcmV?d00001 diff --git a/assets/hurt.wav b/assets/hurt.wav new file mode 100644 index 0000000000000000000000000000000000000000..d63b65c048c94fb27faa42de60a4bad5d8d2148b GIT binary patch literal 19664 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 F{ttXZw8#Je literal 0 HcmV?d00001 diff --git a/assets/missile.wav b/assets/missile.wav new file mode 100644 index 0000000000000000000000000000000000000000..141ef5dd8c99a4322c55a1fd30d181a7d923ae47 GIT binary patch literal 29802 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 literal 0 HcmV?d00001 diff --git a/assets/tilesheet.png b/assets/tilesheet.png index 23190af005d0f3b68557f7d21e45dff3cec2b3b5..a4bb259dfa94ccd2ed930a397f74ee77fa7dfae4 100644 GIT binary patch literal 1071 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 z000000000000000000000000000000000000000000000000000Mvv30bw;sg}hc9 QtpET307*qoM6N<$f(9|YAOHXW diff --git a/include/game/component.hpp b/include/game/component.hpp index 06e1bc1..dc5604c 100644 --- a/include/game/component.hpp +++ b/include/game/component.hpp @@ -228,8 +228,10 @@ public: void Init(AIFunc func) { this->func = func; + target = nullptr; } void Release() {} AIFunc func; + Entity* target; }; diff --git a/include/game/constants.hpp b/include/game/constants.hpp index 98f8281..6fa40d9 100644 --- a/include/game/constants.hpp +++ b/include/game/constants.hpp @@ -7,9 +7,10 @@ constexpr int FightShipLife = 10; constexpr float FightShipRotationDegree = 6; constexpr float FightShipAccelration = 200; -constexpr float FreightShipMaxSpeed = 100; -constexpr int FreightShipLife = 15; +constexpr float FreightShipMaxSpeed = 200; +constexpr int FreightShipLife = 20; constexpr float FreightShipAccelerate = 100; +constexpr float FreightShipLazerDelay = 0.3; constexpr float LazerDamage = 3.4; constexpr float LazerShooterSpeed = 800; @@ -34,3 +35,10 @@ constexpr int Enemy3Group = 3; constexpr float EntityRenderSize = 20; constexpr float EntityCollisionSize = 16; + +constexpr Color GroupSpecColor[4] = { + Color{0.8, 0, 0, 1}, + Color{0, 0.8, 0, 1}, + Color{0, 0, 0.8, 1}, + Color{0.8, 0.8, 0, 1} +}; diff --git a/include/game/quick_list.hpp b/include/game/quick_list.hpp index 54629e3..a1815a6 100644 --- a/include/game/quick_list.hpp +++ b/include/game/quick_list.hpp @@ -12,6 +12,8 @@ public: datas_.push_back(elem); } + bool Empty() const { return datas_.empty(); } + void RemoveAll(condition_func findFunc, destroy_func destroyFunc = nullptr) { std::size_t idx = 0; @@ -48,6 +50,11 @@ public: printf("\n"); } + + size_t Size() const { return datas_.size(); } + T& Get(size_t idx) { return datas_[idx]; } + + using const_iterator = typename std::vector::const_iterator; const_iterator begin() const { return datas_.begin(); } diff --git a/include/game/stages/space.hpp b/include/game/stages/space.hpp index fda1bef..60cf26d 100644 --- a/include/game/stages/space.hpp +++ b/include/game/stages/space.hpp @@ -16,15 +16,23 @@ public: void OnQuit() override; private: - Unique fightController_; + Unique controller_; + + Camera guiCamera_; + Camera gameCamera_; + Entity* lookAtEntity_; + + std::vector stars_; + int groupHps[4] = {0}; void renderBackground(); void renderGUI(); void renderMiniMap(); void renderWeapons(SpaceshipWeaponCmpt* weapon1, SpaceshipWeaponCmpt* weapon2); - - Camera guiCamera_; - Camera gameCamera_; - - std::vector stars_; + void initEnemies(); + void attachController(); + void generateEnemiesAt(int group, const Point& p, int num); + void initPlayer(); + void calcGroupHps(); + void drawGroupHp(); }; diff --git a/include/game/system.hpp b/include/game/system.hpp index 5e532d6..470f23c 100644 --- a/include/game/system.hpp +++ b/include/game/system.hpp @@ -53,7 +53,7 @@ public: void Render() override; private: - void renderEntity(Entity* entity, const RenderCmpt&, float rotation); + void renderEntity(Entity* entity, const RenderCmpt&, float rotation, const Color&); void renderCollideBox(Entity* entity); }; diff --git a/include/tinyengine/event.hpp b/include/tinyengine/event.hpp index 600cdc7..ac52a5b 100644 --- a/include/tinyengine/event.hpp +++ b/include/tinyengine/event.hpp @@ -11,6 +11,7 @@ bool IsRightPressing(); bool IsLeftPressed(); bool IsRightPressed(); Point GetMousePosition(); +Point GetMousePositionMapped(); void EventUpdate(); diff --git a/include/tinyengine/libmath.hpp b/include/tinyengine/libmath.hpp index 74f86ff..87d683a 100644 --- a/include/tinyengine/libmath.hpp +++ b/include/tinyengine/libmath.hpp @@ -195,8 +195,8 @@ inline Mat44 CreateSRT(const Point& pos, const Point& scale, float degree) { float sinTheta = std::sin(theta), cosTheta = std::cos(theta); return Mat44({ - scale.x * cosTheta, scale.y * sinTheta, 0, pos.x, - -scale.x * sinTheta, scale.y * cosTheta, 0, pos.y, + scale.x * cosTheta,-scale.y * sinTheta, 0, pos.x, + scale.x * sinTheta, scale.y * cosTheta, 0, pos.y, 0, 0, 1, 0, 0, 0, 0, 1, }); diff --git a/include/tinyengine/renderer.hpp b/include/tinyengine/renderer.hpp index 0e022a2..9ba1026 100644 --- a/include/tinyengine/renderer.hpp +++ b/include/tinyengine/renderer.hpp @@ -31,15 +31,17 @@ public: static void FillRect(const Rect& rect); static void DrawTile(const Tile& tile, const Point& pos, - const Size& size = {0, 0}, + const Size& = {0, 0}, float degree = 0, - FlipFlag flip = NoFlip); + FlipFlag = NoFlip, + const Color& = {1, 1, 1, 1}); static void DrawTexture(const Texture* texture, const Rect* srcrect, const Point& pos, - const Size& size = Size{0, 0}, + const Size& = Size{0, 0}, float degree = 0, - FlipFlag flip = NoFlip); + FlipFlag = NoFlip, + const Color& = {1, 1, 1, 1}); static void DrawTexture(const Texture* texture, const Rect* rect, const Mat44& transform, diff --git a/pack.sh b/pack.sh index 535554e..576f66a 100755 --- a/pack.sh +++ b/pack.sh @@ -8,3 +8,5 @@ mkdir output cp ./build/SpaceSector output cp -r ./assets output rm -rf ./output/assets/test +cp ./HowToPlay.md output/ +cp -r ./snapshot output diff --git a/snapshot/gaming.png b/snapshot/gaming.png new file mode 100644 index 0000000000000000000000000000000000000000..e265647e071cda529ad005599e864263817fe780 GIT binary patch literal 92189 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 l$!EG6XMPV-bkRq=ZaX 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 G?|%TcT6hxx literal 0 HcmV?d00001 diff --git a/snapshot/welcome.png b/snapshot/welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..f73e1db94488bc45bdb58c40c43ced3655dfb562 GIT binary patch literal 96196 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 literal 0 HcmV?d00001 diff --git a/src/game/action.cpp b/src/game/action.cpp index 935c0db..62f8dd0 100644 --- a/src/game/action.cpp +++ b/src/game/action.cpp @@ -5,8 +5,6 @@ void Shoot(SpaceshipWeaponCmpt& weapon, const Point& dir) { return; } - Point playerCenterPos = weapon.owner->Get()->position; - Entity* bullet; bullet = weapon.ShootBullet(dir); if (bullet) { @@ -26,8 +24,7 @@ void Shoot(SpaceshipWeaponCmpt& weapon, const Point& dir, Entity* target) { Entity* bullet; bullet = weapon.ShootMissile(dir, target); if (bullet) { - // FIXME the rotation have some bugs - bullet->Use()->rotation = Degrees(std::acos(-Normalize(dir).y)); + bullet->Use()->rotation = Sign(dir.x) * Degrees(std::acos(-Normalize(dir).y)); Bullets.Add(bullet); weapon.coolDown = weapon.shootDuration; Sounds["shoot"]->Play(); @@ -51,19 +48,19 @@ void MoveDown(MotionCmpt& motion) { } void SpeedUp(MotionCmpt& motion, FightShipCmpt& ship) { - motion.acceleration = Rotate(Point{0, FightShipAccelration}, - -ship.degree); + motion.acceleration = Rotate(Point{0, -FightShipAccelration}, + ship.degree); } void SpeedDown(MotionCmpt& motion, FightShipCmpt& ship) { - motion.acceleration = Rotate(Point{0, -FightShipAccelration}, - -ship.degree); + motion.acceleration = Rotate(Point{0, FightShipAccelration}, + ship.degree); } void TurnLeft(FightShipCmpt& ship) { - ship.degree += FightShipRotationDegree; + ship.degree -= FightShipRotationDegree; } void TurnRight(FightShipCmpt& ship) { - ship.degree -= FightShipRotationDegree; + ship.degree += FightShipRotationDegree; } diff --git a/src/game/ai.cpp b/src/game/ai.cpp index cff2761..fab779d 100644 --- a/src/game/ai.cpp +++ b/src/game/ai.cpp @@ -1,7 +1,27 @@ #include "game/ai.hpp" +Entity* findRandomEntity(Entity* self) { + int groupIdx = Random(0, 3); + if (groupIdx == self->Get()->groupIdx) { + groupIdx ++; + if (groupIdx >= 4) { + groupIdx = 0; + } + } + auto& group = Groups[groupIdx]; + if (group.Empty()) + return nullptr; + return group.Get(Random(1, group.Size()) - 1); +} + void FreightShipAI(Entity* self) { - auto pmove = PlayerSpaceship->Get(); + auto ai = self->Use(); + if (!ai->target || !ai->target->IsAlive()) { + ai->target = findRandomEntity(self); + } + if (!ai->target) return; + + auto pmove = ai->target->Get(); auto smove = self->Get(); auto dir = pmove->position - smove->position; if (Len2(dir) > 250000) { @@ -22,29 +42,35 @@ void FreightShipAI(Entity* self) { } void FightShipAI(Entity* self) { - auto pmove = PlayerSpaceship->Get(); + auto ai = self->Use(); + if (!ai->target || !ai->target->IsAlive()) { + ai->target = findRandomEntity(self); + } + if (!ai->target) return; + + auto pmove = ai->target->Get(); auto smove = self->Get(); auto dir = pmove->position - smove->position; auto motion = self->Use(); auto ship = self->Use(); - auto nspd = Normalize(motion->speed), - ndir = Normalize(dir); + auto ndir = Normalize(dir); SpeedUp(*motion, *ship); - auto cross = Cross(nspd, ndir); - if (cross > std::sin(Radians(80))) { - TurnLeft(*ship); - } else if (cross < std::sin(Radians(10))) { + auto shipDir = Rotate(Point{0, -1}, self->Get()->degree); + auto cross = Cross(shipDir, ndir); + if (cross > 0) { TurnRight(*ship); + } else { + TurnLeft(*ship); + } + if (abs(Cross(Normalize(motion->speed), Normalize(dir))) < std::sin(Radians(10))) { + if (ship->weapon2->bulletAmount > 0 && Random(1.0f, 100.0f) < 5) { + Shoot(*ship->weapon2, shipDir, ai->target); + } else { + Shoot(*ship->weapon1, shipDir); + } } - // if (Cross(Normalize(motion->speed), Normalize(dir)) < std::sin(Radians(10))) { - // if (ship->weapon2->bulletAmount > 0 && Random(1.0f, 100.0f) < 5) { - // Shoot(*ship->weapon2, dir, PlayerSpaceship); - // } else { - // Shoot(*ship->weapon1, dir); - // } - // } } diff --git a/src/game/component.cpp b/src/game/component.cpp index d6802e9..d652128 100644 --- a/src/game/component.cpp +++ b/src/game/component.cpp @@ -23,5 +23,6 @@ Entity* SpaceshipWeaponCmpt::ShootMissile(const Point& dir, Entity* target) { } bullet->Use()->speed = Normalize(dir) * shootSpeed; bullet->Use()->position = owner->Get()->position; + Sounds["missile"]->Play(); return bullet; } diff --git a/src/game/controllers/fightship_controller.cpp b/src/game/controllers/fightship_controller.cpp index fec850f..cb92dab 100644 --- a/src/game/controllers/fightship_controller.cpp +++ b/src/game/controllers/fightship_controller.cpp @@ -5,6 +5,10 @@ FightShipController::FightShipController(Entity* entity) : entity_(entity) {} void FightShipController::Update(float dt) { + if (!entity_ || !entity_->IsAlive()) { + return; + } + const float spd = 100; auto motionCmpt = entity_->Use(); auto ship = entity_->Use(); @@ -15,14 +19,14 @@ void FightShipController::Update(float dt) { TurnRight(*ship); } if (IsKeyPressing(GLFW_KEY_S)) { - SpeedUp(*motionCmpt, *ship); + SpeedDown(*motionCmpt, *ship); } if (IsKeyPressing(GLFW_KEY_W)) { - SpeedDown(*motionCmpt, *ship); + SpeedUp(*motionCmpt, *ship); } motionCmpt->speed = Rotate(Point{0, -1} * Len(motionCmpt->speed), - -ship->degree); + ship->degree); auto moveCmpt = entity_->Get(); @@ -46,9 +50,9 @@ void FightShipController::weaponShoot(SpaceshipWeaponCmpt* weapon, const MoveCmp if (!weapon) return; Point dir; if (weapon->type == SpaceshipWeaponCmpt::Orientation) { - dir = Rotate(Point{0, -1}, -entity_->Get()->degree); + dir = Rotate(Point{0, -1}, entity_->Get()->degree); } else { - dir = GetMousePosition() - entity_->Get()->position; + dir = GetMousePosition() - GameWindowSize / 2; } if (weapon->bulletType == BulletCmpt::Bullet) { @@ -57,7 +61,7 @@ void FightShipController::weaponShoot(SpaceshipWeaponCmpt* weapon, const MoveCmp Entity* target = nullptr; for (auto& entity : Entities) { if (entity != entity_ && - IsPointInRect(MapPlayerCoord2Global(GetMousePosition()), entity->Get()->rect)) { + IsPointInRect(MapPlayerCoord2Global(GetMousePositionMapped()), entity->Get()->rect)) { target = entity; break; } diff --git a/src/game/controllers/freightship_controller.cpp b/src/game/controllers/freightship_controller.cpp index 232d889..b3601ea 100644 --- a/src/game/controllers/freightship_controller.cpp +++ b/src/game/controllers/freightship_controller.cpp @@ -5,6 +5,10 @@ FreightShipController::FreightShipController(Entity* entity) : entity_(entity) {} void FreightShipController::Update(float dt) { + if (!entity_ || !entity_->IsAlive()) { + return; + } + const float spd = 100; auto motionCmpt = entity_->Use(); if (IsKeyPressing(GLFW_KEY_A)) { @@ -29,7 +33,7 @@ void FreightShipController::Update(float dt) { Rotate(Point{0, -1}, entity_->Get()->degree)); } else { Shoot(*weapon, - GetMousePosition() - entity_->Get()->position); + GetMousePosition() - GameWindowSize / 2); } } } diff --git a/src/game/entity.cpp b/src/game/entity.cpp index d525fcb..ff08ded 100644 --- a/src/game/entity.cpp +++ b/src/game/entity.cpp @@ -13,7 +13,7 @@ Entity* CreateFreightShip(int group) { LazerDamage, LazerShooterSpeed, LazerShooterMaxSpeed, - LazerShooterCooldown + 1); + LazerShooterCooldown + FreightShipLazerDelay); entity->Add(Size{EntityCollisionSize, EntityCollisionSize}); entity->Add(FreightShipLife); entity->Add(weapon); @@ -56,7 +56,7 @@ Entity* CreateBullet(int group, int damage, Entity* owner, float maxSpeed) { Entity* entity = ECSContext.CreateEntity(); entity->Add(Point{0, 0}); entity->Add(Point{0, 0}, maxSpeed); - entity->Add(GameTileSheet->GetTile(0, 1)); + entity->Add(GameTileSheet->GetTile(4, 0)); entity->Add(BulletCmpt::Bullet, damage, owner); entity->Add(Size{8, 8}); entity->Add(group); @@ -67,7 +67,7 @@ Entity* CreateMissile(int group, int damage, Entity* owner, float maxSpeed, Enti Entity* entity = ECSContext.CreateEntity(); entity->Add(Point{0, 0}); entity->Add(Point{0, 0}, maxSpeed); - entity->Add(GameTileSheet->GetTile(2, 1)); + entity->Add(GameTileSheet->GetTile(6, 0)); entity->Add(BulletCmpt::Missile, damage, owner, target); entity->Add(Size{10, 10}); entity->Add(group); diff --git a/src/game/global.cpp b/src/game/global.cpp index 255f6b8..21f98ab 100644 --- a/src/game/global.cpp +++ b/src/game/global.cpp @@ -15,11 +15,14 @@ GameInitInfo InitInfo; std::array, 4> Groups; void loadImages() { - GameTileSheet.reset(new TileSheet("assets/tilesheet.png", 8, 8)); + GameTileSheet.reset(new TileSheet("assets/tilesheet.png", 7, 1)); } void loadSounds() { Sounds["shoot"] = std::make_unique("assets/shoot.wav"); + Sounds["hurt"] = std::make_unique("assets/hurt.wav"); + Sounds["explosion"] = std::make_unique("assets/explose.wav"); + Sounds["missile"] = std::make_unique("assets/missile.wav"); } void LoadResources() { diff --git a/src/game/gui.cpp b/src/game/gui.cpp index 660c53b..3f8f569 100644 --- a/src/game/gui.cpp +++ b/src/game/gui.cpp @@ -4,7 +4,7 @@ bool Button(Texture* texture, const Point& pos, const Size& size, bool hflip) { Renderer::DrawTexture(texture, nullptr, pos, size, 0, hflip ? Renderer::FlipFlag::Horizontal : Renderer::FlipFlag::NoFlip); Rect rect = Rect{pos.x - size.w / 2, pos.y - size.h / 2, size.w, size.h}; - if (IsPointInRect(GetMousePosition(), rect)) { + if (IsPointInRect(GetMousePositionMapped(), rect)) { Renderer::SetDrawColor(Color{1, 1, 1, 0.2}); Renderer::FillRect(rect); return IsLeftPressed(); diff --git a/src/game/stages/space.cpp b/src/game/stages/space.cpp index becb0e8..4e3a759 100644 --- a/src/game/stages/space.cpp +++ b/src/game/stages/space.cpp @@ -6,42 +6,11 @@ void SpaceScence::OnInit() { Entities.Clear(); Bullets.Clear(); - PlayerSpaceship = CreateFightShip(PlayerGroup); - Entities.Add(PlayerSpaceship); - PlayerSpaceship->Use()->position = Point{400, 400}; - - Entity* enemy = CreateFreightShip(Enemy1Group); - enemy->Add(FreightShipAI); - enemy->Use()->position = Point{100, 100}; - Entities.Add(enemy); - - enemy = CreateFreightShip(Enemy1Group); - enemy->Add(FreightShipAI); - enemy->Use()->position = Point{200, 100}; - Entities.Add(enemy); - - enemy = CreateFreightShip(Enemy1Group); - enemy->Add(FreightShipAI); - enemy->Use()->position = Point{100, 200}; - Entities.Add(enemy); - - // Entity* enemy = CreateFightShip(Enemy1Group); - // enemy->Add(FightShipAI); - // enemy->Use()->position = Point{100, 100}; - // Entities.Add(enemy); - - // enemy = CreateFightShip(Enemy1Group); - // enemy->Add(FightShipAI); - // enemy->Use()->position = Point{200, 100}; - // Entities.Add(enemy); - - // enemy = CreateFightShip(Enemy1Group); - // enemy->Add(FightShipAI); - // enemy->Use()->position = Point{100, 200}; - // Entities.Add(enemy); - - fightController_.reset(new FightShipController(PlayerSpaceship)); + initEnemies(); + initPlayer(); + calcGroupHps(); + lookAtEntity_ = PlayerSpaceship; gameCamera_.SetAnchor(GameWindowSize / 2); SystemMgr.Clear(); @@ -62,10 +31,89 @@ void SpaceScence::OnInit() { } } +void SpaceScence::calcGroupHps() { + for (int i = 0; i < InitInfo.groupNum; i++) { + for (auto& entity : Groups[i]) { + if (entity->Has()) { + groupHps[i] += entity->Get()->hp; + } + } + } +} + +void SpaceScence::initPlayer() { + if (PlayerSpaceship && PlayerSpaceship->IsAlive()) { + ECSContext.DestroyEntity(PlayerSpaceship); + } + if (InitInfo.planeType == FightShip) { + PlayerSpaceship = CreateFightShip(PlayerGroup); + controller_.reset(new FightShipController(PlayerSpaceship)); + } else if (InitInfo.planeType == FreightShip) { + PlayerSpaceship = CreateFreightShip(PlayerGroup); + controller_.reset(new FreightShipController(PlayerSpaceship)); + } + Entities.Add(PlayerSpaceship); + Groups[PlayerGroup].Add(PlayerSpaceship); + PlayerSpaceship->Use()->position = Point{0, 0}; +} + +void SpaceScence::initEnemies() { + generateEnemiesAt(PlayerGroup, Point{0, 0}, InitInfo.planeNum - 1); + if (InitInfo.groupNum == 2) { + generateEnemiesAt(Enemy1Group, Point{0, -720 * 4}, InitInfo.planeNum); + } else if (InitInfo.groupNum == 3) { + generateEnemiesAt(Enemy1Group, Point{-720 * 4, -720 * 4}, InitInfo.planeNum); + generateEnemiesAt(Enemy2Group, Point{720 * 4, -720 * 4}, InitInfo.planeNum); + } else if (InitInfo.groupNum == 4) { + generateEnemiesAt(Enemy1Group, Point{0, -720 * 4}, InitInfo.planeNum); + generateEnemiesAt(Enemy2Group, Point{720 * 4, 0}, InitInfo.planeNum); + generateEnemiesAt(Enemy3Group, Point{720 * 4, -720 * 4}, InitInfo.planeNum); + } else { + Log("group num invalid"); + } +} + +void SpaceScence::generateEnemiesAt(int group, const Point& p, int num) { + for (int i = 0; i < num; i++) { + Entity* enemy = CreateFreightShip(group); + enemy->Add(FreightShipAI); + // Entity* enemy = CreateFightShip(group); + // enemy->Add(FightShipAI); + enemy->Use()->position += p + Point{Random(-400, 400), Random(-100, 100)}; + Entities.Add(enemy); + Groups[group].Add(enemy); + } +} + void SpaceScence::OnUpdate(float dt) { - fightController_->Update(dt); + controller_->Update(dt); SystemMgr.Update(dt); - gameCamera_.MoveTo(PlayerSpaceship->Get()->position); + + if (lookAtEntity_ && lookAtEntity_->IsAlive()) { + gameCamera_.MoveTo(lookAtEntity_->Get()->position); + } else { + if (!Groups[PlayerGroup].Empty()) { + lookAtEntity_ = *Groups[PlayerGroup].begin(); + } + } + + if (!PlayerSpaceship || !PlayerSpaceship->IsAlive()) { + if (IsKeyPressing(GLFW_KEY_SPACE)) { + PlayerSpaceship = lookAtEntity_; + if (PlayerSpaceship->Has()) { + PlayerSpaceship->Remove(); + } + attachController(); + } + } +} + +void SpaceScence::attachController() { + if (PlayerSpaceship->Has()) { + controller_.reset(new FreightShipController(PlayerSpaceship)); + } else { + controller_.reset(new FightShipController(PlayerSpaceship)); + } } void SpaceScence::OnRender() { @@ -100,19 +148,46 @@ void SpaceScence::renderBackground() { void SpaceScence::renderGUI() { Renderer::SetCamera(guiCamera_); - auto life = PlayerSpaceship->Get()->hp; + int life = 0; + if (PlayerSpaceship && PlayerSpaceship->IsAlive()) { + life = PlayerSpaceship->Get()->hp; + } float xOffset = 16 * life; for (int i = 0; i < life; i++) { - Renderer::DrawTile(GameTileSheet->GetTile(1, 1), + Renderer::DrawTile(GameTileSheet->GetTile(5, 0), Point{GameWindowSize.w - xOffset + i * 16, 8}); } renderMiniMap(); - if (PlayerSpaceship->Has()) { - renderWeapons(PlayerSpaceship->Get()->weapon, nullptr); - } else { - auto fightShip = PlayerSpaceship->Get(); - renderWeapons(fightShip->weapon1, fightShip->weapon2); + if (PlayerSpaceship && PlayerSpaceship->IsAlive()) { + if (PlayerSpaceship->Has()) { + renderWeapons(PlayerSpaceship->Get()->weapon, nullptr); + } else { + auto fightShip = PlayerSpaceship->Get(); + renderWeapons(fightShip->weapon1, fightShip->weapon2); + } + } + + drawGroupHp(); +} + +void SpaceScence::drawGroupHp() { + static Color colors[4] = {Color{1, 0, 0, 1}, + Color{0, 1, 0, 1}, + Color{0, 0, 1, 1}, + Color{1, 1, 0, 1}}; + + for (int i = 0; i < InitInfo.groupNum; i++) { + int hp = 0; + for (auto& entity : Groups[i]) { + if (entity->Has()) { + hp += entity->Get()->hp; + } + } + Renderer::SetDrawColor(colors[i]); + Renderer::FillRect(Rect{150, GameWindowSize.h - 20 * (i + 1), hp / float(groupHps[i]) * 500, 20}); + Renderer::SetDrawColor(Color{1, 1, 1, 1}); + Renderer::DrawRect(Rect{150, GameWindowSize.h - 20 * (i + 1), 500, 20}); } } @@ -125,6 +200,10 @@ void SpaceScence::renderMiniMap() { Renderer::SetDrawColor(Color{255, 255, 255, 255}); Renderer::DrawRect(mapRect); + if (!PlayerSpaceship || !PlayerSpaceship->IsAlive()) { + return; + } + for (auto& entity: Entities) { if (entity != PlayerSpaceship) { const auto& pos = entity->Get()->position; @@ -183,16 +262,6 @@ void SpaceScence::renderWeapons(SpaceshipWeaponCmpt* weapon1, SpaceshipWeaponCmp } offset.y += 20; } - - // font.Render("ENERGY", - // 20, - // Point{weaponInfoRect.x, weaponInfoRect.y} + offset, - // Color{0.9, 0.3, 0.83, 1}); - // std::string energyAmount = std::to_string(PlayerCore->Get()->amount); - // font.Render(energyAmount, - // 20, - // Point{weaponInfoRect.x + weaponInfoRect.w - 20 - 20 * energyAmount.size(), weaponInfoRect.y} + offset, - // Color{0.9, 0.5, 0.8, 1}); } void SpaceScence::OnQuit() { diff --git a/src/game/stages/welcome.cpp b/src/game/stages/welcome.cpp index 9374588..d589863 100644 --- a/src/game/stages/welcome.cpp +++ b/src/game/stages/welcome.cpp @@ -29,7 +29,7 @@ void WelcomeScence::OnRender() { Point{(GameWindowSize.w - title.size() * pt) / 2, 200}, Color{0.8, 0.8, 1, 1}); - title = "HTTPS://GITEE.COM/VISUALGMQ/SPACE-SECTOR.GIT"; + title = "HTTPS://GITEE.COM/VISUALGMQ/SPACE-WAR.GIT"; pt = 10; font.Render(title, pt, Point{(GameWindowSize.w - title.size() * pt) / 2, 710}, diff --git a/src/game/system.cpp b/src/game/system.cpp index 496f932..041e787 100644 --- a/src/game/system.cpp +++ b/src/game/system.cpp @@ -56,13 +56,13 @@ void MissileUpdateSystem::updateMissile(float dt, bullet.target = nullptr; } else { Point v = bullet.target->Get()->position - move.position; - float cross = Cross(motion.speed, v); + float cross = Cross(Rotate(Point{0, -1}, bullet.rotation), v); if (cross > 0) { - bullet.rotation -= MissileRotateDegree * dt; - } else { bullet.rotation += MissileRotateDegree * dt; + } else { + bullet.rotation -= MissileRotateDegree * dt; } - Point dir = Rotate(Point{0, -1}, -bullet.rotation); + Point dir = Rotate(Point{0, -1}, bullet.rotation); motion.speed = dir * Len(motion.speed); } } @@ -98,6 +98,7 @@ void CollideSystem::Update(float dt) { entity->Get()->rect)) { if (entity->Has()) { entity->Use()->hp -= bullet->Get()->damage; + Sounds["hurt"]->Play(); } bullet->Use()->alive = false; } @@ -111,20 +112,33 @@ void CleanupSystem::Update(float dt) { ECSContext.DestroyEntity(entity); }; + for (int i = 0; i < InitInfo.groupNum; i++) { + Groups[i].RemoveAll([](const EntityPtr& entity){ + if (entity->Has() && + entity->Get()->hp <= 0) { + return true; + } else { + return false; + } + }); + } + Bullets.RemoveAll([](const EntityPtr& entity){ return !entity->Get()->alive || !IsPointInRect(MapGlobal2PlayerCoord(entity->Get()->position), BulletRefreshArea); }, destroyFunc); - Entities.RemoveAll([](const EntityPtr& entity){ + Entities.RemoveAll([&](const EntityPtr& entity){ if (entity->Has() && entity->Get()->hp <= 0) { + Sounds["explosion"]->Play(); return true; } else { return false; } }, destroyFunc); + } void WeaponCooldownSystem::Update(float dt) { @@ -154,8 +168,12 @@ void RenderEntitySystem::Render() { if (entity->Has()) { rotation = entity->Get()->degree; } - renderEntity(entity, *entity->Get(), rotation); - renderCollideBox(entity); + Color color = {1, 1, 1, 1}; + if (entity->Has()) { + color = GroupSpecColor[entity->Get()->groupIdx]; + } + renderEntity(entity, *entity->Get(), rotation, color); + // renderCollideBox(entity); } } @@ -164,8 +182,8 @@ void RenderEntitySystem::Render() { if (bullet->Get()->type == BulletCmpt::Missile) { rotation = bullet->Get()->rotation; } - renderEntity(bullet, *bullet->Get(), rotation); - renderCollideBox(bullet); + renderEntity(bullet, *bullet->Get(), rotation, Color{1, 1, 1, 1}); + // renderCollideBox(bullet); } } @@ -176,7 +194,10 @@ void RenderEntitySystem::renderCollideBox(Entity* entity) { } } -void RenderEntitySystem::renderEntity(Entity* entity, const RenderCmpt& renderCmpt, float rotation) { +void RenderEntitySystem::renderEntity(Entity* entity, + const RenderCmpt& renderCmpt, + float rotation, + const Color& color) { if (entity->Has()) { auto& pos = entity->Get()->position; if (renderCmpt.type == RenderCmpt::TypeTexture) { @@ -184,12 +205,16 @@ void RenderEntitySystem::renderEntity(Entity* entity, const RenderCmpt& renderCm nullptr, pos, Size{EntityRenderSize, EntityRenderSize}, - rotation); + rotation, + Renderer::NoFlip, + color); } else { Renderer::DrawTile(renderCmpt.tile, pos, Size{EntityRenderSize, EntityRenderSize}, - rotation); + rotation, + Renderer::NoFlip, + color); } } } diff --git a/src/tinyengine/event.cpp b/src/tinyengine/event.cpp index c65650d..5a6bb9a 100644 --- a/src/tinyengine/event.cpp +++ b/src/tinyengine/event.cpp @@ -64,6 +64,12 @@ bool IsRightPressed() { } Point GetMousePosition() { + double x, y; + glfwGetCursorPos(engine.GetWindow(), &x, &y); + return Point{float(x), float(y)}; +} + +Point GetMousePositionMapped() { double x, y; glfwGetCursorPos(engine.GetWindow(), &x, &y); return Point{float(x) * WindowInitSize.w / engine.GetWindowSize().w, diff --git a/src/tinyengine/renderer.cpp b/src/tinyengine/renderer.cpp index 0e1b808..4c09227 100644 --- a/src/tinyengine/renderer.cpp +++ b/src/tinyengine/renderer.cpp @@ -133,11 +133,12 @@ void Renderer::DrawTile(const Tile& tile, const Point& pos, const Size& size, float degree, - Renderer::FlipFlag flip) { + Renderer::FlipFlag flip, + const Color& color) { if (size.w == 0 && size.h == 0) { - DrawTexture(tile.texture, &tile.rect, pos, tile.size, degree, flip); + DrawTexture(tile.texture, &tile.rect, pos, tile.size, degree, flip, color); } else { - DrawTexture(tile.texture, &tile.rect, pos, size, degree, flip); + DrawTexture(tile.texture, &tile.rect, pos, size, degree, flip, color); } } @@ -146,7 +147,8 @@ void Renderer::DrawTexture(const Texture* texture, const Point& pos, const Size& size, float degree, - FlipFlag flip) { + FlipFlag flip, + const Color& color) { if (texture) { auto scale = size; if (size.w == 0 && size.h == 0) { @@ -158,7 +160,7 @@ void Renderer::DrawTexture(const Texture* texture, if (flip & Horizontal) { scale.w *= -1; } - DrawTexture(texture, srcrect, CreateSRT(pos, scale, degree)); + DrawTexture(texture, srcrect, CreateSRT(pos, scale, degree), color); } }