From 10b2ddcfd722f606b1634f00e8f1aa1dd8c6beef Mon Sep 17 00:00:00 2001 From: wish Date: Wed, 9 Nov 2022 23:50:40 +1100 Subject: [PATCH] map language to server instead of session --- config/config.go | 1 + patch-schema/language.sql | 6 ------ server/channelserver/handlers.go | 1 - server/channelserver/handlers_cafe.go | 2 +- server/channelserver/handlers_lang.go | 11 ++--------- server/channelserver/sys_channel_server.go | 5 +++++ server/channelserver/sys_session.go | 2 -- 7 files changed, 9 insertions(+), 19 deletions(-) delete mode 100644 patch-schema/language.sql diff --git a/config/config.go b/config/config.go index bfe11032e..202af3543 100644 --- a/config/config.go +++ b/config/config.go @@ -14,6 +14,7 @@ import ( type Config struct { Host string `mapstructure:"Host"` BinPath string `mapstructure:"BinPath"` + Language string DisableSoftCrash bool // Disables the 'Press Return to exit' dialog allowing scripts to reboot the server automatically FeaturedWeapons int // Number of Active Feature weapons to generate daily HideLoginNotice bool // Hide the Erupe notice on login diff --git a/patch-schema/language.sql b/patch-schema/language.sql deleted file mode 100644 index d3440d6e1..000000000 --- a/patch-schema/language.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE IF EXISTS public.users - ADD COLUMN IF NOT EXISTS language text NOT NULL DEFAULT 'en'; - -END; \ No newline at end of file diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index 462a3318e..50039b27c 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -142,7 +142,6 @@ func handleMsgSysLogin(s *Session, p mhfpacket.MHFPacket) { s.token = pkt.LoginTokenString s.Unlock() - s.dict = getLangStrings(s) updateRights(s) bf := byteframe.NewByteFrame() bf.WriteUint32(uint32(Time_Current_Adjusted().Unix())) // Unix timestamp diff --git a/server/channelserver/handlers_cafe.go b/server/channelserver/handlers_cafe.go index e0d967d2a..e1d005840 100644 --- a/server/channelserver/handlers_cafe.go +++ b/server/channelserver/handlers_cafe.go @@ -89,7 +89,7 @@ func handleMsgMhfGetCafeDuration(s *Session, p mhfpacket.MHFPacket) { } bf.WriteUint32(cafeTime) // Total cafe time bf.WriteUint16(0) - ps.Uint16(bf, fmt.Sprintf(s.dict["cafeReset"], int(cafeReset.Month()), cafeReset.Day()), true) + ps.Uint16(bf, fmt.Sprintf(s.server.dict["cafeReset"], int(cafeReset.Month()), cafeReset.Day()), true) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } diff --git a/server/channelserver/handlers_lang.go b/server/channelserver/handlers_lang.go index 5d413ac85..3409225ca 100644 --- a/server/channelserver/handlers_lang.go +++ b/server/channelserver/handlers_lang.go @@ -1,15 +1,8 @@ package channelserver -import "go.uber.org/zap" - -func getLangStrings(s *Session) map[string]string { - var lang string +func getLangStrings(s *Server) map[string]string { strings := make(map[string]string) - err := s.server.db.QueryRow(`SELECT language FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id`, s.charID).Scan(&lang) - if err != nil { - s.logger.Warn("No language set for user", zap.Uint32("CID", s.charID)) - } - switch lang { + switch s.erupeConfig.Language { case "jp": strings["language"] = "日本語" strings["cafeReset"] = "%d/%dにリセット" diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index 82f29d03a..3fdcc4861 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -52,6 +52,9 @@ type Server struct { stagesLock sync.RWMutex stages map[string]*Stage + // Used to map different languages + dict map[string]string + // UserBinary userBinaryPartsLock sync.RWMutex userBinaryParts map[userBinaryPartID][]byte @@ -164,6 +167,8 @@ func NewServer(config *Config) *Server { // MezFes s.stages["sl1Ns462p0a0u0"] = NewStage("sl1Ns462p0a0u0") + s.dict = getLangStrings(s) + return s } diff --git a/server/channelserver/sys_session.go b/server/channelserver/sys_session.go index 669f820c1..39a96f40f 100644 --- a/server/channelserver/sys_session.go +++ b/server/channelserver/sys_session.go @@ -47,8 +47,6 @@ type Session struct { kqf []byte kqfOverride bool - dict map[string]string - semaphore *Semaphore // Required for the stateful MsgSysUnreserveStage packet. // A stack containing the stage movement history (push on enter/move, pop on back)