mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-18 03:55:19 -04:00
More player refactoring
This commit is contained in:
parent
fcc903016b
commit
ca195d161f
@ -261,13 +261,13 @@ static void OnAxisUpdate(void* obj, int port, int axis, float x, float y) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void OnHacksChanged(void* obj) {
|
static void OnHacksChanged(void* obj) {
|
||||||
struct HacksComp* h = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* h = &Entities.CurPlayer->Hacks;
|
||||||
/* Leave third person if not allowed anymore */
|
/* Leave third person if not allowed anymore */
|
||||||
if (!h->CanUseThirdPerson || !h->Enabled) Camera_CycleActive();
|
if (!h->CanUseThirdPerson || !h->Enabled) Camera_CycleActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Camera_CycleActive(void) {
|
void Camera_CycleActive(void) {
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = &LocalPlayer_Instances[0];
|
||||||
if (Game_ClassicMode) return;
|
if (Game_ClassicMode) return;
|
||||||
Camera.Active = Camera.Active->next;
|
Camera.Active = Camera.Active->next;
|
||||||
|
|
||||||
|
36
src/Entity.c
36
src/Entity.c
@ -367,7 +367,7 @@ static void Entity_CheckSkin(struct Entity* e) {
|
|||||||
|
|
||||||
if (!e->SkinFetchState) {
|
if (!e->SkinFetchState) {
|
||||||
first = Entity_FirstOtherWithSameSkinAndFetchedSkin(e);
|
first = Entity_FirstOtherWithSameSkinAndFetchedSkin(e);
|
||||||
flags = e == &LocalPlayer_Instance.Base ? HTTP_FLAG_NOCACHE : 0;
|
flags = e == &LocalPlayer_Instances[0].Base ? HTTP_FLAG_NOCACHE : 0;
|
||||||
|
|
||||||
if (!first) {
|
if (!first) {
|
||||||
e->_skinReqID = Http_AsyncGetSkin(&skin, flags);
|
e->_skinReqID = Http_AsyncGetSkin(&skin, flags);
|
||||||
@ -497,24 +497,24 @@ void Entities_Remove(EntityID id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityID Entities_GetClosest(struct Entity* src) {
|
int Entities_GetClosest(struct Entity* src) {
|
||||||
Vec3 eyePos = Entity_GetEyePosition(src);
|
Vec3 eyePos = Entity_GetEyePosition(src);
|
||||||
Vec3 dir = Vec3_GetDirVector(src->Yaw * MATH_DEG2RAD, src->Pitch * MATH_DEG2RAD);
|
Vec3 dir = Vec3_GetDirVector(src->Yaw * MATH_DEG2RAD, src->Pitch * MATH_DEG2RAD);
|
||||||
float closestDist = -200; /* NOTE: was previously positive infinity */
|
float closestDist = -200; /* NOTE: was previously positive infinity */
|
||||||
EntityID targetID = ENTITIES_SELF_ID;
|
int targetID = -1;
|
||||||
|
|
||||||
float t0, t1;
|
float t0, t1;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < ENTITIES_SELF_ID; i++) /* because we don't want to pick against local player */
|
for (i = 0; i < ENTITIES_MAX_COUNT; i++) /* because we don't want to pick against local player */
|
||||||
{
|
{
|
||||||
struct Entity* entity = Entities.List[i];
|
struct Entity* e = Entities.List[i];
|
||||||
if (!entity) continue;
|
if (!e || e == &Entities.CurPlayer->Base) continue;
|
||||||
if (!Intersection_RayIntersectsRotatedBox(eyePos, dir, entity, &t0, &t1)) continue;
|
if (!Intersection_RayIntersectsRotatedBox(eyePos, dir, e, &t0, &t1)) continue;
|
||||||
|
|
||||||
if (targetID == ENTITIES_SELF_ID || t0 < closestDist) {
|
if (targetID == -1 || t0 < closestDist) {
|
||||||
closestDist = t0;
|
closestDist = t0;
|
||||||
targetID = (EntityID)i;
|
targetID = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return targetID;
|
return targetID;
|
||||||
@ -613,7 +613,7 @@ struct IGameComponent TabList_Component = {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*------------------------------------------------------LocalPlayer--------------------------------------------------------*
|
*------------------------------------------------------LocalPlayer--------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
struct LocalPlayer LocalPlayer_Instance;
|
struct LocalPlayer LocalPlayer_Instances[MAX_LOCAL_PLAYERS];
|
||||||
static cc_bool hackPermMsgs;
|
static cc_bool hackPermMsgs;
|
||||||
static struct LocalPlayerInput* sources_head;
|
static struct LocalPlayerInput* sources_head;
|
||||||
static struct LocalPlayerInput* sources_tail;
|
static struct LocalPlayerInput* sources_tail;
|
||||||
@ -664,7 +664,7 @@ static void LocalPlayer_HandleInput(struct LocalPlayer* p, float* xMoving, float
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void LocalPlayer_InputSet(int key, cc_bool pressed) {
|
static void LocalPlayer_InputSet(int key, cc_bool pressed) {
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &LocalPlayer_Instances[0].Hacks;
|
||||||
|
|
||||||
if (pressed && !hacks->Enabled) return;
|
if (pressed && !hacks->Enabled) return;
|
||||||
if (KeyBind_Claims(KEYBIND_SPEED, key)) hacks->Speeding = pressed;
|
if (KeyBind_Claims(KEYBIND_SPEED, key)) hacks->Speeding = pressed;
|
||||||
@ -682,7 +682,7 @@ static void LocalPlayer_InputUp(void* obj, int key) {
|
|||||||
|
|
||||||
static void LocalPlayer_SetLocation(struct Entity* e, struct LocationUpdate* update) {
|
static void LocalPlayer_SetLocation(struct Entity* e, struct LocationUpdate* update) {
|
||||||
struct LocalPlayer* p = (struct LocalPlayer*)e;
|
struct LocalPlayer* p = (struct LocalPlayer*)e;
|
||||||
LocalInterpComp_SetLocation(&p->Interp, update);
|
LocalInterpComp_SetLocation(&p->Interp, update, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LocalPlayer_Tick(struct Entity* e, double delta) {
|
static void LocalPlayer_Tick(struct Entity* e, double delta) {
|
||||||
@ -736,7 +736,7 @@ static cc_bool LocalPlayer_ShouldRenderName(struct Entity* e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void LocalPlayer_CheckJumpVelocity(void* obj) {
|
static void LocalPlayer_CheckJumpVelocity(void* obj) {
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = &LocalPlayer_Instances[0];
|
||||||
if (!HacksComp_CanJumpHigher(&p->Hacks)) {
|
if (!HacksComp_CanJumpHigher(&p->Hacks)) {
|
||||||
p->Physics.JumpVel = p->Physics.ServerJumpVel;
|
p->Physics.JumpVel = p->Physics.ServerJumpVel;
|
||||||
}
|
}
|
||||||
@ -787,14 +787,14 @@ void LocalPlayer_ResetJumpVelocity(struct LocalPlayer* p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void LocalPlayer_Reset(void) {
|
static void LocalPlayer_Reset(void) {
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = &LocalPlayer_Instances[0];
|
||||||
p->ReachDistance = 5.0f;
|
p->ReachDistance = 5.0f;
|
||||||
Vec3_Set(p->Base.Velocity, 0,0,0);
|
Vec3_Set(p->Base.Velocity, 0,0,0);
|
||||||
LocalPlayer_ResetJumpVelocity(p);
|
LocalPlayer_ResetJumpVelocity(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LocalPlayer_OnNewMap(void) {
|
static void LocalPlayer_OnNewMap(void) {
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = &LocalPlayer_Instances[0];
|
||||||
Vec3_Set(p->Base.Velocity, 0,0,0);
|
Vec3_Set(p->Base.Velocity, 0,0,0);
|
||||||
Vec3_Set(p->OldVelocity, 0,0,0);
|
Vec3_Set(p->OldVelocity, 0,0,0);
|
||||||
|
|
||||||
@ -1020,9 +1020,9 @@ static void Entities_Init(void) {
|
|||||||
ShadowMode_Names, Array_Elems(ShadowMode_Names));
|
ShadowMode_Names, Array_Elems(ShadowMode_Names));
|
||||||
if (Game_ClassicMode) Entities.ShadowsMode = SHADOW_MODE_NONE;
|
if (Game_ClassicMode) Entities.ShadowsMode = SHADOW_MODE_NONE;
|
||||||
|
|
||||||
Entities.List[ENTITIES_SELF_ID] = &LocalPlayer_Instance.Base;
|
Entities.List[ENTITIES_SELF_ID] = &LocalPlayer_Instances[0].Base;
|
||||||
Entities.CurPlayer = &LocalPlayer_Instance;
|
Entities.CurPlayer = &LocalPlayer_Instances[0];
|
||||||
LocalPlayer_Init(&LocalPlayer_Instance);
|
LocalPlayer_Init(&LocalPlayer_Instances[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Entities_Free(void) {
|
static void Entities_Free(void) {
|
||||||
|
@ -16,9 +16,10 @@ struct LocalPlayer;
|
|||||||
extern struct IGameComponent TabList_Component;
|
extern struct IGameComponent TabList_Component;
|
||||||
extern struct IGameComponent Entities_Component;
|
extern struct IGameComponent Entities_Component;
|
||||||
|
|
||||||
|
#define MAX_LOCAL_PLAYERS 1
|
||||||
/* Offset used to avoid floating point roundoff errors. */
|
/* Offset used to avoid floating point roundoff errors. */
|
||||||
#define ENTITY_ADJUSTMENT 0.001f
|
#define ENTITY_ADJUSTMENT 0.001f
|
||||||
#define ENTITIES_MAX_COUNT 256
|
#define ENTITIES_MAX_COUNT (255 + MAX_LOCAL_PLAYERS)
|
||||||
#define ENTITIES_SELF_ID 255
|
#define ENTITIES_SELF_ID 255
|
||||||
|
|
||||||
enum NameMode {
|
enum NameMode {
|
||||||
@ -174,7 +175,8 @@ void Entities_RenderModels(double delta, float t);
|
|||||||
/* Removes the given entity, raising EntityEvents.Removed event */
|
/* Removes the given entity, raising EntityEvents.Removed event */
|
||||||
void Entities_Remove(EntityID id);
|
void Entities_Remove(EntityID id);
|
||||||
/* Gets the ID of the closest entity to the given entity */
|
/* Gets the ID of the closest entity to the given entity */
|
||||||
EntityID Entities_GetClosest(struct Entity* src);
|
/* Returns -1 if there is no other entity nearby */
|
||||||
|
int Entities_GetClosest(struct Entity* src);
|
||||||
|
|
||||||
#define TABLIST_MAX_NAMES 256
|
#define TABLIST_MAX_NAMES 256
|
||||||
/* Data for all entries in tab list */
|
/* Data for all entries in tab list */
|
||||||
@ -237,7 +239,7 @@ struct LocalPlayer {
|
|||||||
cc_bool _warnedRespawn, _warnedFly, _warnedNoclip, _warnedZoom;
|
cc_bool _warnedRespawn, _warnedFly, _warnedNoclip, _warnedZoom;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct LocalPlayer LocalPlayer_Instance;
|
extern struct LocalPlayer LocalPlayer_Instances[MAX_LOCAL_PLAYERS];
|
||||||
/* Returns how high (in blocks) the player can jump. */
|
/* Returns how high (in blocks) the player can jump. */
|
||||||
float LocalPlayer_JumpHeight(struct LocalPlayer* p);
|
float LocalPlayer_JumpHeight(struct LocalPlayer* p);
|
||||||
/* Interpolates current position and orientation between Interp.Prev and Interp.Next */
|
/* Interpolates current position and orientation between Interp.Prev and Interp.Next */
|
||||||
|
@ -425,8 +425,7 @@ void NetInterpComp_AdvanceState(struct NetInterpComp* interp, struct Entity* e)
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*-----------------------------------------------LocalInterpolationComponent-----------------------------------------------*
|
*-----------------------------------------------LocalInterpolationComponent-----------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static void LocalInterpComp_SetPosition(struct LocationUpdate* update, int mode) {
|
static void LocalInterpComp_SetPosition(struct Entity* e, struct LocationUpdate* update, int mode) {
|
||||||
struct Entity* e = &LocalPlayer_Instance.Base;
|
|
||||||
float yOffset;
|
float yOffset;
|
||||||
|
|
||||||
if (mode == LU_POS_ABSOLUTE_INSTANT || mode == LU_POS_ABSOLUTE_SMOOTH) {
|
if (mode == LU_POS_ABSOLUTE_INSTANT || mode == LU_POS_ABSOLUTE_SMOOTH) {
|
||||||
@ -453,15 +452,14 @@ static void LocalInterpComp_Angle(float* prev, float* next, float value, cc_bool
|
|||||||
if (!interpolate) *prev = value;
|
if (!interpolate) *prev = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalInterpComp_SetLocation(struct InterpComp* interp, struct LocationUpdate* update) {
|
void LocalInterpComp_SetLocation(struct InterpComp* interp, struct LocationUpdate* update, struct Entity* e) {
|
||||||
struct Entity* e = &LocalPlayer_Instance.Base;
|
|
||||||
struct EntityLocation* prev = &e->prev;
|
struct EntityLocation* prev = &e->prev;
|
||||||
struct EntityLocation* next = &e->next;
|
struct EntityLocation* next = &e->next;
|
||||||
cc_uint8 flags = update->flags;
|
cc_uint8 flags = update->flags;
|
||||||
cc_bool interpolate = flags & LU_ORI_INTERPOLATE;
|
cc_bool interpolate = flags & LU_ORI_INTERPOLATE;
|
||||||
|
|
||||||
if (flags & LU_HAS_POS) {
|
if (flags & LU_HAS_POS) {
|
||||||
LocalInterpComp_SetPosition(update, flags & LU_POS_MODEMASK);
|
LocalInterpComp_SetPosition(e, update, flags & LU_POS_MODEMASK);
|
||||||
}
|
}
|
||||||
if (flags & LU_HAS_PITCH) {
|
if (flags & LU_HAS_PITCH) {
|
||||||
LocalInterpComp_Angle(&prev->pitch, &next->pitch, update->pitch, interpolate);
|
LocalInterpComp_Angle(&prev->pitch, &next->pitch, update->pitch, interpolate);
|
||||||
|
@ -82,7 +82,7 @@ float HacksComp_CalcSpeedFactor(struct HacksComp* hacks, cc_bool canSpeed);
|
|||||||
/* Base entity component that performs interpolation of position and orientation */
|
/* Base entity component that performs interpolation of position and orientation */
|
||||||
struct InterpComp { InterpComp_Layout };
|
struct InterpComp { InterpComp_Layout };
|
||||||
|
|
||||||
void LocalInterpComp_SetLocation(struct InterpComp* interp, struct LocationUpdate* update);
|
void LocalInterpComp_SetLocation(struct InterpComp* interp, struct LocationUpdate* update, struct Entity* e);
|
||||||
void LocalInterpComp_AdvanceState(struct InterpComp* interp, struct Entity* e);
|
void LocalInterpComp_AdvanceState(struct InterpComp* interp, struct Entity* e);
|
||||||
|
|
||||||
/* Represents a network orientation state */
|
/* Represents a network orientation state */
|
||||||
|
@ -242,6 +242,7 @@ static void EntityShadows_MakeTexture(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EntityShadows_Render(void) {
|
void EntityShadows_Render(void) {
|
||||||
|
struct Entity* e;
|
||||||
int i;
|
int i;
|
||||||
if (Entities.ShadowsMode == SHADOW_MODE_NONE) return;
|
if (Entities.ShadowsMode == SHADOW_MODE_NONE) return;
|
||||||
|
|
||||||
@ -256,13 +257,13 @@ void EntityShadows_Render(void) {
|
|||||||
Gfx_SetAlphaBlending(true);
|
Gfx_SetAlphaBlending(true);
|
||||||
|
|
||||||
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
|
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
|
||||||
EntityShadow_Draw(Entities.List[ENTITIES_SELF_ID]);
|
EntityShadow_Draw(&Entities.CurPlayer->Base);
|
||||||
|
|
||||||
if (Entities.ShadowsMode == SHADOW_MODE_CIRCLE_ALL) {
|
if (Entities.ShadowsMode == SHADOW_MODE_CIRCLE_ALL) {
|
||||||
for (i = 0; i < ENTITIES_SELF_ID; i++)
|
for (i = 0; i < ENTITIES_MAX_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (!Entities.List[i] || !Entities.List[i]->ShouldRender) continue;
|
if (!e || !e->ShouldRender || e == &Entities.CurPlayer->Base) continue;
|
||||||
EntityShadow_Draw(Entities.List[i]);
|
EntityShadow_Draw(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,7 +374,7 @@ void EntityNames_Delete(struct Entity* e) {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*-----------------------------------------------------Names rendering-----------------------------------------------------*
|
*-----------------------------------------------------Names rendering-----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static EntityID closestEntityId;
|
static int closestEntityId;
|
||||||
|
|
||||||
void EntityNames_Render(void) {
|
void EntityNames_Render(void) {
|
||||||
struct LocalPlayer* p = Entities.CurPlayer;
|
struct LocalPlayer* p = Entities.CurPlayer;
|
||||||
@ -391,9 +392,7 @@ void EntityNames_Render(void) {
|
|||||||
for (i = 0; i < ENTITIES_MAX_COUNT; i++)
|
for (i = 0; i < ENTITIES_MAX_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (!Entities.List[i]) continue;
|
if (!Entities.List[i]) continue;
|
||||||
if (i != closestEntityId || i == ENTITIES_SELF_ID) {
|
if (i != closestEntityId) DrawName(Entities.List[i]);
|
||||||
DrawName(Entities.List[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Gfx_SetAlphaTest(false);
|
Gfx_SetAlphaTest(false);
|
||||||
@ -417,7 +416,7 @@ void EntityNames_RenderHovered(void) {
|
|||||||
for (i = 0; i < ENTITIES_MAX_COUNT; i++)
|
for (i = 0; i < ENTITIES_MAX_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (!Entities.List[i]) continue;
|
if (!Entities.List[i]) continue;
|
||||||
if ((i == closestEntityId || allNames) && i != ENTITIES_SELF_ID) {
|
if ((i == closestEntityId || allNames) && Entities.List[i] != &p->Base) {
|
||||||
DrawName(Entities.List[i]);
|
DrawName(Entities.List[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,8 +86,8 @@ cc_result Map_LoadFrom(const cc_string* path) {
|
|||||||
if (res) Logger_SysWarn2(res, "decoding", path);
|
if (res) Logger_SysWarn2(res, "decoding", path);
|
||||||
|
|
||||||
World_SetNewMap(World.Blocks, World.Width, World.Height, World.Length);
|
World_SetNewMap(World.Blocks, World.Width, World.Height, World.Length);
|
||||||
if (!spawn_point) LocalPlayer_CalcDefaultSpawn(&LocalPlayer_Instance, &update);
|
if (!spawn_point) LocalPlayer_CalcDefaultSpawn(Entities.CurPlayer, &update);
|
||||||
LocalPlayer_MoveToSpawn(&LocalPlayer_Instance, &update);
|
LocalPlayer_MoveToSpawn(&LocalPlayer_Instances[0], &update);
|
||||||
|
|
||||||
relPath = *path;
|
relPath = *path;
|
||||||
Utils_UNSAFE_GetFilename(&relPath);
|
Utils_UNSAFE_GetFilename(&relPath);
|
||||||
@ -703,7 +703,7 @@ static PackedCol Cw_ParseColor(PackedCol defValue) {
|
|||||||
|
|
||||||
static void Cw_Callback_4(struct NbtTag* tag) {
|
static void Cw_Callback_4(struct NbtTag* tag) {
|
||||||
BlockID id = cw_curID;
|
BlockID id = cw_curID;
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = &LocalPlayer_Instances[0];
|
||||||
|
|
||||||
if (!IsTag(tag->parent->parent, "CPE")) return;
|
if (!IsTag(tag->parent->parent, "CPE")) return;
|
||||||
if (!IsTag(tag->parent->parent->parent, "Metadata")) return;
|
if (!IsTag(tag->parent->parent->parent, "Metadata")) return;
|
||||||
@ -1572,9 +1572,9 @@ static cc_result Cw_WriteBockDef(struct Stream* stream, int b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cc_result Cw_Save(struct Stream* stream) {
|
cc_result Cw_Save(struct Stream* stream) {
|
||||||
|
struct LocalPlayer* p = Entities.CurPlayer;
|
||||||
cc_uint8 buffer[2048];
|
cc_uint8 buffer[2048];
|
||||||
cc_uint8* cur;
|
cc_uint8* cur;
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
|
||||||
cc_result res;
|
cc_result res;
|
||||||
int b;
|
int b;
|
||||||
|
|
||||||
@ -1622,7 +1622,7 @@ cc_result Cw_Save(struct Stream* stream) {
|
|||||||
{
|
{
|
||||||
cur = Nbt_WriteDict(cur, "ClickDistance");
|
cur = Nbt_WriteDict(cur, "ClickDistance");
|
||||||
{
|
{
|
||||||
cur = Nbt_WriteUInt16(cur, "Distance", (cc_uint16)(LocalPlayer_Instance.ReachDistance * 32));
|
cur = Nbt_WriteUInt16(cur, "Distance", (cc_uint16)(p->ReachDistance * 32));
|
||||||
} *cur++ = NBT_END;
|
} *cur++ = NBT_END;
|
||||||
|
|
||||||
cur = Nbt_WriteDict(cur, "EnvWeatherType");
|
cur = Nbt_WriteDict(cur, "EnvWeatherType");
|
||||||
@ -1739,9 +1739,9 @@ static const struct JField {
|
|||||||
{ JFIELD_I32, false, "width", &World.Width },
|
{ JFIELD_I32, false, "width", &World.Width },
|
||||||
{ JFIELD_I32, false, "depth", &World.Height },
|
{ JFIELD_I32, false, "depth", &World.Height },
|
||||||
{ JFIELD_I32, false, "height", &World.Length },
|
{ JFIELD_I32, false, "height", &World.Length },
|
||||||
{ JFIELD_I32, true, "xSpawn", &LocalPlayer_Instance.Base.Position.x },
|
{ JFIELD_I32, true, "xSpawn", &LocalPlayer_Instances[0].Base.Position.x },
|
||||||
{ JFIELD_I32, true, "ySpawn", &LocalPlayer_Instance.Base.Position.y },
|
{ JFIELD_I32, true, "ySpawn", &LocalPlayer_Instances[0].Base.Position.y },
|
||||||
{ JFIELD_I32, true, "zSpawn", &LocalPlayer_Instance.Base.Position.z },
|
{ JFIELD_I32, true, "zSpawn", &LocalPlayer_Instances[0].Base.Position.z },
|
||||||
{ JFIELD_ARRAY,0, "blocks" }
|
{ JFIELD_ARRAY,0, "blocks" }
|
||||||
/* TODO classic only blocks */
|
/* TODO classic only blocks */
|
||||||
};
|
};
|
||||||
|
16
src/Input.c
16
src/Input.c
@ -684,6 +684,9 @@ static void MouseStateUpdate(int button, cc_bool pressed) {
|
|||||||
if (input_pickingId == -1) {
|
if (input_pickingId == -1) {
|
||||||
p = &Entities.CurPlayer->Base;
|
p = &Entities.CurPlayer->Base;
|
||||||
input_pickingId = Entities_GetClosest(p);
|
input_pickingId = Entities_GetClosest(p);
|
||||||
|
|
||||||
|
if (input_pickingId == -1)
|
||||||
|
input_pickingId = ENTITIES_SELF_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
input_buttonsDown[button] = pressed;
|
input_buttonsDown[button] = pressed;
|
||||||
@ -779,9 +782,10 @@ static cc_bool IntersectsOthers(Vec3 pos, BlockID block) {
|
|||||||
Vec3_Add(&blockBB.Min, &pos, &Blocks.MinBB[block]);
|
Vec3_Add(&blockBB.Min, &pos, &Blocks.MinBB[block]);
|
||||||
Vec3_Add(&blockBB.Max, &pos, &Blocks.MaxBB[block]);
|
Vec3_Add(&blockBB.Max, &pos, &Blocks.MaxBB[block]);
|
||||||
|
|
||||||
for (id = 0; id < ENTITIES_SELF_ID; id++) {
|
for (id = 0; id < ENTITIES_MAX_COUNT; id++)
|
||||||
|
{
|
||||||
e = Entities.List[id];
|
e = Entities.List[id];
|
||||||
if (!e) continue;
|
if (!e || e == &Entities.CurPlayer->Base) continue;
|
||||||
|
|
||||||
Entity_GetBounds(e, &entityBB);
|
Entity_GetBounds(e, &entityBB);
|
||||||
entityBB.Min.y += 1.0f / 32.0f; /* when player is exactly standing on top of ground */
|
entityBB.Min.y += 1.0f / 32.0f; /* when player is exactly standing on top of ground */
|
||||||
@ -948,7 +952,7 @@ static void InputHandler_Toggle(int key, cc_bool* target, const char* enableMsg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cc_bool InputHandler_SetFOV(int fov) {
|
cc_bool InputHandler_SetFOV(int fov) {
|
||||||
struct HacksComp* h = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* h = &Entities.CurPlayer->Hacks;
|
||||||
if (!h->Enabled || !h->CanUseThirdPerson) return false;
|
if (!h->Enabled || !h->CanUseThirdPerson) return false;
|
||||||
|
|
||||||
Camera.ZoomFov = fov;
|
Camera.ZoomFov = fov;
|
||||||
@ -964,7 +968,7 @@ cc_bool Input_HandleMouseWheel(float delta) {
|
|||||||
if (!hotbar && Camera.Active->Zoom(delta)) return true;
|
if (!hotbar && Camera.Active->Zoom(delta)) return true;
|
||||||
if (!KeyBind_IsPressed(KEYBIND_ZOOM_SCROLL)) return false;
|
if (!KeyBind_IsPressed(KEYBIND_ZOOM_SCROLL)) return false;
|
||||||
|
|
||||||
h = &LocalPlayer_Instance.Hacks;
|
h = &Entities.CurPlayer->Hacks;
|
||||||
if (!h->Enabled || !h->CanUseThirdPerson) return false;
|
if (!h->Enabled || !h->CanUseThirdPerson) return false;
|
||||||
|
|
||||||
if (input_fovIndex == -1.0f) input_fovIndex = (float)Camera.ZoomFov;
|
if (input_fovIndex == -1.0f) input_fovIndex = (float)Camera.ZoomFov;
|
||||||
@ -975,7 +979,7 @@ cc_bool Input_HandleMouseWheel(float delta) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void InputHandler_CheckZoomFov(void* obj) {
|
static void InputHandler_CheckZoomFov(void* obj) {
|
||||||
struct HacksComp* h = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* h = &Entities.CurPlayer->Hacks;
|
||||||
if (!h->Enabled || !h->CanUseThirdPerson) Camera_SetFov(Camera.DefaultFov);
|
if (!h->Enabled || !h->CanUseThirdPerson) Camera_SetFov(Camera.DefaultFov);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1067,7 +1071,7 @@ static void HandleHotkeyDown(int key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static cc_bool HandleLocalPlayerKey(int key) {
|
static cc_bool HandleLocalPlayerKey(int key) {
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = Entities.CurPlayer;
|
||||||
|
|
||||||
if (KeyBind_Claims(KEYBIND_RESPAWN, key)) {
|
if (KeyBind_Claims(KEYBIND_RESPAWN, key)) {
|
||||||
return LocalPlayer_HandleRespawn(p);
|
return LocalPlayer_HandleRespawn(p);
|
||||||
|
46
src/Menus.c
46
src/Menus.c
@ -530,7 +530,7 @@ static void PauseScreen_CheckHacksAllowed(void* screen) {
|
|||||||
if (Gui.ClassicMenu) return;
|
if (Gui.ClassicMenu) return;
|
||||||
|
|
||||||
Widget_SetDisabled(&s->btns[4],
|
Widget_SetDisabled(&s->btns[4],
|
||||||
!LocalPlayer_Instance.Hacks.CanAnyHacks); /* select texture pack */
|
!Entities.CurPlayer->Hacks.CanAnyHacks); /* select texture pack */
|
||||||
s->dirty = true;
|
s->dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -702,7 +702,7 @@ static const struct SimpleButtonDesc optsGroup_btns[8] = {
|
|||||||
static void OptionsGroupScreen_CheckHacksAllowed(void* screen) {
|
static void OptionsGroupScreen_CheckHacksAllowed(void* screen) {
|
||||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||||
Widget_SetDisabled(&s->btns[6],
|
Widget_SetDisabled(&s->btns[6],
|
||||||
!LocalPlayer_Instance.Hacks.CanAnyHacks); /* env settings */
|
!Entities.CurPlayer->Hacks.CanAnyHacks); /* env settings */
|
||||||
s->dirty = true;
|
s->dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2758,10 +2758,10 @@ static void ClassicOptionsScreen_SetShowFPS(const cc_string* v) { Gui.ShowFPS =
|
|||||||
static void ClassicOptionsScreen_GetViewBob(cc_string* v) { Menu_GetBool(v, Game_ViewBobbing); }
|
static void ClassicOptionsScreen_GetViewBob(cc_string* v) { Menu_GetBool(v, Game_ViewBobbing); }
|
||||||
static void ClassicOptionsScreen_SetViewBob(const cc_string* v) { Game_ViewBobbing = Menu_SetBool(v, OPT_VIEW_BOBBING); }
|
static void ClassicOptionsScreen_SetViewBob(const cc_string* v) { Game_ViewBobbing = Menu_SetBool(v, OPT_VIEW_BOBBING); }
|
||||||
|
|
||||||
static void ClassicOptionsScreen_GetHacks(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.Enabled); }
|
static void ClassicOptionsScreen_GetHacks(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.Enabled); }
|
||||||
static void ClassicOptionsScreen_SetHacks(const cc_string* v) {
|
static void ClassicOptionsScreen_SetHacks(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.Enabled = Menu_SetBool(v, OPT_HACKS_ENABLED);
|
Entities.CurPlayer->Hacks.Enabled = Menu_SetBool(v, OPT_HACKS_ENABLED);
|
||||||
HacksComp_Update(&LocalPlayer_Instance.Hacks);
|
HacksComp_Update(&Entities.CurPlayer->Hacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ClassicOptionsScreen_RecreateExtra(struct MenuOptionsScreen* s) {
|
static void ClassicOptionsScreen_RecreateExtra(struct MenuOptionsScreen* s) {
|
||||||
@ -3130,15 +3130,15 @@ void GuiOptionsScreen_Show(void) {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*---------------------------------------------------HacksSettingsScreen---------------------------------------------------*
|
*---------------------------------------------------HacksSettingsScreen---------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static void HacksSettingsScreen_GetHacks(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.Enabled); }
|
static void HacksSettingsScreen_GetHacks(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.Enabled); }
|
||||||
static void HacksSettingsScreen_SetHacks(const cc_string* v) {
|
static void HacksSettingsScreen_SetHacks(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.Enabled = Menu_SetBool(v,OPT_HACKS_ENABLED);
|
Entities.CurPlayer->Hacks.Enabled = Menu_SetBool(v,OPT_HACKS_ENABLED);
|
||||||
HacksComp_Update(&LocalPlayer_Instance.Hacks);
|
HacksComp_Update(&Entities.CurPlayer->Hacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetSpeed(cc_string* v) { String_AppendFloat(v, LocalPlayer_Instance.Hacks.SpeedMultiplier, 2); }
|
static void HacksSettingsScreen_GetSpeed(cc_string* v) { String_AppendFloat(v, Entities.CurPlayer->Hacks.SpeedMultiplier, 2); }
|
||||||
static void HacksSettingsScreen_SetSpeed(const cc_string* v) {
|
static void HacksSettingsScreen_SetSpeed(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.SpeedMultiplier = Menu_Float(v);
|
Entities.CurPlayer->Hacks.SpeedMultiplier = Menu_Float(v);
|
||||||
Options_Set(OPT_SPEED_FACTOR, v);
|
Options_Set(OPT_SPEED_FACTOR, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3148,14 +3148,14 @@ static void HacksSettingsScreen_SetClipping(const cc_string* v) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetJump(cc_string* v) {
|
static void HacksSettingsScreen_GetJump(cc_string* v) {
|
||||||
String_AppendFloat(v, LocalPlayer_JumpHeight(&LocalPlayer_Instance), 3);
|
String_AppendFloat(v, LocalPlayer_JumpHeight(Entities.CurPlayer), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_SetJump(const cc_string* v) {
|
static void HacksSettingsScreen_SetJump(const cc_string* v) {
|
||||||
cc_string str; char strBuffer[STRING_SIZE];
|
cc_string str; char strBuffer[STRING_SIZE];
|
||||||
struct PhysicsComp* physics;
|
struct PhysicsComp* physics;
|
||||||
|
|
||||||
physics = &LocalPlayer_Instance.Physics;
|
physics = &Entities.CurPlayer->Physics;
|
||||||
physics->JumpVel = PhysicsComp_CalcJumpVelocity(Menu_Float(v));
|
physics->JumpVel = PhysicsComp_CalcJumpVelocity(Menu_Float(v));
|
||||||
physics->UserJumpVel = physics->JumpVel;
|
physics->UserJumpVel = physics->JumpVel;
|
||||||
|
|
||||||
@ -3164,19 +3164,19 @@ static void HacksSettingsScreen_SetJump(const cc_string* v) {
|
|||||||
Options_Set(OPT_JUMP_VELOCITY, &str);
|
Options_Set(OPT_JUMP_VELOCITY, &str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetWOMHacks(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.WOMStyleHacks); }
|
static void HacksSettingsScreen_GetWOMHacks(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.WOMStyleHacks); }
|
||||||
static void HacksSettingsScreen_SetWOMHacks(const cc_string* v) {
|
static void HacksSettingsScreen_SetWOMHacks(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.WOMStyleHacks = Menu_SetBool(v, OPT_WOM_STYLE_HACKS);
|
Entities.CurPlayer->Hacks.WOMStyleHacks = Menu_SetBool(v, OPT_WOM_STYLE_HACKS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetFullStep(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.FullBlockStep); }
|
static void HacksSettingsScreen_GetFullStep(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.FullBlockStep); }
|
||||||
static void HacksSettingsScreen_SetFullStep(const cc_string* v) {
|
static void HacksSettingsScreen_SetFullStep(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.FullBlockStep = Menu_SetBool(v, OPT_FULL_BLOCK_STEP);
|
Entities.CurPlayer->Hacks.FullBlockStep = Menu_SetBool(v, OPT_FULL_BLOCK_STEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetPushback(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.PushbackPlacing); }
|
static void HacksSettingsScreen_GetPushback(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.PushbackPlacing); }
|
||||||
static void HacksSettingsScreen_SetPushback(const cc_string* v) {
|
static void HacksSettingsScreen_SetPushback(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.PushbackPlacing = Menu_SetBool(v, OPT_PUSHBACK_PLACING);
|
Entities.CurPlayer->Hacks.PushbackPlacing = Menu_SetBool(v, OPT_PUSHBACK_PLACING);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetLiquids(cc_string* v) { Menu_GetBool(v, Game_BreakableLiquids); }
|
static void HacksSettingsScreen_GetLiquids(cc_string* v) { Menu_GetBool(v, Game_BreakableLiquids); }
|
||||||
@ -3184,9 +3184,9 @@ static void HacksSettingsScreen_SetLiquids(const cc_string* v) {
|
|||||||
Game_BreakableLiquids = Menu_SetBool(v, OPT_MODIFIABLE_LIQUIDS);
|
Game_BreakableLiquids = Menu_SetBool(v, OPT_MODIFIABLE_LIQUIDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetSlide(cc_string* v) { Menu_GetBool(v, LocalPlayer_Instance.Hacks.NoclipSlide); }
|
static void HacksSettingsScreen_GetSlide(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.NoclipSlide); }
|
||||||
static void HacksSettingsScreen_SetSlide(const cc_string* v) {
|
static void HacksSettingsScreen_SetSlide(const cc_string* v) {
|
||||||
LocalPlayer_Instance.Hacks.NoclipSlide = Menu_SetBool(v, OPT_NOCLIP_SLIDE);
|
Entities.CurPlayer->Hacks.NoclipSlide = Menu_SetBool(v, OPT_NOCLIP_SLIDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HacksSettingsScreen_GetFOV(cc_string* v) { String_AppendInt(v, Camera.Fov); }
|
static void HacksSettingsScreen_GetFOV(cc_string* v) { String_AppendInt(v, Camera.Fov); }
|
||||||
@ -3201,7 +3201,7 @@ static void HacksSettingsScreen_SetFOV(const cc_string* v) {
|
|||||||
|
|
||||||
static void HacksSettingsScreen_CheckHacksAllowed(struct MenuOptionsScreen* s) {
|
static void HacksSettingsScreen_CheckHacksAllowed(struct MenuOptionsScreen* s) {
|
||||||
struct Widget** widgets = s->widgets;
|
struct Widget** widgets = s->widgets;
|
||||||
struct LocalPlayer* p = &LocalPlayer_Instance;
|
struct LocalPlayer* p = Entities.CurPlayer;
|
||||||
cc_bool disabled = !p->Hacks.Enabled;
|
cc_bool disabled = !p->Hacks.Enabled;
|
||||||
|
|
||||||
Widget_SetDisabled(widgets[3], disabled || !p->Hacks.CanSpeed);
|
Widget_SetDisabled(widgets[3], disabled || !p->Hacks.CanSpeed);
|
||||||
@ -3263,8 +3263,8 @@ void HacksSettingsScreen_Show(void) {
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*----------------------------------------------------MiscOptionsScreen----------------------------------------------------*
|
*----------------------------------------------------MiscOptionsScreen----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static void MiscOptionsScreen_GetReach(cc_string* v) { String_AppendFloat(v, LocalPlayer_Instance.ReachDistance, 2); }
|
static void MiscOptionsScreen_GetReach(cc_string* v) { String_AppendFloat(v, Entities.CurPlayer->ReachDistance, 2); }
|
||||||
static void MiscOptionsScreen_SetReach(const cc_string* v) { LocalPlayer_Instance.ReachDistance = Menu_Float(v); }
|
static void MiscOptionsScreen_SetReach(const cc_string* v) { Entities.CurPlayer->ReachDistance = Menu_Float(v); }
|
||||||
|
|
||||||
static void MiscOptionsScreen_GetMusic(cc_string* v) { String_AppendInt(v, Audio_MusicVolume); }
|
static void MiscOptionsScreen_GetMusic(cc_string* v) { String_AppendInt(v, Audio_MusicVolume); }
|
||||||
static void MiscOptionsScreen_SetMusic(const cc_string* v) {
|
static void MiscOptionsScreen_SetMusic(const cc_string* v) {
|
||||||
|
@ -251,8 +251,8 @@ void Picking_CalcPickedBlock(const Vec3* origin, const Vec3* dir, float reach, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Picking_ClipCameraPos(const Vec3* origin, const Vec3* dir, float reach, struct RayTracer* t) {
|
void Picking_ClipCameraPos(const Vec3* origin, const Vec3* dir, float reach, struct RayTracer* t) {
|
||||||
cc_bool noClip = (!Camera.Clipping || LocalPlayer_Instance.Hacks.Noclip)
|
cc_bool noClip = (!Camera.Clipping || Entities.CurPlayer->Hacks.Noclip)
|
||||||
&& LocalPlayer_Instance.Hacks.CanNoclip;
|
&& Entities.CurPlayer->Hacks.CanNoclip;
|
||||||
if (noClip || !World.Loaded || !RayTrace(t, origin, dir, reach, ClipCamera)) {
|
if (noClip || !World.Loaded || !RayTrace(t, origin, dir, reach, ClipCamera)) {
|
||||||
RayTracer_SetInvalid(t);
|
RayTracer_SetInvalid(t);
|
||||||
Vec3_Mul1(&t->intersect, dir, reach); /* intersect = dir * reach */
|
Vec3_Mul1(&t->intersect, dir, reach); /* intersect = dir * reach */
|
||||||
|
@ -135,7 +135,7 @@ static void HUDScreen_BuildPosition(struct HUDScreen* s, struct VertexTextured*
|
|||||||
tex.width = atlas->offset;
|
tex.width = atlas->offset;
|
||||||
Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, &cur);
|
Gfx_Make2DQuad(&tex, PACKEDCOL_WHITE, &cur);
|
||||||
|
|
||||||
IVec3_Floor(&pos, &LocalPlayer_Instance.Base.Position);
|
IVec3_Floor(&pos, &Entities.CurPlayer->Base.Position);
|
||||||
atlas->curX = tex.x + tex.width;
|
atlas->curX = tex.x + tex.width;
|
||||||
|
|
||||||
/* Make (X, Y, Z) suffix */
|
/* Make (X, Y, Z) suffix */
|
||||||
@ -151,14 +151,14 @@ static void HUDScreen_BuildPosition(struct HUDScreen* s, struct VertexTextured*
|
|||||||
}
|
}
|
||||||
|
|
||||||
static cc_bool HUDScreen_HasHacksChanged(struct HUDScreen* s) {
|
static cc_bool HUDScreen_HasHacksChanged(struct HUDScreen* s) {
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &Entities.CurPlayer->Hacks;
|
||||||
float speed = HacksComp_CalcSpeedFactor(hacks, hacks->CanSpeed);
|
float speed = HacksComp_CalcSpeedFactor(hacks, hacks->CanSpeed);
|
||||||
return speed != s->lastSpeed || Camera.Fov != s->lastFov || s->hacksChanged;
|
return speed != s->lastSpeed || Camera.Fov != s->lastFov || s->hacksChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HUDScreen_RemakeLine2(struct HUDScreen* s) {
|
static void HUDScreen_RemakeLine2(struct HUDScreen* s) {
|
||||||
cc_string status; char statusBuffer[STRING_SIZE * 2];
|
cc_string status; char statusBuffer[STRING_SIZE * 2];
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &Entities.CurPlayer->Hacks;
|
||||||
float speed;
|
float speed;
|
||||||
s->dirty = true;
|
s->dirty = true;
|
||||||
|
|
||||||
@ -340,7 +340,7 @@ static void HUDScreen_Update(void* screen, double delta) {
|
|||||||
if (HUDScreen_HasHacksChanged(s)) HUDScreen_RemakeLine2(s);
|
if (HUDScreen_HasHacksChanged(s)) HUDScreen_RemakeLine2(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
IVec3_Floor(&pos, &LocalPlayer_Instance.Base.Position);
|
IVec3_Floor(&pos, &Entities.CurPlayer->Base.Position);
|
||||||
if (pos.x != s->lastX || pos.y != s->lastY || pos.z != s->lastZ)
|
if (pos.x != s->lastX || pos.y != s->lastY || pos.z != s->lastZ)
|
||||||
s->dirty = true;
|
s->dirty = true;
|
||||||
}
|
}
|
||||||
@ -2003,8 +2003,8 @@ static void GeneratingScreen_EndGeneration(void) {
|
|||||||
Gen_Blocks = NULL;
|
Gen_Blocks = NULL;
|
||||||
World.Seed = Gen_Seed;
|
World.Seed = Gen_Seed;
|
||||||
|
|
||||||
LocalPlayer_CalcDefaultSpawn(&LocalPlayer_Instance, &update);
|
LocalPlayer_CalcDefaultSpawn(Entities.CurPlayer, &update);
|
||||||
LocalPlayer_MoveToSpawn(&LocalPlayer_Instance, &update);
|
LocalPlayer_MoveToSpawn(&LocalPlayer_Instances[0], &update);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GeneratingScreen_Update(void* screen, double delta) {
|
static void GeneratingScreen_Update(void* screen, double delta) {
|
||||||
@ -2232,10 +2232,10 @@ static struct Widget* touch_widgets[ONSCREEN_MAX_BTNS + TOUCH_EXTRA_BTNS + 2] =
|
|||||||
#define TOUCH_MAX_VERTICES (THUMBSTICKWIDGET_MAX + TOUCH_MAX_BTNS * BUTTONWIDGET_MAX)
|
#define TOUCH_MAX_VERTICES (THUMBSTICKWIDGET_MAX + TOUCH_MAX_BTNS * BUTTONWIDGET_MAX)
|
||||||
|
|
||||||
static void TouchScreen_ChatClick(void* s, void* w) { ChatScreen_OpenInput(&String_Empty); }
|
static void TouchScreen_ChatClick(void* s, void* w) { ChatScreen_OpenInput(&String_Empty); }
|
||||||
static void TouchScreen_RespawnClick(void* s, void* w) { LocalPlayer_HandleRespawn(&LocalPlayer_Instance); }
|
static void TouchScreen_RespawnClick(void* s, void* w) { LocalPlayer_HandleRespawn(Entities.CurPlayer); }
|
||||||
static void TouchScreen_SetSpawnClick(void* s, void* w) { LocalPlayer_HandleSetSpawn(&LocalPlayer_Instance); }
|
static void TouchScreen_SetSpawnClick(void* s, void* w) { LocalPlayer_HandleSetSpawn(Entities.CurPlayer); }
|
||||||
static void TouchScreen_FlyClick(void* s, void* w) { LocalPlayer_HandleFly(&LocalPlayer_Instance); }
|
static void TouchScreen_FlyClick(void* s, void* w) { LocalPlayer_HandleFly(Entities.CurPlayer); }
|
||||||
static void TouchScreen_NoclipClick(void* s, void* w) { LocalPlayer_HandleNoclip(&LocalPlayer_Instance); }
|
static void TouchScreen_NoclipClick(void* s, void* w) { LocalPlayer_HandleNoclip(Entities.CurPlayer); }
|
||||||
static void TouchScreen_CameraClick(void* s, void* w) { Camera_CycleActive(); }
|
static void TouchScreen_CameraClick(void* s, void* w) { Camera_CycleActive(); }
|
||||||
static void TouchScreen_MoreClick(void* s, void* w) { TouchMoreScreen_Show(); }
|
static void TouchScreen_MoreClick(void* s, void* w) { TouchMoreScreen_Show(); }
|
||||||
static void TouchScreen_SwitchClick(void* s, void* w) { Inventory_SwitchHotbar(); }
|
static void TouchScreen_SwitchClick(void* s, void* w) { Inventory_SwitchHotbar(); }
|
||||||
@ -2253,11 +2253,11 @@ static void TouchScreen_TabClick(void* s, void* w) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void TouchScreen_SpeedClick(void* s, void* w) {
|
static void TouchScreen_SpeedClick(void* s, void* w) {
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &Entities.CurPlayer->Hacks;
|
||||||
if (hacks->Enabled) hacks->Speeding = !hacks->Speeding;
|
if (hacks->Enabled) hacks->Speeding = !hacks->Speeding;
|
||||||
}
|
}
|
||||||
static void TouchScreen_HalfClick(void* s, void* w) {
|
static void TouchScreen_HalfClick(void* s, void* w) {
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &Entities.CurPlayer->Hacks;
|
||||||
if (hacks->Enabled) hacks->HalfSpeeding = !hacks->HalfSpeeding;
|
if (hacks->Enabled) hacks->HalfSpeeding = !hacks->HalfSpeeding;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2272,13 +2272,13 @@ static void TouchScreen_BindClick(void* screen, void* widget) {
|
|||||||
static const struct TouchButtonDesc onscreenDescs[ONSCREEN_MAX_BTNS] = {
|
static const struct TouchButtonDesc onscreenDescs[ONSCREEN_MAX_BTNS] = {
|
||||||
{ "Chat", 0,0,0, TouchScreen_ChatClick },
|
{ "Chat", 0,0,0, TouchScreen_ChatClick },
|
||||||
{ "Tablist", 0,0,0, TouchScreen_TabClick },
|
{ "Tablist", 0,0,0, TouchScreen_TabClick },
|
||||||
{ "Respawn", 0,0,0, TouchScreen_RespawnClick, &LocalPlayer_Instance.Hacks.CanRespawn },
|
{ "Respawn", 0,0,0, TouchScreen_RespawnClick, &Entities.CurPlayer->Hacks.CanRespawn },
|
||||||
{ "Set spawn", 0,0,0, TouchScreen_SetSpawnClick, &LocalPlayer_Instance.Hacks.CanRespawn },
|
{ "Set spawn", 0,0,0, TouchScreen_SetSpawnClick, &Entities.CurPlayer->Hacks.CanRespawn },
|
||||||
{ "Fly", 0,0,0, TouchScreen_FlyClick, &LocalPlayer_Instance.Hacks.CanFly },
|
{ "Fly", 0,0,0, TouchScreen_FlyClick, &Entities.CurPlayer->Hacks.CanFly },
|
||||||
{ "Noclip", 0,0,0, TouchScreen_NoclipClick, &LocalPlayer_Instance.Hacks.CanNoclip },
|
{ "Noclip", 0,0,0, TouchScreen_NoclipClick, &Entities.CurPlayer->Hacks.CanNoclip },
|
||||||
{ "Speed", 0,0,0, TouchScreen_SpeedClick, &LocalPlayer_Instance.Hacks.CanSpeed },
|
{ "Speed", 0,0,0, TouchScreen_SpeedClick, &Entities.CurPlayer->Hacks.CanSpeed },
|
||||||
{ "\xabSpeed", 0,0,0, TouchScreen_HalfClick, &LocalPlayer_Instance.Hacks.CanSpeed },
|
{ "\xabSpeed", 0,0,0, TouchScreen_HalfClick, &Entities.CurPlayer->Hacks.CanSpeed },
|
||||||
{ "Camera", 0,0,0, TouchScreen_CameraClick, &LocalPlayer_Instance.Hacks.CanUseThirdPerson },
|
{ "Camera", 0,0,0, TouchScreen_CameraClick, &Entities.CurPlayer->Hacks.CanUseThirdPerson },
|
||||||
{ "Delete", 0,0,0, TouchScreen_DeleteClick },
|
{ "Delete", 0,0,0, TouchScreen_DeleteClick },
|
||||||
{ "Pick", 0,0,0, TouchScreen_PickClick },
|
{ "Pick", 0,0,0, TouchScreen_PickClick },
|
||||||
{ "Place", 0,0,0, TouchScreen_PlaceClick },
|
{ "Place", 0,0,0, TouchScreen_PlaceClick },
|
||||||
@ -2294,7 +2294,7 @@ static const struct TouchButtonDesc hackDescs[2] = {
|
|||||||
|
|
||||||
#define TOUCHSCREEN_BTN_COLOR PackedCol_Make(255, 255, 255, 220)
|
#define TOUCHSCREEN_BTN_COLOR PackedCol_Make(255, 255, 255, 220)
|
||||||
static void TouchScreen_InitButtons(struct TouchScreen* s) {
|
static void TouchScreen_InitButtons(struct TouchScreen* s) {
|
||||||
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
struct HacksComp* hacks = &Entities.CurPlayer->Hacks;
|
||||||
const struct TouchButtonDesc* desc;
|
const struct TouchButtonDesc* desc;
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = 0; i < ONSCREEN_MAX_BTNS + TOUCH_EXTRA_BTNS; i++) s->widgets[i] = NULL;
|
for (i = 0; i < ONSCREEN_MAX_BTNS + TOUCH_EXTRA_BTNS; i++) s->widgets[i] = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user