Skip to content

Commit

Permalink
feat: #81 #102 Move Rank to kg-common and convert it to Kotlin. N…
Browse files Browse the repository at this point in the history
…o more dependencies from `kgstats-srv` to `kgparser-srv`!!!
  • Loading branch information
dmitry-weirdo committed Nov 25, 2024
1 parent 013f49c commit bbea121
Show file tree
Hide file tree
Showing 28 changed files with 158 additions and 159 deletions.
131 changes: 131 additions & 0 deletions kgCommon/src/main/kotlin/ru/klavogonki/common/Rank.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package ru.klavogonki.common

/**
* Ранг игрока. Различается в зависимости от рекорда в обычном режиме.
*/
@Suppress("MagicNumber")
enum class Rank(

/**
* Имя в API клавогонок. Все буквы в нижнем регистре.
*
* // todo: на самом деле, в API Клавогонок нет таких буквенных обозначений, только числовой код ранга.
*/
@Suppress("unused")
@JvmField val klavogonkiName: String,

/**
* Числовой код ранга (level).
*/
@JvmField val level: Int,

/**
* Русское название ранга для отображения.
*/
@JvmField val displayName: String,

/**
* Цвет на КГ, соответствующий рангу, в форме "#00FF02".
*/
@JvmField val color: String
) {
/**
* Новичок. Рекорд < 100.
*/
novice("novice", 1, "Новичок", "#8D8D8D"),

/**
* Любитель. Рекорд от 100 до 199.
*/
amateur("amateur", 2, "Любитель", "#4F9A97"),

/**
* Таксист. Рекорд от 200 до 299.
*/
cabman("cabman", 3, "Таксист", "#187818"),

/**
* Профи. Рекорд от 300 до 399.
*/
pro("pro", 4, "Профи", "#8C8100"),

/**
* Гонщик. Рекорд от 400 до 499.
*/
racer("racer", 5, "Гонщик", "#BA5800"),

/**
* Маньяк. Рекорд от 500 до 599.
*/
maniac("maniac", 6, "Маньяк", "#BC0143"),

/**
* Супермен. Рекорд от 600 до 699.
*/
superman("superman", 7, "Супермен", "#5E0B9E"),

/**
* Кибергонщик. Рекорд от 700 до 799.
*/
cyberracer("cyberracer", 8, "Кибергонщик", "#00037C"),

/**
* Экстракибер. Рекорд >= 800.
*/
extracyber("extracyber", 9, "Экстракибер", "#061956"),
;

companion object {
/**
* @param normalRecord рекорд в [режиме "Обычный"][StandardDictionary.normal]
* @return ранг, соответствующий указанному рекорду
*/
@JvmStatic
@Suppress("MagicNumber", "ReturnCount")
fun getRankByNormalRecord(normalRecord: Int): Rank {
if (normalRecord < 100) return novice

if (normalRecord < 200) return amateur

if (normalRecord < 300) return cabman

if (normalRecord < 400) return pro

if (normalRecord < 500) return racer

if (normalRecord < 600) return maniac

if (normalRecord < 700) return superman

if (normalRecord < 800) return cyberracer

return extracyber // рекорд в обычном >= 700 -> экстракибер
}

@JvmStatic
fun getDisplayName(level: Int): String {
return getRank(level).displayName
}

/**
* @param level числовой код ранга
* @return ранг с указанным числовым кодом
*/
@JvmStatic
fun getRank(level: Int): Rank {
return entries
.firstOrNull { it.level == level }
?: throw IllegalArgumentException("Incorrect rank level: $level.")
}

/**
* Цвет игрока-гостя.
*/
const val GUEST_COLOR: String = "#222222"

/**
* У клавомехаников свойство `title` заполнено словом "Клавомеханик", а не названием ранга.
*/
const val KLAVO_MECHANIC_TITLE: String = "Клавомеханик"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.klavogonki.common.Rank;
import ru.klavogonki.common.StandardDictionary;
import ru.klavogonki.kgparser.http.HttpClientTest;
import su.opencode.kefir.srv.json.Json;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.klavogonki.kgparser;

import ru.klavogonki.common.Rank;
import ru.klavogonki.common.UrlConstructor;
import su.opencode.kefir.srv.json.Json;
import su.opencode.kefir.srv.json.JsonObject;
Expand Down
137 changes: 0 additions & 137 deletions kgparserSrv/src/main/java/ru/klavogonki/kgparser/Rank.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ru.klavogonki.kgparser;

import ru.klavogonki.common.Rank;

import java.util.Comparator;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.klavogonki.kgparser;

import ru.klavogonki.common.Rank;
import su.opencode.kefir.srv.json.JsonObject;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.json.JSONArray;
import org.json.JSONObject;
import ru.klavogonki.common.Rank;
import ru.klavogonki.kgparser.Competition;
import ru.klavogonki.kgparser.Dictionary;
import ru.klavogonki.kgparser.Player;
import ru.klavogonki.kgparser.PlayerRoundResult;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.kgparser.Round;
import su.opencode.kefir.util.DateUtils;
import su.opencode.kefir.util.FileUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.json.JSONObject;
import ru.klavogonki.common.Rank;
import ru.klavogonki.common.StandardDictionary;
import ru.klavogonki.common.UrlConstructor;
import ru.klavogonki.kgparser.Rank;
import su.opencode.kefir.util.JsonUtils;
import su.opencode.kefir.util.ObjectUtils;
import su.opencode.kefir.util.StringUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.klavogonki.common.Rank;
import ru.klavogonki.kgparser.Competition;
import ru.klavogonki.kgparser.Player;
import ru.klavogonki.kgparser.PlayerRoundResult;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.kgparser.RankDto;
import ru.klavogonki.kgparser.Round;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.klavogonki.common.Rank;
import ru.klavogonki.kgparser.Competition;
import ru.klavogonki.kgparser.Player;
import ru.klavogonki.kgparser.PlayerRoundResult;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.kgparser.RankDto;
import ru.klavogonki.kgparser.Round;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.klavogonki.kgparser.servlet.model.basic_info;

import ru.klavogonki.common.Rank;
import ru.klavogonki.kgparser.Player;
import ru.klavogonki.kgparser.Rank;
import su.opencode.kefir.srv.json.JsonObject;

import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import ru.klavogonki.common.Car;
import ru.klavogonki.common.DictionaryMode;
import ru.klavogonki.common.DictionaryUtils;
import ru.klavogonki.common.Rank;
import ru.klavogonki.common.StandardDictionary;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.openapi.model.GetIndexDataResponse;
import ru.klavogonki.openapi.model.GetIndexDataStats;
import ru.klavogonki.openapi.model.GetStatsOverviewGameType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.klavogonki.statistics.dto;

import lombok.Data;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.common.Rank;
import ru.klavogonki.statistics.excel.data.ExcelExportContextData;
import ru.klavogonki.statistics.excel.data.OrderNumberExcelData;
import ru.klavogonki.statistics.freemarker.OrderUtils;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.klavogonki.statistics.dto;

import lombok.Data;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.common.Rank;
import ru.klavogonki.statistics.excel.data.ExcelExportContextData;
import ru.klavogonki.statistics.excel.data.OrderNumberExcelData;
import ru.klavogonki.statistics.freemarker.OrderUtils;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.klavogonki.statistics.dto;

import lombok.Data;
import ru.klavogonki.kgparser.Rank;
import ru.klavogonki.common.Rank;

@Data
public class PlayersByRankCount {
Expand Down
Loading

0 comments on commit bbea121

Please sign in to comment.