Files
bloubloulespoissons/Entities/player.h
Félix MARQUET 1343fe01e7 fix: corrige la visibilité des autres joueurs en multijoueur
- Ajout de la méthode `getPlayerId` const dans `player.cpp` et `player.h`.
- Ajout de la fonction `receivePlayerListFromServer` et `addPlayerToGame` dans `networking_client.cpp` et `networking_client.h`.
- Correction de la fonction `sendPlayerListToNewClient` et `getAllPlayers` dans `networking.cpp` et `networking.h`.
- Ajout de l'affichage des joueurs proches en mode multijoueur dans `utility.cpp` et `utility.h`.
2024-12-18 15:31:51 +01:00

92 lines
2.7 KiB
C++

#ifndef PLAYER_H
#define PLAYER_H
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <iostream>
#include <tuple>
#include <vector>
#include <syncstream>
#include <tuple>
#include "../Network/networking_client.h"
#include "../Game/camera.h"
#include "fish.h"
#include <syncstream>
#include <tuple>
#include "../Network/networking_client.h"
enum playerData {
PLAYER_SPRITE_1 = 0,
PLAYER_SPRITE_2 = 1,
PLAYER_SPRITE_3 = 2,
PLAYER_SIZE_X = 124,
PLAYER_SIZE_Y = 124
};
#define playerIMG "../img/player/playerV2-full.png"
class Player {
private:
int x, y;
int playerBaseX, playerBaseY;
int playerSpeed;
int currentSprite = PLAYER_SPRITE_1;
int ticks = 0;
int playerId;
float energy = 100.0f;
SDL_RendererFlip currentFlip = SDL_FLIP_NONE;
SDL_Texture* playerTexture = nullptr;
SDL_Rect playerPosForRender = {0, 0, PLAYER_SIZE_X, PLAYER_SIZE_Y};
SDL_Rect playerRect[3] = {
{69, 73, 112, 117},
{326, 73, 112, 117},
{528, 73, 112, 117}
};
Uint32 lastMoveTime;
bool onlineMovement();
int unifiedX = 0;
int unifiedY = 0;
int HITBOX = 50;
public:
Player(int x, int y, int playerSpeed, SDL_Renderer* renderer, int playerId) : x(x), y(y), playerBaseX(x), playerBaseY(y), playerSpeed(playerSpeed), playerId(playerId) {
playerPosForRender.x = x;
playerPosForRender.y = y;
unifiedX = x + windowWidth / 2;
unifiedY = y + windowHeight / 2;
SDL_Surface* playerSurface = IMG_Load(playerIMG);
if (playerSurface == nullptr) {
std::cerr << "Erreur de chargement de l'image du joueur: " << IMG_GetError() << std::endl;
} else {
playerTexture = SDL_CreateTextureFromSurface(renderer, playerSurface);
SDL_FreeSurface(playerSurface);
}
};
void updatePlayerPos(int x, int y);
void updatePlayerSpeed(int playerSpeed);
std::tuple<int, int> getPlayerPos() const;
int getPlayerSpeed();
void draw(SDL_Renderer* renderer);
void handlePlayerMovement(int ENV_WIDTH, int ENV_HEIGHT, int windowWidth, int windowHeight);
void drawEnergyBar(SDL_Renderer* renderer);
bool checkCollision(SDL_Rect fishRect);
int getPlayerId() const;
void setPlayerPos(int x, int y);
void handleClientMessages();
void updatePosition(int x, int y);
int getUnifiedX();
int getUnifiedY();
int getSpeed();
SDL_Texture* getTexture() {
return playerTexture;
}
int getHITBOX() const {return HITBOX;}
};
#endif