diff --git a/ClassicalSharp/2D/Screens/ChatScreen.cs b/ClassicalSharp/2D/Screens/ChatScreen.cs index a607241ec..5ef50886e 100644 --- a/ClassicalSharp/2D/Screens/ChatScreen.cs +++ b/ClassicalSharp/2D/Screens/ChatScreen.cs @@ -466,7 +466,7 @@ namespace ClassicalSharp.Gui.Screens { int height = Math.Max(input.Height + input.YOffset, hud.BottomOffset); height += input.YOffset; altText.texture.Y1 = game.Height - (height + altText.texture.Height); - altText.Y = altText.texture.Y1; + altText.Y = altText.texture.Y; } void SetHandlesAllInput(bool handles) { diff --git a/src/Client/Block.c b/src/Client/Block.c index 2a6ef804b..8d5ac295d 100644 --- a/src/Client/Block.c +++ b/src/Client/Block.c @@ -26,7 +26,7 @@ void Block_Reset(void) { } void Block_Init(void) { - Int32 count = sizeof(DefinedCustomBlocks) / sizeof(DefinedCustomBlocks[0]); + Int32 count = Array_NumElements(DefinedCustomBlocks); Int32 i; for (i = 0; i < count; i++) { DefinedCustomBlocks[i] = 0; @@ -293,7 +293,7 @@ Real32 Block_GetSpriteBB_TopY(Int32 size, Int32 tileX, Int32 tileY, Bitmap* bmp) UInt32* row = Bitmap_GetRow(bmp, tileY * size + y) + (tileX * size); for (x = 0; x < size; x++) { if ((UInt8)(row[x] >> 24) != 0) { - return 1 - (float)y / size; + return 1 - (Real32)y / size; } } } @@ -306,7 +306,7 @@ Real32 Block_GetSpriteBB_BottomY(Int32 size, Int32 tileX, Int32 tileY, Bitmap* b UInt32* row = Bitmap_GetRow(bmp, tileY * size + y) + (tileX * size); for (x = 0; x < size; x++) { if ((UInt8)(row[x] >> 24) != 0) { - return 1 - (float)(y + 1) / size; + return 1 - (Real32)(y + 1) / size; } } } @@ -319,7 +319,7 @@ Real32 Block_GetSpriteBB_LeftX(Int32 size, Int32 tileX, Int32 tileY, Bitmap* bmp for (y = 0; y < size; y++) { UInt32* row = Bitmap_GetRow(bmp, tileY * size + y) + (tileX * size); if ((UInt8)(row[x] >> 24) != 0) { - return (float)x / size; + return (Real32)x / size; } } } @@ -332,7 +332,7 @@ Real32 Block_GetSpriteBB_RightX(Int32 size, Int32 tileX, Int32 tileY, Bitmap* bm for (y = 0; y < size; y++) { UInt32* row = Bitmap_GetRow(bmp, tileY * size + y) + (tileX * size); if ((UInt8)(row[x] >> 24) != 0) { - return (float)(x + 1) / size; + return (Real32)(x + 1) / size; } } } diff --git a/src/Client/Camera.c b/src/Client/Camera.c index 3efcd99f8..6d8177779 100644 --- a/src/Client/Camera.c +++ b/src/Client/Camera.c @@ -70,7 +70,7 @@ void PerspectiveCamera_RegrabMouse(void) { #define adjust 0.025f Real32 speedX = 0.0f, speedY = 0.0f; -void PersepctiveCamera_UpdateMouseRotation(void) { +void PerspectiveCamera_UpdateMouseRotation(void) { Real32 sensitivity = sensiFactor * Game_MouseSensitivity; if (Game_SmoothCamera) { @@ -98,8 +98,8 @@ void PersepctiveCamera_UpdateMouseRotation(void) { void PerspectiveCamera_UpdateMouse(void) { if (game.Gui.ActiveScreen.HandlesAllInput) return; - CentreMousePosition(); - UpdateMouseRotation(); + PerspectiveCamera_CentreMousePosition(); + PerspectiveCamera_UpdateMouseRotation(); } void PerspectiveCamera_CalcViewBobbing(Real32 t, Real32 velTiltScale) { @@ -179,7 +179,7 @@ void ThirdPersonCamera_GetView(Matrix* mat) { } Vector3 ThirdPersonCamera_GetCameraPosShared(Real32 t, Real32 dist, bool forward) { - CalcViewBobbing(t, dist); + PerspectiveCamera_CalcViewBobbing(t, dist); Entity* p = &LocalPlayer_Instance.Base.Base; Vector3 eyePos = Entity_GetEyePosition(p); eyePos.Y += Camera_BobbingVer; diff --git a/src/Client/D3D9Api.c b/src/Client/D3D9Api.c index e636c5390..a20a5b093 100644 --- a/src/Client/D3D9Api.c +++ b/src/Client/D3D9Api.c @@ -4,6 +4,7 @@ #include "Platform.h" #include "Window.h" #include "GraphicsCommon.h" +#include "Funcs.h" #ifdef USE_DX //#define D3D_DISABLE_9EX causes compile errors @@ -149,7 +150,7 @@ void D3D9_LoopUntilRetrieved(void) { } void D3D9_FindCompatibleFormat(void) { - Int32 count = sizeof(d3d9_viewFormats) / sizeof(d3d9_viewFormats[0]); + Int32 count = Array_NumElements(d3d9_viewFormats); Int32 i; ReturnCode res; @@ -163,7 +164,7 @@ void D3D9_FindCompatibleFormat(void) { } } - count = sizeof(d3d9_depthFormats) / sizeof(d3d9_depthFormats[0]); + count = Array_NumElements(d3d9_depthFormats); for (i = 0; i < count; i++) { d3d9_depthFormat = d3d9_depthFormats[i]; res = IDirect3D9_CheckDepthStencilMatch(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3d9_viewFormat, d3d9_viewFormat, d3d9_depthFormat); diff --git a/src/Client/Entity.c b/src/Client/Entity.c index 5db80036b..9e31f8777 100644 --- a/src/Client/Entity.c +++ b/src/Client/Entity.c @@ -49,15 +49,15 @@ void Entity_GetTransform(Entity* entity, Vector3 pos, Vector3 scale, Matrix* m) Matrix tmp; Matrix_RotateZ(&tmp, -entity->RotZ * MATH_DEG2RAD); - Matrix_Mult(m, m, &tmp); + Matrix_MulBy(m, &tmp); Matrix_RotateX(&tmp, -entity->RotX * MATH_DEG2RAD); - Matrix_Mult(m, m, &tmp); + Matrix_MulBy(m, &tmp); Matrix_RotateY(&tmp, -entity->RotY * MATH_DEG2RAD); - Matrix_Mult(m, m, &tmp); + Matrix_MulBy(m, &tmp); Matrix_Scale(&tmp, scale.X, scale.Y, scale.Z); - Matrix_Mult(m, m, &tmp); + Matrix_MulBy(m, &tmp); Matrix_Translate(&tmp, pos.X, pos.Y, pos.Z); - Matrix_Mult(m, m, &tmp); + Matrix_MulBy(m, &tmp); /* return rotZ * rotX * rotY * scale * translate; */ } diff --git a/src/Client/Entity.h b/src/Client/Entity.h index ac186f340..ac7d2e2f1 100644 --- a/src/Client/Entity.h +++ b/src/Client/Entity.h @@ -6,6 +6,7 @@ #include "AABB.h" #include "EntityComponents.h" #include "GraphicsEnums.h" +#include "Matrix.h" /* Represents an in-game entity. Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3 */ diff --git a/src/Client/EntityComponents.c b/src/Client/EntityComponents.c index fdaa829a0..51f0d9bdc 100644 --- a/src/Client/EntityComponents.c +++ b/src/Client/EntityComponents.c @@ -129,16 +129,17 @@ void TiltComp_GetCurrent(TiltComp* anim, Real32 t) { anim->TiltY = Math_Sin(pAnim->WalkTime) * pAnim->Swing * (0.15f * MATH_DEG2RAD); } -void HacksComponent_SetAll(HacksComp* hacks, bool allowed) { + +void HacksComp_SetAll(HacksComp* hacks, bool allowed) { hacks->CanAnyHacks = allowed; hacks->CanFly = allowed; hacks->CanNoclip = allowed; hacks->CanRespawn = allowed; hacks->CanSpeed = allowed; hacks->CanPushbackBlocks = allowed; hacks->CanUseThirdPersonCamera = allowed; } -void HacksComponent_Init(HacksComp* hacks) { +void HacksComp_Init(HacksComp* hacks) { Platform_MemSet(hacks, 0, sizeof(HacksComp)); - HacksComponent_SetAll(hacks, true); + HacksComp_SetAll(hacks, true); hacks->SpeedMultiplier = 10.0f; hacks->Enabled = true; hacks->CanSeeAllNames = true; @@ -149,15 +150,15 @@ void HacksComponent_Init(HacksComp* hacks) { hacks->HacksFlags = String_FromRawBuffer(&hacks->HacksFlagsBuffer[0], 128); } -bool HacksComponent_CanJumpHigher(HacksComp* hacks) { +bool HacksComp_CanJumpHigher(HacksComp* hacks) { return hacks->Enabled && hacks->CanAnyHacks && hacks->CanSpeed; } -bool HacksComponent_Floating(HacksComp* hacks) { +bool HacksComp_Floating(HacksComp* hacks) { return hacks->Noclip || hacks->Flying; } -String HacksComponent_GetFlagValue(String* flag, HacksComp* hacks) { +String HacksComp_GetFlagValue(String* flag, HacksComp* hacks) { String* joined = &hacks->HacksFlags; Int32 start = String_IndexOfString(joined, flag); if (start < 0) return String_MakeNull(); @@ -169,9 +170,9 @@ String HacksComponent_GetFlagValue(String* flag, HacksComp* hacks) { return String_UNSAFE_Substring(joined, start, end - start); } -void HacksComponent_ParseHorizontalSpeed(HacksComp* hacks) { +void HacksComp_ParseHorizontalSpeed(HacksComp* hacks) { String horSpeedFlag = String_FromConstant("horspeed="); - String speedStr = HacksComponent_GetFlagValue(&horSpeedFlag, hacks); + String speedStr = HacksComp_GetFlagValue(&horSpeedFlag, hacks); if (speedStr.length == 0) return; Real32 speed = 0.0f; @@ -179,9 +180,9 @@ void HacksComponent_ParseHorizontalSpeed(HacksComp* hacks) { hacks->MaxSpeedMultiplier = speed; } -void HacksComponent_ParseMultiSpeed(HacksComp* hacks) { +void HacksComp_ParseMultiSpeed(HacksComp* hacks) { String jumpsFlag = String_FromConstant("jumps="); - String jumpsStr = HacksComponent_GetFlagValue(&jumpsFlag, hacks); + String jumpsStr = HacksComp_GetFlagValue(&jumpsFlag, hacks); if (jumpsStr.length == 0) return; Int32 jumps = 0; @@ -189,7 +190,7 @@ void HacksComponent_ParseMultiSpeed(HacksComp* hacks) { hacks->MaxJumps = jumps; } -void HacksComponent_ParseFlag(HacksComp* hacks, const UInt8* incFlag, const UInt8* excFlag, bool* target) { +void HacksComp_ParseFlag(HacksComp* hacks, const UInt8* incFlag, const UInt8* excFlag, bool* target) { String include = String_FromReadonly(incFlag); String exclude = String_FromReadonly(excFlag); String* joined = &hacks->HacksFlags; @@ -201,21 +202,21 @@ void HacksComponent_ParseFlag(HacksComp* hacks, const UInt8* incFlag, const UInt } } -void HacksComponent_ParseAllFlag(HacksComp* hacks, const UInt8* incFlag, const UInt8* excFlag) { +void HacksComp_ParseAllFlag(HacksComp* hacks, const UInt8* incFlag, const UInt8* excFlag) { String include = String_FromReadonly(incFlag); String exclude = String_FromReadonly(excFlag); String* joined = &hacks->HacksFlags; if (String_ContainsString(joined, &include)) { - HacksComponent_SetAll(hacks, true); + HacksComp_SetAll(hacks, true); } else if (String_ContainsString(joined, &exclude)) { - HacksComponent_SetAll(hacks, false); + HacksComp_SetAll(hacks, false); } } /* Sets the user type of this user. This is used to control permissions for grass, bedrock, water and lava blocks on servers that don't support CPE block permissions. */ -void HacksComponent_SetUserType(HacksComp* hacks, UInt8 value) { +void HacksComp_SetUserType(HacksComp* hacks, UInt8 value) { bool isOp = value >= 100 && value <= 127; hacks->UserType = value; Block_CanPlace[BlockID_Bedrock] = isOp; @@ -229,7 +230,7 @@ void HacksComponent_SetUserType(HacksComp* hacks, UInt8 value) { } /* Disables any hacks if their respective CanHackX value is set to false. */ -void HacksComponent_CheckConsistency(HacksComp* hacks) { +void HacksComp_CheckConsistency(HacksComp* hacks) { if (!hacks->CanFly || !hacks->Enabled) { hacks->Flying = false; hacks->FlyingDown = false; hacks->FlyingUp = false; } @@ -252,8 +253,8 @@ void HacksComponent_CheckConsistency(HacksComp* hacks) { /* Updates ability to use hacks, and raises HackPermissionsChanged event. Parses hack flags specified in the motd and/or name of the server. Recognises +/-hax, +/-fly, +/-noclip, +/-speed, +/-respawn, +/-ophax, and horspeed=xyz */ -void HacksComponent_UpdateState(HacksComp* hacks) { - HacksComponent_SetAll(hacks, true); +void HacksComp_UpdateState(HacksComp* hacks) { + HacksComp_SetAll(hacks, true); if (hacks->HacksFlags.length == 0) return; hacks->MaxSpeedMultiplier = 1; @@ -261,20 +262,20 @@ void HacksComponent_UpdateState(HacksComp* hacks) { /* By default (this is also the case with WoM), we can use hacks. */ String excHacks = String_FromConstant("-hax"); if (String_ContainsString(&hacks->HacksFlags, &excHacks)) { - HacksComponent_SetAll(hacks, false); + HacksComp_SetAll(hacks, false); } - HacksComponent_ParseFlag(hacks, "+fly", "-fly", &hacks->CanFly); - HacksComponent_ParseFlag(hacks, "+noclip", "-noclip", &hacks->CanNoclip); - HacksComponent_ParseFlag(hacks, "+speed", "-speed", &hacks->CanSpeed); - HacksComponent_ParseFlag(hacks, "+respawn", "-respawn", &hacks->CanRespawn); + HacksComp_ParseFlag(hacks, "+fly", "-fly", &hacks->CanFly); + HacksComp_ParseFlag(hacks, "+noclip", "-noclip", &hacks->CanNoclip); + HacksComp_ParseFlag(hacks, "+speed", "-speed", &hacks->CanSpeed); + HacksComp_ParseFlag(hacks, "+respawn", "-respawn", &hacks->CanRespawn); if (hacks->UserType == 0x64) { - HacksComponent_ParseAllFlag(hacks, "+ophax", "-ophax"); + HacksComp_ParseAllFlag(hacks, "+ophax", "-ophax"); } - HacksComponent_ParseHorizontalSpeed(hacks); - HacksComponent_ParseMultiSpeed(hacks); + HacksComp_ParseHorizontalSpeed(hacks); + HacksComp_ParseMultiSpeed(hacks); - HacksComponent_CheckConsistency(hacks); + HacksComp_CheckConsistency(hacks); Event_RaiseVoid(&UserEvents_HackPermissionsChanged); -} \ No newline at end of file +} diff --git a/src/Client/EntityComponents.h b/src/Client/EntityComponents.h index 0ee994c67..bf90cfce1 100644 --- a/src/Client/EntityComponents.h +++ b/src/Client/EntityComponents.h @@ -31,7 +31,6 @@ typedef struct TiltComp_ { Real32 VelTiltStrengthO, VelTiltStrengthN; } TiltComp; - /* Initalises default values for a tilt component. */ void TiltComp_Init(TiltComp* anim); /* Calculates the next tilt animation state. */ @@ -40,7 +39,6 @@ void TiltComp_Update(TiltComp* anim, Real64 delta); void TiltComp_GetCurrent(TiltComp* anim, Real32 t); - /* Entity component that performs management of hack states. */ typedef struct HacksComponent_ { UInt8 UserType; @@ -101,23 +99,18 @@ typedef struct HacksComponent_ { } HacksComp; /* Initalises the state of this HacksComponent. */ -void HacksComponent_Init(HacksComp* hacks); - +void HacksComp_Init(HacksComp* hacks); /* Returns whether hacks flags allow for jumping higher usage. */ -bool HacksComponent_CanJumpHigher(HacksComp* hacks); - +bool HacksComp_CanJumpHigher(HacksComp* hacks); /* Returns whether noclip or flying modes are on.*/ -bool HacksComponent_Floating(HacksComp* hacks); - +bool HacksComp_Floating(HacksComp* hacks); /* Sets the user type of this user. This is used to control permissions for grass, bedrock, water and lava blocks on servers that don't support CPE block permissions. */ -void HacksComponent_SetUserType(HacksComp* hacks, UInt8 value); - +void HacksComp_SetUserType(HacksComp* hacks, UInt8 value); /* Disables any hacks if their respective CanHackX value is set to false. */ -void HacksComponent_CheckConsistency(HacksComp* hacks); - +void HacksComp_CheckConsistency(HacksComp* hacks); /* Updates ability to use hacks, and raises UserEvents_HackPermissionsChanged event. Parses hack flags specified in the motd and/or name of the server. Recognises +/-hax, +/-fly, +/-noclip, +/-speed, +/-respawn, +/-ophax, and horspeed=xyz */ -void HacksComponent_UpdateState(HacksComp* hacks); +void HacksComp_UpdateState(HacksComp* hacks); #endif \ No newline at end of file diff --git a/src/Client/FrustumCulling.c b/src/Client/FrustumCulling.c index 269f57cd4..734572a5c 100644 --- a/src/Client/FrustumCulling.c +++ b/src/Client/FrustumCulling.c @@ -21,7 +21,7 @@ void FrustumCulling_Normalise(Real32* plane0, Real32* plane1, Real32* plane2, Re } bool FrustumCulling_SphereInFrustum(Real32 x, Real32 y, Real32 z, Real32 radius) { - float d = frustum00 * x + frustum01 * y + frustum02 * z + frustum03; + Real32 d = frustum00 * x + frustum01 * y + frustum02 * z + frustum03; if (d <= -radius) return false; d = frustum10 * x + frustum11 * y + frustum12 * z + frustum13; diff --git a/src/Client/Funcs.h b/src/Client/Funcs.h index ca4f04c57..f19dd2a60 100644 --- a/src/Client/Funcs.h +++ b/src/Client/Funcs.h @@ -8,16 +8,15 @@ /* returns a bit mask for the nth bit in an integer */ #define bit(x) (1 << x) - /* returns smallest of two numbers */ #define min(x, y) ((x) < (y) ? (x) : (y)) - /* returns largest of two numbers */ #define max(x, y) ((x) > (y) ? (x) : (y)) +/* returns number of elements in given array. */ +#define Array_NumElements(arr) (sizeof(arr) / sizeof(arr[0])) /* returns whether character is uppercase letter */ bool Char_IsUpper(UInt8 c); - /* Converts uppercase letter to lowercase */ UInt8 Char_ToLower(UInt8 c); #endif \ No newline at end of file diff --git a/src/Client/MapGenerator.c b/src/Client/MapGenerator.c index f5c5e3c5c..909ed9288 100644 --- a/src/Client/MapGenerator.c +++ b/src/Client/MapGenerator.c @@ -284,7 +284,7 @@ void NotchyGen_FloodFillLava(void) { Int32 i; for (i = 0; i < numSources; i++) { - Gen_CurrentProgress = (float)i / numSources; + Gen_CurrentProgress = (Real32)i / numSources; Int32 x = Random_Next(&rnd, Gen_Width); Int32 z = Random_Next(&rnd, Gen_Length); Int32 y = (Int32)((waterLevel - 3) * Random_Float(&rnd) * Random_Float(&rnd)); diff --git a/src/Client/Matrix.c b/src/Client/Matrix.c index a5cc77d14..86dff0589 100644 --- a/src/Client/Matrix.c +++ b/src/Client/Matrix.c @@ -122,9 +122,9 @@ void Matrix_PerspectiveOffCenter(Matrix* result, Real32 left, Real32 right, Real void Matrix_LookAt(Matrix* result, Vector3 eye, Vector3 target, Vector3 up) { /* Transposed, sourced from https://msdn.microsoft.com/en-us/library/windows/desktop/bb281711(v=vs.85).aspx */ Vector3 x, y, z; - Vector3_Sub(&z, &eye, &target); Vector3_Normalize(&z, &z); - Vector3_Cross(&x, &up, &z); Vector3_Normalize(&x, &x); - Vector3_Cross(&y, &z, &x); Vector3_Normalize(&y, &y); + Vector3_Subtract(&z, &eye, &target); Vector3_Normalize(&z, &z); + Vector3_Cross(&x, &up, &z); Vector3_Normalize(&x, &x); + Vector3_Cross(&y, &z, &x); Vector3_Normalize(&y, &y); result->Row0.X = x.X; result->Row0.Y = y.X; result->Row0.Z = z.X; result->Row0.W = 0.0f; result->Row1.X = x.Y; result->Row1.Y = y.Y; result->Row1.Z = z.Y; result->Row1.W = 0.0f;