mirror of
https://forge.univ-lyon1.fr/tplifap4/dungeonanddeamon.git
synced 2024-02-27 13:31:50 +01:00
162 lines
2.8 KiB
C++
162 lines
2.8 KiB
C++
#include "MobsCorpACorpIA.h"
|
|
#include <ConfigFile.hpp>
|
|
#include <Input.hpp>
|
|
#include <ResourceLoader.hpp>
|
|
#include <Texture.hpp>
|
|
#include "MobsCorpACorp.h"
|
|
#include "GestionPlayer.h"
|
|
|
|
MobsCorpACorpIA::MobsCorpACorpIA()
|
|
{
|
|
sprite_MobsCorpACorp_ptr = Sprite::_new();
|
|
collision_MobsCorpACorp_ptr = CollisionShape2D::_new();
|
|
texture_MobsCorpACorp_ptr.instance();
|
|
texture_MobsCorpACorp_ptr->_new();
|
|
shape_MobsCorpACorp_ptr.instance();
|
|
shape_MobsCorpACorp_ptr->_new();
|
|
|
|
|
|
}
|
|
|
|
void MobsCorpACorpIA::_register_methods()
|
|
{
|
|
Godot::print("register Mobs...");
|
|
register_method("_physics_process", &MobsCorpACorpIA::_physics_process);
|
|
register_method("_process", &MobsCorpACorpIA::_process);
|
|
register_method("_init", &MobsCorpACorpIA::_init);
|
|
register_method("_ready", &MobsCorpACorpIA::_ready);
|
|
Godot::print("register Mobs OK!");
|
|
|
|
}
|
|
|
|
void MobsCorpACorpIA::_physics_process(float dt)
|
|
{
|
|
mouvement(dt);
|
|
m.velocity = move_and_slide(m.velocity);
|
|
}
|
|
|
|
void MobsCorpACorpIA::_process(float delta)
|
|
{
|
|
}
|
|
|
|
void MobsCorpACorpIA::_init()
|
|
{
|
|
Godot::print("init Mobs");
|
|
createMobsCorpACorp();
|
|
}
|
|
|
|
void MobsCorpACorpIA::createMobsCorpACorp()
|
|
{
|
|
add_child(sprite_MobsCorpACorp_ptr);
|
|
add_child(collision_MobsCorpACorp_ptr);
|
|
Godot::print("Creation mobs");
|
|
|
|
}
|
|
void MobsCorpACorpIA::_ready()
|
|
{
|
|
setupMobsCorpACorp();
|
|
|
|
}
|
|
|
|
void MobsCorpACorpIA::setupMobsCorpACorp()
|
|
{
|
|
|
|
|
|
//Setup du shape
|
|
Godot::print("SetUp de Shape Mobs");
|
|
shape_MobsCorpACorp_ptr.ptr()->_new();
|
|
|
|
//Chargement de la texture
|
|
Godot::print("SetUp de Texture Mobs");
|
|
texture_MobsCorpACorp_ptr = ResourceLoader::get_singleton()->load("res://Character/Fire Elemental Sprite Sheet/fireelemental00.png");
|
|
|
|
//setup du sprite
|
|
Godot::print("SetUp de Sprite Mobs");
|
|
sprite_MobsCorpACorp_ptr->set_texture(texture_MobsCorpACorp_ptr);
|
|
|
|
//setup du collision Shape
|
|
Godot::print("SetUp de CollisionShape Mobs");
|
|
collision_MobsCorpACorp_ptr->set_shape(shape_MobsCorpACorp_ptr);
|
|
}
|
|
|
|
|
|
void MobsCorpACorpIA::setPosition(int x, int y)
|
|
{
|
|
Transform2D t;
|
|
Vector2 pos;
|
|
Size2 s;
|
|
|
|
//setup de la size
|
|
s.x = 1;
|
|
s.y = 1;
|
|
pos.x = x;
|
|
pos.y = y;
|
|
t.set_origin(pos);
|
|
t.scale(s);
|
|
|
|
set_transform(t);
|
|
}
|
|
|
|
void MobsCorpACorpIA::mouvement(float dt)
|
|
{
|
|
|
|
Vector2 pos = get_position();
|
|
|
|
|
|
|
|
m.velocity = Vector2(0, 0);
|
|
|
|
|
|
|
|
|
|
if (on_ground)
|
|
{
|
|
m.velocity.y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
//m.velocity.y += gravity * dt;
|
|
}
|
|
|
|
if (pos.x < TargetPosition.x) {
|
|
droit();
|
|
}else if (pos.x > TargetPosition.x) {
|
|
gauche();
|
|
}
|
|
|
|
if (pos.y < TargetPosition.y) {
|
|
|
|
bas();
|
|
}
|
|
else if (pos.x > TargetPosition.x) {
|
|
saut();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void MobsCorpACorpIA::droit()
|
|
{
|
|
Godot::print("Deplacement mob a droite");
|
|
m.velocity.x = speed;
|
|
}
|
|
|
|
void MobsCorpACorpIA::gauche()
|
|
{
|
|
Godot::print("Deplacement mob a gauche");
|
|
m.velocity.x = -speed;
|
|
}
|
|
|
|
void MobsCorpACorpIA::bas()
|
|
{
|
|
m.velocity.y = -power_jump;
|
|
}
|
|
|
|
void MobsCorpACorpIA::saut()
|
|
{
|
|
|
|
m.velocity.y = power_jump;
|
|
|
|
}
|
|
|