Files
mcpe/source/world/entity/Player.hpp
f f83ead9f8d WIP Android Port (#79)
* WIP Android Port

Android port. Still needs touch controls and mouse turning (if that's even possible on android) and file saving and SoundSystemSL
You control the camera and movement with your controller for now. You can navigate the gui using touch.
Options.cpp,LocalPlayer.cpp,Minecraft.cpp is configured to use controller.
Blocked out some code in ControllerTurnInput.cpp,Controller.cpp that didn't make sense.

* Fix glClear

glClear is supossed to use GL_DEPTH_BUFFER_BIT (thx TheBrokenRail)

* * Fix build.

* * Ignore assets.

* * More stuff

* * Fix more build errors.

* * It finally built

What I needed to do is rebuild the debug keystore because apparently android studio created it with sha1 digest alg which isn't supported by ant

* * Clean up filters.

* * Add cramped mode to the pause screen.

* * Fix a bug with the hotbar

* * In NinecraftApp::handleBack, pause the game if there is no screen.

* * AppPlatform_android: Add placeholder SoundSystem instance till we get SoundSystemSL working

* * Add properly working touch code.

* * Oh, remove some testing things

* * Fix state resetting when going in background and back in foreground
* Fix bug where the sky isn't being regenerated on graphics reset
* Fix bug where the m_currBoundTex isn't reset in Textures::clear potentially leaving a texture with that ID unassigned and corrupted
* Fix bug in CThread where the thread is detached and then also joined.
* Don't log anything if the program isn't in debug mode.

* * Add virtual keyboard support.

The screen instance slides so that the focused text box is kept visible.

* Rename from com.minecraftcpp to com.reminecraftpe

---------

Co-authored-by: iProgramInCpp <iprogramincpp@gmail.com>
2023-11-03 12:54:39 +02:00

92 lines
2.4 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#pragma once
#include "thirdparty/raknet/RakNetTypes.h"
#include "world/item/Inventory.hpp"
#include "world/entity/Mob.hpp"
#include "world/entity/ItemEntity.hpp"
class Inventory; // in case we're included from Inventory.hpp
class Player : public Mob
{
public:
Player(Level*);
virtual ~Player();
virtual void reset() override;
virtual void remove() override;
virtual void tick() override;
virtual bool isInWall() override;
virtual float getHeadHeight() override;
virtual bool isShootable() override;
virtual bool isPlayer() override;
virtual bool isCreativeModeAllowed() override;
virtual bool hurt(Entity*, int) override;
virtual void awardKillScore(Entity* pKilled, int score) override;
virtual void resetPos() override;
virtual void die(Entity* pCulprit) override;
virtual void aiStep() override;
virtual bool isImmobile() override;
virtual void updateAi() override;
virtual void defineSynchedData() override;
virtual void animateRespawn();
int addResource(int);
void animateRespawn(Player*, Level*);
void attack(Entity* pEnt);
bool canDestroy(Tile*);
void closeContainer();
void displayClientMessage(const std::string& msg);
void drop(ItemInstance*);
void drop(ItemInstance*, bool);
void drop();
float getDestroySpeed();
int getInventorySlot(int x);
Pos getRespawnPosition();
int getScore();
void prepareCustomTextures();
void reallyDrop(ItemEntity* pEnt);
void respawn();
void rideTick();
void setDefaultHeadHeight();
void setRespawnPos(Pos*);
void startCrafting(int, int, int);
void swing();
void take(Entity* pEnt, int x);
void touch(Entity* pEnt);
// QUIRK: Yes, I did mean it like that, as did Mojang.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Woverloaded-virtual"
void interact(Entity* pEnt);
#pragma GCC diagnostic pop
public:
//TODO
Inventory* m_pInventory;
uint8_t field_B94;
int m_score;
float field_B9C;
float field_BA0;
bool field_BA4;
int field_BA8;
std::string m_name;
int field_BC4;
RakNet::RakNetGUID m_guid;
//TODO
Pos m_respawnPos;
//TODO
bool m_bHaveRespawnPos;
//TODO
};