diff options
| author | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
|---|---|---|
| committer | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
| commit | 5e2eb7d67ae933b7566f1944d0bb7744da03d586 (patch) | |
| tree | 054acff1113270a9cd07933df760f3768c1b6853 /sourcemod/scripting/gokz-core/map/starts.sp | |
| parent | 341db13a008dc12bb22ceb50452d93d01476308c (diff) | |
move source stuff to its own folder
Diffstat (limited to 'sourcemod/scripting/gokz-core/map/starts.sp')
| -rw-r--r-- | sourcemod/scripting/gokz-core/map/starts.sp | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/sourcemod/scripting/gokz-core/map/starts.sp b/sourcemod/scripting/gokz-core/map/starts.sp deleted file mode 100644 index 94d5b33..0000000 --- a/sourcemod/scripting/gokz-core/map/starts.sp +++ /dev/null @@ -1,219 +0,0 @@ -/* - Hooks between start destinations and GOKZ. -*/ - - - -static Regex RE_BonusStart; -static bool startExists[GOKZ_MAX_COURSES]; -static float startOrigin[GOKZ_MAX_COURSES][3]; -static float startAngles[GOKZ_MAX_COURSES][3]; - -// Used for SearchStart -static Regex RE_BonusStartButton; -static Regex RE_BonusStartZone; -static CourseTimerType startType[GOKZ_MAX_COURSES]; -static float searchStartOrigin[GOKZ_MAX_COURSES][3]; -static float searchStartAngles[GOKZ_MAX_COURSES][3]; - -// =====[ EVENTS ]===== - -void OnPluginStart_MapStarts() -{ - RE_BonusStart = CompileRegex(GOKZ_BONUS_START_NAME_REGEX); - RE_BonusStartButton = CompileRegex(GOKZ_BONUS_START_BUTTON_NAME_REGEX); - RE_BonusStartZone = CompileRegex(GOKZ_BONUS_START_ZONE_NAME_REGEX); -} - -void OnEntitySpawned_MapStarts(int entity) -{ - char buffer[32]; - - GetEntityClassname(entity, buffer, sizeof(buffer)); - if (!StrEqual("info_teleport_destination", buffer, false)) - { - return; - } - - if (GetEntityName(entity, buffer, sizeof(buffer)) == 0) - { - return; - } - - if (StrEqual(GOKZ_START_NAME, buffer, false)) - { - StoreStart(0, entity); - } - else - { - int course = GetStartBonusNumber(entity); - if (GOKZ_IsValidCourse(course, true)) - { - StoreStart(course, entity); - } - } -} - -void OnEntitySpawnedPost_MapStarts(int entity) -{ - char buffer[32]; - GetEntityClassname(entity, buffer, sizeof(buffer)); - - if (StrEqual("trigger_multiple", buffer, false)) - { - bool isStartZone; - if (GetEntityName(entity, buffer, sizeof(buffer)) != 0) - { - if (StrEqual(GOKZ_START_ZONE_NAME, buffer, false)) - { - isStartZone = true; - StoreSearchStart(0, entity, CourseTimerType_ZoneNew); - } - else if (GetStartZoneBonusNumber(entity) != -1) - { - int course = GetStartZoneBonusNumber(entity); - if (GOKZ_IsValidCourse(course, true)) - { - isStartZone = true; - StoreSearchStart(course, entity, CourseTimerType_ZoneNew); - } - } - } - if (!isStartZone) - { - TimerButtonTrigger trigger; - if (IsTimerButtonTrigger(entity, trigger) && trigger.isStartTimer) - { - StoreSearchStart(trigger.course, entity, CourseTimerType_ZoneLegacy); - } - } - - } - else if (StrEqual("func_button", buffer, false)) - { - bool isStartButton; - if (GetEntityName(entity, buffer, sizeof(buffer)) != 0) - { - if (StrEqual(GOKZ_START_BUTTON_NAME, buffer, false)) - { - isStartButton = true; - StoreSearchStart(0, entity, CourseTimerType_Button); - } - else - { - int course = GetStartButtonBonusNumber(entity); - if (GOKZ_IsValidCourse(course, true)) - { - isStartButton = true; - StoreSearchStart(course, entity, CourseTimerType_Button); - } - } - } - if (!isStartButton) - { - TimerButtonTrigger trigger; - if (IsTimerButtonTrigger(entity, trigger) && trigger.isStartTimer) - { - StoreSearchStart(trigger.course, entity, CourseTimerType_Button); - } - } - } -} - -void OnMapStart_MapStarts() -{ - for (int course = 0; course < GOKZ_MAX_COURSES; course++) - { - startExists[course] = false; - startType[course] = CourseTimerType_None; - } -} - -bool GetMapStartPosition(int course, float origin[3], float angles[3]) -{ - if (!startExists[course]) - { - return false; - } - - origin = startOrigin[course]; - angles = startAngles[course]; - - return true; -} - -bool GetSearchStartPosition(int course, float origin[3], float angles[3]) -{ - if (startType[course] == CourseTimerType_None) - { - return false; - } - - origin = searchStartOrigin[course]; - angles = searchStartAngles[course]; - - return true; -} - -// =====[ PRIVATE ]===== - -static void StoreStart(int course, int entity) -{ - float origin[3], angles[3]; - GetEntPropVector(entity, Prop_Send, "m_vecOrigin", origin); - GetEntPropVector(entity, Prop_Data, "m_angRotation", angles); - angles[2] = 0.0; // Roll should always be 0.0 - - startExists[course] = true; - startOrigin[course] = origin; - startAngles[course] = angles; -} - -static void StoreSearchStart(int course, int entity, CourseTimerType type) -{ - // If StoreSearchStart is called, then there is at least an end position (even though it might not be a valid one) - if (startType[course] < CourseTimerType_Default) - { - startType[course] = CourseTimerType_Default; - } - - // Real zone is always better than "fake" zones which are better than buttons - // as the buttons found in a map with fake zones aren't meant to be visible. - if (startType[course] >= type) - { - return; - } - - float origin[3], distFromCenter[3]; - GetEntityPositions(entity, origin, searchStartOrigin[course], searchStartAngles[course], distFromCenter); - - // If it is a button or the center of the center of the zone is invalid - if (type == CourseTimerType_Button || !IsSpawnValid(searchStartOrigin[course])) - { - // Attempt with various positions around the entity, pick the first valid one. - if (!FindValidPositionAroundTimerEntity(entity, searchStartOrigin[course], searchStartAngles[course], type == CourseTimerType_Button)) - { - searchStartOrigin[course][2] -= 64.0; // Move the origin down so the eye position is directly on top of the button/zone. - return; - } - } - - // Only update the CourseTimerType if a valid position is found. - startType[course] = type; -} - - -static int GetStartBonusNumber(int entity) -{ - return GOKZ_MatchIntFromEntityName(entity, RE_BonusStart, 1); -} - -static int GetStartButtonBonusNumber(int entity) -{ - return GOKZ_MatchIntFromEntityName(entity, RE_BonusStartButton, 1); -} - -static int GetStartZoneBonusNumber(int entity) -{ - return GOKZ_MatchIntFromEntityName(entity, RE_BonusStartZone, 1); -}
\ No newline at end of file |
