Add authentication server, dev CLI, Docker multi-service setup, and cross-platform improvements

This commit is contained in:
Ilya Groshev
2026-04-21 16:49:44 +03:00
parent 43d6527b42
commit a3fbb1aeba
121 changed files with 4523 additions and 2888 deletions
+8 -38
View File
@@ -46,58 +46,28 @@ type GachaCatalog struct {
ShopFeaturedByMedal map[int32][]ShopFeaturedEntry // consumableId -> paired entries
}
type costumePoolRow struct {
CostumeId int32 `json:"CostumeId"`
CharacterId int32 `json:"CharacterId"`
SkillfulWeaponType int32 `json:"SkillfulWeaponType"`
RarityType int32 `json:"RarityType"`
}
type weaponPoolRow struct {
WeaponId int32 `json:"WeaponId"`
WeaponType int32 `json:"WeaponType"`
RarityType int32 `json:"RarityType"`
IsRestrictDiscard bool `json:"IsRestrictDiscard"`
}
type catalogCostumeRow struct {
CostumeId int32 `json:"CostumeId"`
CatalogTermId int32 `json:"CatalogTermId"`
}
type catalogWeaponRow struct {
WeaponId int32 `json:"WeaponId"`
CatalogTermId int32 `json:"CatalogTermId"`
}
type materialPoolRow struct {
MaterialId int32 `json:"MaterialId"`
MaterialType int32 `json:"MaterialType"`
RarityType int32 `json:"RarityType"`
}
func LoadGachaPool() (*GachaCatalog, error) {
costumes, err := utils.ReadJSON[costumePoolRow]("EntityMCostumeTable.json")
costumes, err := utils.ReadTable[EntityMCostume]("m_costume")
if err != nil {
return nil, fmt.Errorf("load costume table: %w", err)
}
weapons, err := utils.ReadJSON[weaponPoolRow]("EntityMWeaponTable.json")
weapons, err := utils.ReadTable[EntityMWeapon]("m_weapon")
if err != nil {
return nil, fmt.Errorf("load weapon table: %w", err)
}
catalogCostumes, err := utils.ReadJSON[catalogCostumeRow]("EntityMCatalogCostumeTable.json")
catalogCostumes, err := utils.ReadTable[EntityMCatalogCostume]("m_catalog_costume")
if err != nil {
return nil, fmt.Errorf("load catalog costume table: %w", err)
}
catalogWeapons, err := utils.ReadJSON[catalogWeaponRow]("EntityMCatalogWeaponTable.json")
catalogWeapons, err := utils.ReadTable[EntityMCatalogWeapon]("m_catalog_weapon")
if err != nil {
return nil, fmt.Errorf("load catalog weapon table: %w", err)
}
materials, err := utils.ReadJSON[materialPoolRow]("EntityMMaterialTable.json")
materials, err := utils.ReadTable[EntityMMaterial]("m_material")
if err != nil {
return nil, fmt.Errorf("load material table: %w", err)
}
evoGroupRows, err := utils.ReadJSON[WeaponEvolutionGroupRow]("EntityMWeaponEvolutionGroupTable.json")
evoGroupRows, err := utils.ReadTable[EntityMWeaponEvolutionGroup]("m_weapon_evolution_group")
if err != nil {
return nil, fmt.Errorf("load weapon evolution group table: %w", err)
}
@@ -414,8 +384,8 @@ func (pool *GachaCatalog) BuildBannerPools(entries []store.GachaCatalogEntry) {
len(pool.BannerPools), len(allFeaturedCostumes), len(allFeaturedWeapons))
}
func buildEvolvedWeaponSet(rows []WeaponEvolutionGroupRow) map[int32]bool {
grouped := make(map[int32][]WeaponEvolutionGroupRow)
func buildEvolvedWeaponSet(rows []EntityMWeaponEvolutionGroup) map[int32]bool {
grouped := make(map[int32][]EntityMWeaponEvolutionGroup)
for _, r := range rows {
grouped[r.WeaponEvolutionGroupId] = append(grouped[r.WeaponEvolutionGroupId], r)
}