RTYPE TECHNICAL DOCUMENTATION
  • Introduction
  • Classes
    • utils::InputMap
    • utils::Window
    • utils::constant::ButtonValue
    • network::Client
    • network::LockedQueue
    • network::Server
    • ecs::EnemyFactory
    • ecs::Engine
    • ecs::Entity
    • ecs::Event
    • ecs::Registry
    • ecs::SparseArray
    • ecs::World
    • ecs::WorldManager
    • ecs::component::Activable
    • ecs::component::Animated
    • ecs::component::Animated::AnimFrame
    • ecs::component::AttackAI
    • ecs::component::AttackAI::Action
    • ecs::component::AttackAI::AI
    • ecs::component::AttackAI::AI::Pattern
    • ecs::component::Controllable
    • ecs::component::Direction
    • ecs::component::Drawable
    • ecs::component::EntityType
    • ecs::component::Faction
    • ecs::component::FollowEntity
    • ecs::component::Health
    • ecs::component::Hitbox
    • ecs::component::MovementAI
    • ecs::component::MovementAI::AI
    • ecs::component::NetworkId
    • ecs::component::Parallax
    • ecs::component::Position
    • ecs::component::Projectile
    • ecs::component::Score
    • ecs::component::Shootable
    • ecs::component::Size
    • ecs::component::Text
    • ecs::component::textColor
    • ecs::component::Velocity
    • ecs::component::Weapon
    • audio::AudioManager
    • asset::AssetLoader
    • anim::Animation
  • Namespaces
    • utils
    • utils::constant
    • network
    • ecs
    • ecs::component
    • ecs::systems
    • audio
    • asset
    • anim
  • Modules
    • Input
  • Files
    • src
    • src/client
    • Animation.cpp
    • Animation.hpp
    • AssetLoader.cpp
    • AssetLoader.hpp
    • AudioManager.cpp
    • AudioManager.hpp
    • entrypoint.cpp
    • GetWorld.cpp
    • GetWorld.hpp
    • NetworkClient.cpp
    • NetworkClient.hpp
    • src/ecs
    • src/ecs/components
    • src/ecs/components/client
    • Activable.hpp
    • Animated.hpp
    • Controllable.hpp
    • Drawable.hpp
    • Hitbox.hpp
    • Parallax.hpp
    • Shootable.hpp
    • Text.hpp
    • src/ecs/components/server
    • AttackAI.cpp
    • AttackAI.hpp
    • FollowEntity.hpp
    • Projectile.hpp
    • Direction.hpp
    • EntityType.hpp
    • Faction.hpp
    • Health.hpp
    • MovementAI.cpp
    • MovementAI.hpp
    • NetworkId.hpp
    • Position.hpp
    • Score.hpp
    • Size.hpp
    • Velocity.hpp
    • Weapon.hpp
    • src/ecs/systems
    • src/ecs/systems/client
    • Animate.hpp
    • Draw.hpp
    • ExecuteOnce.hpp
    • HandleIncomingMessages.hpp
    • HandleParallaxBounds.hpp
    • HandleSFMLEvents.hpp
    • HandleSFMLKeys.hpp
    • HealthBar.hpp
    • MenuSelect.hpp
    • ScoreUpdate.hpp
    • SendDirection.hpp
    • src/ecs/systems/server
    • DeathUpdate.hpp
    • FollowEntitySystem.hpp
    • HandleIncomingMessage.hpp
    • PlayerHealthUpdate.hpp
    • PositionUpdate.hpp
    • ProjectileCollision.hpp
    • RunAttackAI.hpp
    • Waves.hpp
    • ManageClientEvents.hpp
    • Movement.hpp
    • PositionLogger.hpp
    • RunMovementAI.hpp
    • EnemyFactory.cpp
    • EnemyFactory.hpp
    • Engine.hpp
    • Entity.hpp
    • Event.hpp
    • LockedQueue.hpp
    • Registry.hpp
    • SparseArray.hpp
    • World.hpp
    • WorldManager.cpp
    • WorldManager.hpp
    • src/server
    • entrypoint.cpp
    • Server.cpp
    • Server.hpp
    • src/utils
    • Constant.hpp
    • InputMap.cpp
    • InputMap.hpp
    • Window.cpp
    • README.md
  • Pages
    • deprecated
  • GitHub
Powered by GitBook
On this page
  • Namespaces
  • Source code
  1. Files

Waves.hpp

Namespaces

Name

Source code

/*
** EPITECH PROJECT, 2022
** RTYPE
** File description:
** Waves
*/

#pragma once

#include <functional>
#include "Constant.hpp"
#include "EnemyFactory.hpp"
#include "World.hpp"
#include "WorldManager.hpp"

namespace ecs::systems
{
    std::function<void(World &)> waves = [](World &world) {
        static std::size_t lastWave = 0;
        static int waveCounter = 0;
        auto const &factions = ecs::WorldManager::getWorld().registry.getComponents<ecs::component::Faction>();
        bool enemiesAlive = false;

        for (std::size_t i = 0; i < factions.size(); i++) {
            auto const &fac = factions[i];

            if (fac) {
                if (fac.value().faction != ecs::component::Faction::Factions::Chefs) {
                    enemiesAlive = true;
                }
            }
        }
        if (!enemiesAlive || utils::constant::chrono::now().time_since_epoch().count() - 100000000000 > lastWave) {
            waveCounter++;
            std::cout << "next wave (" << waveCounter << ")" << std::endl;
            if (waveCounter % 10 == 0) {
                ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                    ecs::EnemyFactory::EnemyType::NoodleMonster, utils::constant::mapWidth - 200, 400,
                    ecs::component::Faction::Amalgam, ecs::component::MovementAI::AIType::LongUpDown);
            } else {
                if (waveCounter % 1 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::QuickUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter % 2 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter % 3 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::QuickUpDown);
                }
                if (waveCounter % 4 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::AntiClockwiseSmall);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::ClockwiseBig);
                }
                if (waveCounter % 5 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter >= 6) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::Idle);
                }
                if (waveCounter % 7 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::LongUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter % 8 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter % 9 == 0) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter >= 11) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Uranus,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::QuickUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter >= 12) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter >= 14) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::AntiClockwiseSmall);
                }
                if (waveCounter >= 15) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter >= 16) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::Idle);
                }
                if (waveCounter >= 17) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::LongUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter >= 18) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter >= 19) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter >= 21) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Janitor,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::QuickUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter >= 22) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter >= 24) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::AntiClockwiseSmall);
                }
                if (waveCounter >= 25) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Frigate,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::LongLeftRight);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Fighter,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::Idle);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Scout,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter >= 26) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::Idle);
                }
                if (waveCounter >= 27) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::LongUpDown);
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(), ecs::EnemyFactory::EnemyType::Torpedo,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::LongUpDown);
                }
                if (waveCounter >= 28) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::ClockwiseSmall);
                }
                if (waveCounter >= 29) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Battlecruiser,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::AntiClockwiseBig);
                }
                if (waveCounter >= 31) {
                    ecs::EnemyFactory::spawnEnemy(ecs::WorldManager::getWorld(),
                        ecs::EnemyFactory::EnemyType::Dreadnought,
                        200 + std::rand() % (utils::constant::mapWidth - 600),
                        std::rand() % (utils::constant::mapHeight - 200), ecs::component::Faction::Alien,
                        ecs::component::MovementAI::AIType::Idle);
                }
            }
            lastWave = utils::constant::chrono::now().time_since_epoch().count();
        }
    };
}

Updated on 2022-11-13 at 17:21:37 +0100

PreviousRunAttackAI.hppNextManageClientEvents.hpp

Last updated 2 years ago

ecs
ecs::systems