#include "GestionPlayer.h" #include #include #include #include #include GestionPlayer::GestionPlayer() { sprite_player_ptr = AnimatedSprite::_new(); texture_player_ptr.instance(); texture_player_ptr->_new(); } void GestionPlayer::_register_methods() { Godot::print("register Player..."); register_method("_process", &GestionPlayer::_process); register_method("_init", &GestionPlayer::_init); register_method("_ready", &GestionPlayer::_ready); Godot::print("register Player OK!"); } void GestionPlayer::_process(float dt) // dt = deltaTime { traitementInput(dt); p.velocity = move_and_slide(p.velocity); animation(); } void GestionPlayer::_init() { createPlayer(); } void GestionPlayer::_ready() { setupPlayer(); } void GestionPlayer::createPlayer() { add_child(sprite_player_ptr); } void GestionPlayer::setupPlayer() { //Chargement de la texture //Godot::print("SetUp de Texture"); texture_player_ptr = ResourceLoader::get_singleton()->load("res://Character/Hero Knight/HeroKnight/Layer 1_sprite_01.png"); //setup du sprite //Godot::print("SetUp de Sprite"); Ref spriteFrames = ResourceLoader::get_singleton()->load("res://Character/Hero Knight/HeroKnight/HeroKnight.tres"); sprite_player_ptr->set_sprite_frames(spriteFrames); PoolStringArray AnimNames = spriteFrames->get_animation_names(); PoolStringArray::Read r = AnimNames.read(); Godot::print("Animations Names"); for (int i = 0; i < AnimNames.size(); ++i) { Godot::print(r[i]); } } void GestionPlayer::traitementInput(float dt) { // manage Inputs Input* i = Input::get_singleton(); // move in X directions p.velocity.x = 0.0f; // rest x, keyboard action will change this if (i->is_action_pressed("ui_left")) gauche(); if (i->is_action_pressed("ui_right")) droit(); // update Velocity if (on_ground) { p.velocity.y = 0.0f; } else { p.velocity.y += gravity * dt; } // move in Y directions if (i->is_action_pressed("ui_select")) saut(); } void GestionPlayer::animation() { if (p.velocity.x > 0.0f) { sprite_player_ptr->play("Walk"); sprite_player_ptr->set_flip_h(false); } else if (p.velocity.x < 0.0f) { sprite_player_ptr->play("Walk"); sprite_player_ptr->set_flip_h(true); } else { sprite_player_ptr->play("Idle"); } } void GestionPlayer::setPosition(int x, int y) { Transform2D t; Vector2 pos; Size2 s; //setup de la size s.x = 1.0f; s.y = 1.0f; pos.x = x; pos.y = y; t.set_origin(pos); t.scale(s); set_transform(t); //init Velocity p.velocity = Vector2(0.0f, 0.0f); } void GestionPlayer::droit() { Godot::print("Deplacement a droite"); p.velocity.x = speed; } void GestionPlayer::gauche() { Godot::print("Deplacement a gauche"); p.velocity.x = -speed; } void GestionPlayer::bas() { } void GestionPlayer::saut() { if (on_ground) { p.velocity.y = power_jump; } } void GestionPlayer::idle() { p.velocity.x = 0.0; } void GestionPlayer::attack() { }