Fixed wall snapping not respecting grid snap (#541)

Not that great for maps where the mapper did a shitty grid setup. Use cursor position setup for those.
This commit is contained in:
shavit 2017-12-10 00:04:27 +02:00
parent 697fa9c5e7
commit a64b07d031
2 changed files with 13 additions and 24 deletions

View File

@ -346,6 +346,11 @@ public Action Timer_PrintToChat(Handle Timer)
int timeleft = 0; int timeleft = 0;
GetMapTimeLeft(timeleft); GetMapTimeLeft(timeleft);
if(timeleft <= -1 || timeleft >= -3)
{
Shavit_StopChatSound();
}
switch(timeleft) switch(timeleft)
{ {
case 3600: Shavit_PrintToChatAll("%T", "Minutes", LANG_SERVER, "60"); case 3600: Shavit_PrintToChatAll("%T", "Minutes", LANG_SERVER, "60");
@ -360,26 +365,23 @@ public Action Timer_PrintToChat(Handle Timer)
case -1: case -1:
{ {
Shavit_StopChatSound();
Shavit_PrintToChatAll("3.."); Shavit_PrintToChatAll("3..");
} }
case -2: case -2:
{ {
Shavit_StopChatSound();
Shavit_PrintToChatAll("2.."); Shavit_PrintToChatAll("2..");
} }
case -3: case -3:
{ {
Shavit_StopChatSound();
Shavit_PrintToChatAll("1.."); Shavit_PrintToChatAll("1..");
} }
}
case -4:
if(timeleft == -4) {
{ CS_TerminateRound(0.0, CSRoundEnd_Draw, true);
CS_TerminateRound(0.0, CSRoundEnd_Draw, true); }
} }
return Plugin_Continue; return Plugin_Continue;

View File

@ -80,7 +80,6 @@ bool gB_CursorTracing[MAXPLAYERS+1];
float gV_Point1[MAXPLAYERS+1][3]; float gV_Point1[MAXPLAYERS+1][3];
float gV_Point2[MAXPLAYERS+1][3]; float gV_Point2[MAXPLAYERS+1][3];
float gV_Teleport[MAXPLAYERS+1][3]; float gV_Teleport[MAXPLAYERS+1][3];
float gV_OldPosition[MAXPLAYERS+1][3];
float gV_WallSnap[MAXPLAYERS+1][3]; float gV_WallSnap[MAXPLAYERS+1][3];
bool gB_Button[MAXPLAYERS+1]; bool gB_Button[MAXPLAYERS+1];
bool gB_InsideZone[MAXPLAYERS+1][ZONETYPES_SIZE][TRACKS_SIZE]; bool gB_InsideZone[MAXPLAYERS+1][ZONETYPES_SIZE][TRACKS_SIZE];
@ -1290,7 +1289,6 @@ void Reset(int client)
gV_Point1[client][i] = 0.0; gV_Point1[client][i] = 0.0;
gV_Point2[client][i] = 0.0; gV_Point2[client][i] = 0.0;
gV_Teleport[client][i] = 0.0; gV_Teleport[client][i] = 0.0;
gV_OldPosition[client][i] = 0.0;
gV_WallSnap[client][i] = 0.0; gV_WallSnap[client][i] = 0.0;
} }
} }
@ -1395,13 +1393,6 @@ public int ZoneCreation_Handler(Menu menu, MenuAction action, int param1, int pa
bool SnapToWall(float pos[3], int client, float final[3]) bool SnapToWall(float pos[3], int client, float final[3])
{ {
if(AreVectorsEqual(pos, gV_OldPosition[client]))
{
final = gV_WallSnap[client];
return true;
}
bool hit = false; bool hit = false;
float end[3]; float end[3];
@ -1429,6 +1420,9 @@ bool SnapToWall(float pos[3], int client, float final[3])
if(hit && GetVectorDistance(prefinal, pos) <= gI_GridSnap[client]) if(hit && GetVectorDistance(prefinal, pos) <= gI_GridSnap[client])
{ {
prefinal[0] = float(RoundToNearest(prefinal[0] / gI_GridSnap[client]) * gI_GridSnap[client]);
prefinal[1] = float(RoundToNearest(prefinal[1] / gI_GridSnap[client]) * gI_GridSnap[client]);
final = prefinal; final = prefinal;
return true; return true;
@ -1475,11 +1469,6 @@ public bool TraceFilter_World(int entity, int contentsMask)
return (entity == 0); return (entity == 0);
} }
bool AreVectorsEqual(float vec1[3], float vec2[3])
{
return (vec1[0] == vec2[0] && vec1[1] == vec2[1] && vec1[2] == vec2[2]);
}
public Action Shavit_OnUserCmdPre(int client, int &buttons, int &impulse, float vel[3], float angles[3], TimerStatus status) public Action Shavit_OnUserCmdPre(int client, int &buttons, int &impulse, float vel[3], float angles[3], TimerStatus status)
{ {
if(!IsPlayerAlive(client) || IsFakeClient(client)) if(!IsPlayerAlive(client) || IsFakeClient(client))
@ -1512,7 +1501,6 @@ public Action Shavit_OnUserCmdPre(int client, int &buttons, int &impulse, float
else else
{ {
gV_WallSnap[client] = origin; gV_WallSnap[client] = origin;
gV_OldPosition[client] = vPlayerOrigin;
} }
origin[2] = vPlayerOrigin[2]; origin[2] = vPlayerOrigin[2];
@ -1919,7 +1907,6 @@ public Action Timer_Draw(Handle Timer, any data)
else else
{ {
gV_WallSnap[client] = origin; gV_WallSnap[client] = origin;
gV_OldPosition[client] = vPlayerOrigin;
} }
if(gI_MapStep[client] == 1 || gV_Point2[client][0] == 0.0) if(gI_MapStep[client] == 1 || gV_Point2[client][0] == 0.0)