68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
/********************\
 | 
						|
|  Copyright 2024,   |
 | 
						|
|       Ulysse Cura  |
 | 
						|
\********************/
 | 
						|
 | 
						|
//////////////////////////////////////////////////
 | 
						|
//                                              //
 | 
						|
//   Composant interactif, ici pour les levier. //
 | 
						|
//                                              //
 | 
						|
//////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef LEVER_HPP
 | 
						|
#define LEVER_HPP
 | 
						|
 | 
						|
#include "AnimationSystem.hpp"
 | 
						|
#include "InteractableComponent.hpp"
 | 
						|
#include "../Game.hpp"
 | 
						|
 | 
						|
class Lever : public InteractableComponent {
 | 
						|
  public:
 | 
						|
    Lever(int channel) : m_channel(channel)
 | 
						|
    {}
 | 
						|
 | 
						|
    void init() override
 | 
						|
    {
 | 
						|
        m_animation = &entity->getComponent<AnimationSystem>();
 | 
						|
        m_animation->loop = false;
 | 
						|
    }
 | 
						|
 | 
						|
    void update() override
 | 
						|
    {
 | 
						|
        if(!m_animation->playAnimation)
 | 
						|
        {
 | 
						|
            Game::entityManager.getChannelManager().setChannel(m_channel, m_leverOn);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    void interact() override
 | 
						|
    {
 | 
						|
        if(!m_animation->playAnimation)
 | 
						|
        {
 | 
						|
            if(m_leverOn)
 | 
						|
            {
 | 
						|
                m_animation->reverse = true;
 | 
						|
                m_animation->playAnimation = true;
 | 
						|
 | 
						|
                m_leverOn = false;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                m_animation->reverse = false;
 | 
						|
                m_animation->playAnimation = true;
 | 
						|
 | 
						|
                m_leverOn = true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
  private:
 | 
						|
    int m_channel;
 | 
						|
 | 
						|
    AnimationSystem *m_animation;
 | 
						|
 | 
						|
    bool m_leverOn {false};
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |