Skip to content
Snippets Groups Projects
Select Git revision
  • 1df19198a28a4f08ea4adcf1301a735d4149f1a3
  • master default protected
2 results

Warrior.java

Blame
  • Forked from NAVES Guyslain / ProgAvExercices
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Enemy.cpp 1.66 KiB
    #include "Enemy.hpp"
    
    #include <kernel/front/Kernel.hpp>
    
    namespace megu::game {
        Enemy::Enemy(float x, float y, float w, float h, std::filesystem::path & path) 
        : kernel::PropsDynamic(this->_sprite, this->_movable), GameProps(this), _sprite(path), _movable(x, y, w, h) {
            this->_sprite.setPosition({x, y});
        }
    
        void Enemy::move(float x, float y) {
            this->_movable.move(x, y);
            this->_movable.move(x, y);
        }
    
        void Enemy::setup(kernel::Kernel & kernel, Level & level) {
            this->_sprite.setFrame({0.f, 0.f, 51.f, 98.f});
            this->_sprite.setSize({51.f, 98.f});
    
            this->_movable.setCollideLambda([this, &level](kernel::Kernel &, kernel::PhysicEngine &, Identifiable & id, kernel::Physical<kernel::PhysicEngine> & comp, double) {
                auto event = level.get(id)->on();
                if(event.has_value()) {
                    this->on(event.value());
                }
            });
        }
    
        void Enemy::on(const Behavior & event) {
            if(event & Behavior::Type::SOLID) {
                this->onSolide(event);
            }
    
            if(event & Behavior::Type::DAMAGE) {
                this->onDamage(event);
            }
        }
    
        std::optional<Behavior> Enemy::on() const {
            Behavior b(*this, Behavior::DAMAGE);
            b.set(0, 10);
    
            return b;
        }
    
        void Enemy::destroy(kernel::Kernel & kernel, Level & level) {
            
        }
    
        void Enemy::apply(kernel::Kernel & kernel) {
            kernel.add(this);
        }
    
        void Enemy::onDamage(const Behavior &) {
            std::cout << "Enemy Got Damage !" << std::endl;
        }
    
        void Enemy::onSolide(const Behavior &) {
            std::cout << "Enemy Got Solide !" << std::endl;
        }
    }