From aede204b4040a254dd4d75d7ce5f1ea8032f1b94 Mon Sep 17 00:00:00 2001 From: Halit Aksoy Date: Sun, 15 May 2022 01:58:57 +0300 Subject: [PATCH] refactor : theme, add ThemeManager --- src/context.tsx | 45 ++++++++++++++++++++++----------------- src/theme/DefaultTheme.ts | 18 ++++++++++++++++ src/theme/Theme.ts | 14 ++++++++++++ src/theme/ThemeManager.ts | 18 ++++++++++++++++ 4 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 src/theme/DefaultTheme.ts create mode 100644 src/theme/Theme.ts create mode 100644 src/theme/ThemeManager.ts diff --git a/src/context.tsx b/src/context.tsx index 3a51286..140c840 100644 --- a/src/context.tsx +++ b/src/context.tsx @@ -1,23 +1,28 @@ -import { Texts, TrTr } from "./const/texts" -import { RTMT } from "./rtmt/rtmt" -import { RTMTWS } from "./rtmt/rtmt_websocket" -import { UserKeyStore, UserKeyStoreImpl } from "./store/key_store" +import { Texts, TrTr } from "./const/texts"; +import { RTMT } from "./rtmt/rtmt"; +import { RTMTWS } from "./rtmt/rtmt_websocket"; +import { UserKeyStore, UserKeyStoreImpl } from "./store/key_store"; +import defaultTheme from "./theme/DefaultTheme"; +import ThemeManager from "./theme/ThemeManager"; -type Context = { - rtmt : RTMT - userKeyStore : UserKeyStore - texts : Texts -} +export type Context = { + rtmt: RTMT; + userKeyStore: UserKeyStore; + texts: Texts; + themeManager: ThemeManager; +}; -export const initContext = ()=> { - const rtmt = new RTMTWS() - const userKeyStore = new UserKeyStoreImpl() - const texts = TrTr - return { - rtmt : rtmt, - userKeyStore : userKeyStore, - texts : texts, - } -} +export const initContext = () => { + const rtmt = new RTMTWS(); + const userKeyStore = new UserKeyStoreImpl(); + const texts = TrTr; + const themeManager = new ThemeManager(defaultTheme); + return { + rtmt: rtmt, + userKeyStore: userKeyStore, + texts: texts, + themeManager, + }; +}; -export const context : Context = initContext() +export const context: Context = initContext(); diff --git a/src/theme/DefaultTheme.ts b/src/theme/DefaultTheme.ts new file mode 100644 index 0000000..48b45ae --- /dev/null +++ b/src/theme/DefaultTheme.ts @@ -0,0 +1,18 @@ +import { Theme } from "./Theme"; + +const defaultTheme: Theme = { + background: "#EEEEEE", + boardColor: "#4D606E", + boardColorWhenPlayerTurn: "#84b8a6", + storeColor: "#3FBAC2", + storeColorWhenPlayerTurn: "#6cab94", + holeColor: "#D3D4D8", + ballColor: "#393E46", + ballLightColor: "#393E46", + pitGameMoveAnimateColor: "#5f94c2", + pitEmptyPitAnimateColor: "#5d7322", + pitLastStoneInBankPitAnimateColor: "#79708c", + pitGetRivalStonePitAnimateColor: "#ff3d44", +}; + +export default defaultTheme; diff --git a/src/theme/Theme.ts b/src/theme/Theme.ts new file mode 100644 index 0000000..3434c11 --- /dev/null +++ b/src/theme/Theme.ts @@ -0,0 +1,14 @@ +export type Theme = { + background: string; + boardColor: string; + boardColorWhenPlayerTurn: string; + storeColor: string; + storeColorWhenPlayerTurn: string; + holeColor: string; + ballColor: string; + ballLightColor: string; + pitGameMoveAnimateColor: string; + pitEmptyPitAnimateColor: string; + pitLastStoneInBankPitAnimateColor: string; + pitGetRivalStonePitAnimateColor: string; +}; diff --git a/src/theme/ThemeManager.ts b/src/theme/ThemeManager.ts new file mode 100644 index 0000000..8d391aa --- /dev/null +++ b/src/theme/ThemeManager.ts @@ -0,0 +1,18 @@ +import { Theme } from "./Theme"; + +export default class ThemeManager { + _theme: Theme; + onThemeChange: (theme: Theme) => void; + constructor(theme: Theme) { + this._theme = theme; + } + + public get theme() { + return this._theme; + } + + public set theme(value) { + this._theme = value; + this.onThemeChange?.(value); + } +}