student 2 weeks ago
parent
commit
26782994ff

+ 71 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Controllers/GameController.cs

@@ -24,13 +24,16 @@ namespace Kitty_Fall.Website.Controllers
                 var apiResult = await SendGameApiAsync(request, UrlConstant.GameStartSessionUrl);
                 if (apiResult.errorCode == "0" && apiResult.data != null)
                 {
+                    var maxLevel = await GetTodayMaxLevelAsync(request);
+
                     return Json(new
                     {
                         success = true,
                         point = apiResult.data.point,
                         data = apiResult.data.data,
                         score = apiResult.data.score,
-                        transId = apiResult.data.transId
+                        transId = apiResult.data.transId,
+                        max_level = maxLevel
                     });
                 }
 
@@ -161,6 +164,73 @@ namespace Kitty_Fall.Website.Controllers
             return new UserGameLevelResultRes(response.data);
         }
 
+        private async Task<int> GetTodayMaxLevelAsync(UserGameLevelResultReq request)
+        {
+            const int defaultLevel = 1;
+
+            try
+            {
+                var baseUrl = GetParameter("url");
+                var apiToken = HttpContext.Session.GetString("apiToken") ?? request.token ?? "";
+                var msisdn = HttpContext.Session.GetComplexData<string>("msisdn") ?? request.msisdn ?? "";
+                var language = GetCurrentLanguage();
+
+                if (string.IsNullOrWhiteSpace(baseUrl)
+                    || string.IsNullOrWhiteSpace(apiToken)
+                    || string.IsNullOrWhiteSpace(msisdn)
+                    || string.IsNullOrWhiteSpace(request.gameType))
+                {
+                    return defaultLevel;
+                }
+
+                var today = DateTime.Today.ToString("yyyy-MM-dd");
+                var historyRequest = new UserGameActivityHistoryReq
+                {
+                    msisdn = msisdn,
+                    language = language,
+                    fromDate = today,
+                    toDate = today,
+                    pageNumber = 1,
+                    pageSize = 1000
+                };
+
+                var postTask = DotnetLib.Rest.RestHandler.SendPostWithAuthen(
+                    log,
+                    baseUrl + UrlConstant.GameActivityHistoryUrl,
+                    historyRequest,
+                    apiToken,
+                    "",
+                    "",
+                    language);
+
+                if (postTask == null)
+                    return defaultLevel;
+
+                var response = await postTask;
+                if (response?.data == null)
+                    return defaultLevel;
+
+                var history = new UserGameActivityHistoryRes(response.data).data;
+                if (history?.items == null)
+                    return defaultLevel;
+
+                var maxLevel = history.items
+                    .Where(item =>
+                        string.Equals(item.modeCode, request.gameType, StringComparison.OrdinalIgnoreCase)
+                        || string.Equals(item.modeName, request.gameType, StringComparison.OrdinalIgnoreCase))
+                    .Select(item => item.levelNo)
+                    .DefaultIfEmpty(defaultLevel)
+                    .Max();
+
+                return Math.Clamp(maxLevel, defaultLevel, 50);
+            }
+            catch (Exception ex)
+            {
+                log.Warn("GetTodayMaxLevel failed; using level 1.", ex);
+                return defaultLevel;
+            }
+        }
+
         private string GetParameter(string key)
         {
             return _configuration.GetSection(key).Value

+ 218 - 198
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Language/Lang.vi.resx

@@ -118,547 +118,547 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <data name="Home" xml:space="preserve">
-    <value>ကုမ္ပဏီအကြောင်း</value>
+    <value>အိမ်</value>
   </data>
   <data name="History" xml:space="preserve">
-    <value>လက်ခံပြီး</value>
+    <value>သမိုင်း</value>
   </data>
   <data name="WinnerList" xml:space="preserve">
-    <value>Winner List</value>
+    <value>အနိုင်ရသူစာရင်း</value>
   </data>
   <data name="Leaderboard" xml:space="preserve">
-    <value>Leaderboard</value>
+    <value>ဦးဆောင်သူစာရင်း</value>
   </data>
   <data name="Guide" xml:space="preserve">
-    <value>Guide</value>
+    <value>လမ်းညွှန်</value>
   </data>
   <data name="Points" xml:space="preserve">
-    <value>Points</value>
+    <value>အမှတ်များ</value>
   </data>
   <data name="PlayTurns" xml:space="preserve">
-    <value>Play Turns</value>
+    <value>အလှည့်အပြောင်းများ ကစားပါ</value>
   </data>
   <data name="DailyPackage" xml:space="preserve">
-    <value>Daily Package</value>
+    <value>နေ့စဉ်ပက်ကေ့ဂျ်</value>
   </data>
   <data name="GetFiveTurnsEveryDay" xml:space="preserve">
-    <value>Get 5 Turns every day!</value>
+    <value>နေ့စဉ် ၅ လှည့် ရယူလိုက်ပါ။</value>
   </data>
   <data name="SubscriptionAutoRenewDaily" xml:space="preserve">
-    <value>Subscription auto renew daily</value>
+    <value>စာရင်းသွင်းမှုကို နေ့စဉ် အလိုအလျောက် သက်တမ်းတိုးပါ</value>
   </data>
   <data name="SubscribeNow" xml:space="preserve">
-    <value>Subscribe now</value>
+    <value>ယခုပဲ စာရင်းသွင်းလိုက်ပါ</value>
   </data>
   <data name="BuyTurn" xml:space="preserve">
-    <value>Buy Turn</value>
+    <value>ဝယ်လှည့်</value>
   </data>
   <data name="SelectTurnPackage" xml:space="preserve">
-    <value>Select a turn package</value>
+    <value>အလှည့်အထုပ်တစ်ခု ရွေးချယ်ပါ</value>
   </data>
   <data name="ConfirmBuyTurn" xml:space="preserve">
-    <value>Confirm Buy Turn</value>
+    <value>ဝယ်ယူမှုအလှည့်ကို အတည်ပြုပါ</value>
   </data>
   <data name="ConfirmBuyTurnQuestion" xml:space="preserve">
-    <value>Do you want to buy this turn package?</value>
+    <value>ဒီ turn package ဝယ်ချင်လား။</value>
   </data>
   <data name="PlayNow" xml:space="preserve">
-    <value>Play now</value>
+    <value>ယခုကစားပါ</value>
   </data>
   <data name="SelectDifficultyLevelAndStartAdventure" xml:space="preserve">
-    <value>Select a difficulty level and start your adventure!</value>
+    <value>အခက်အခဲအဆင့်ကို ရွေးချယ်ပြီး သင့်ရဲ့ စွန့်စားခန်းကို စတင်လိုက်ပါ။</value>
   </data>
   <data name="Easy" xml:space="preserve">
-    <value>Easy</value>
+    <value>လွယ်ကူသော</value>
   </data>
   <data name="Medium" xml:space="preserve">
-    <value>Medium</value>
+    <value>အလယ်အလတ်</value>
   </data>
   <data name="Hard" xml:space="preserve">
-    <value>Hard</value>
+    <value>မာကျောသော</value>
   </data>
   <data name="SuitableForBeginners" xml:space="preserve">
-    <value>Suitable for beginners</value>
+    <value>အစပြုသူများအတွက် သင့်တော်သည်</value>
   </data>
   <data name="FewerObstacles" xml:space="preserve">
-    <value>Fewer obstacles</value>
+    <value>အတားအဆီးနည်းပါးခြင်း</value>
   </data>
   <data name="EasierToCompleteLevels" xml:space="preserve">
-    <value>Easier to complete levels</value>
+    <value>အဆင့်များကို ပြီးမြောက်ရန် ပိုမိုလွယ်ကူသည်</value>
   </data>
   <data name="StandardScoreRewards" xml:space="preserve">
-    <value>Standard score rewards</value>
+    <value>စံရမှတ်ဆုလာဘ်များ</value>
   </data>
   <data name="BalancedChallenge" xml:space="preserve">
-    <value>Balanced challenge</value>
+    <value>ဟန်ချက်ညီသောစိန်ခေါ်မှု</value>
   </data>
   <data name="MoreObstacles" xml:space="preserve">
-    <value>More obstacles</value>
+    <value>အတားအဆီးပိုများ</value>
   </data>
   <data name="RequiresBetterSkills" xml:space="preserve">
-    <value>Requires better skills</value>
+    <value>ပိုကောင်းတဲ့ အရည်အချင်းတွေ လိုအပ်ပါတယ်</value>
   </data>
   <data name="HigherScoreRewards" xml:space="preserve">
-    <value>Higher score rewards</value>
+    <value>ပိုမိုမြင့်မားသောရမှတ်ဆုလာဘ်များ</value>
   </data>
   <data name="ForExperiencedPlayers" xml:space="preserve">
-    <value>For experienced players</value>
+    <value>အတွေ့အကြုံရှိ ကစားသမားများအတွက်</value>
   </data>
   <data name="MostChallengingLevels" xml:space="preserve">
-    <value>Most challenging levels</value>
+    <value>အခက်ခဲဆုံးအဆင့်များ</value>
   </data>
   <data name="MaximumToCompleteLevels" xml:space="preserve">
-    <value>Maximum to complete levels</value>
+    <value>အဆင့်များပြီးမြောက်ရန် အများဆုံး</value>
   </data>
   <data name="ClimbToLeaderboard" xml:space="preserve">
-    <value>Climb to the Leaderboard</value>
+    <value>ဦးဆောင်သူစာရင်းသို့ တက်ပါ</value>
   </data>
   <data name="Rewards" xml:space="preserve">
-    <value>Rewards</value>
+    <value>ဆုလာဘ်များ</value>
   </data>
   <data name="Back" xml:space="preserve">
-    <value>Back</value>
+    <value>နောက်သို့</value>
   </data>
   <data name="PlayGame" xml:space="preserve">
-    <value>Play game</value>
+    <value>ဂိမ်းကစားပါ</value>
   </data>
   <data name="GameDifficultyLevelGuide" xml:space="preserve">
-    <value>Players can choose the game difficulty level: Easy - Normal - Hard.</value>
+    <value>ကစားသမားများသည် ဂိမ်းခက်ခဲမှုအဆင့်ကို ရွေးချယ်နိုင်သည်- လွယ်ကူ - ပုံမှန် - ခက်ခဲ။</value>
   </data>
   <data name="Mode" xml:space="preserve">
-    <value>mode</value>
+    <value>မုဒ်</value>
   </data>
   <data name="ConfirmSubscription" xml:space="preserve">
-    <value>Confirm Subscription</value>
+    <value>စာရင်းသွင်းမှုကို အတည်ပြုပါ</value>
   </data>
   <data name="SubscriptionIntro" xml:space="preserve">
-    <value>Subscribe to the package below and enjoy more turns and rewards!</value>
+    <value>အောက်က package ကို subscribe လုပ်ပြီး အလှည့်အပြောင်းတွေနဲ့ ဆုလာဘ်တွေကို ပိုမိုခံစားလိုက်ပါ။</value>
   </data>
   <data name="MoreTurnsAndMoreFun" xml:space="preserve">
-    <value>More turns and more fun!</value>
+    <value>အလှည့်ပိုများပြီး ပိုပျော်စရာကောင်းတယ်။</value>
   </data>
   <data name="ThisPackageWillBe" xml:space="preserve">
-    <value>This package will be</value>
+    <value>ဒီပက်ကေ့ချ်က ပါမယ်</value>
   </data>
   <data name="AutoRenewedDaily" xml:space="preserve">
-    <value>auto-renewed daily.</value>
+    <value>နေ့စဉ် အလိုအလျောက် သက်တမ်းတိုးသည်။</value>
   </data>
   <data name="Confirm" xml:space="preserve">
-    <value>Confirm</value>
+    <value>အတည်ပြုပါ</value>
   </data>
   <data name="Successful" xml:space="preserve">
-    <value>Successful!</value>
+    <value>အောင်မြင်ပါတယ်!</value>
   </data>
   <data name="SubscriptionSuccessMessage" xml:space="preserve">
-    <value>You have successfully subscribed to the package!</value>
+    <value>သင်သည် ပက်ကေ့ဂျ်ကို အောင်မြင်စွာ စာရင်းသွင်းပြီးပါပြီ။</value>
   </data>
   <data name="TurnsHaveBeenAdded" xml:space="preserve">
-    <value>turns have been added!</value>
+    <value>အလှည့်အပြောင်းတွေ ထည့်လိုက်ပါပြီ!</value>
   </data>
   <data name="EnjoyMoreRewards" xml:space="preserve">
-    <value>Enjoy more rewards and exciting gameplay!</value>
+    <value>ဆုလာဘ်များနှင့် စိတ်လှုပ်ရှားဖွယ်ကောင်းသော ဂိမ်းကစားခြင်းကို ပိုမိုခံစားလိုက်ပါ။</value>
   </data>
   <data name="SubscriptionFailed" xml:space="preserve">
-    <value>Subscription Failed</value>
+    <value>စာရင်းသွင်းမှု မအောင်မြင်ပါ</value>
   </data>
   <data name="SubscriptionFailedTitle" xml:space="preserve">
-    <value>Opps! Something went wrong</value>
+    <value>အိုး! တစ်ခုခု မှားသွားပါပြီ</value>
   </data>
   <data name="SubscriptionFailedCopy" xml:space="preserve">
-    <value>We couldn't complete your subscription.</value>
+    <value>သင့်စာရင်းသွင်းမှုကို ကျွန်ုပ်တို့ အပြီးသတ်၍မရပါ။</value>
   </data>
   <data name="PleaseTryAgain" xml:space="preserve">
-    <value>Please try again.</value>
+    <value>ထပ်ကြိုးစားပါ။</value>
   </data>
   <data name="YourGameActivity" xml:space="preserve">
-    <value>Your game activity</value>
+    <value>သင့်ရဲ့ဂိမ်းလှုပ်ရှားမှု</value>
   </data>
   <data name="Date" xml:space="preserve">
-    <value>Date &amp; Time</value>
+    <value>ရက်စွဲနှင့် အချိန်</value>
   </data>
   <data name="Activity" xml:space="preserve">
-    <value>Activity</value>
+    <value>လှုပ်ရှားမှု</value>
   </data>
   <data name="Detail" xml:space="preserve">
-    <value>Detail</value>
+    <value>အသေးစိတ်</value>
   </data>
   <data name="Prize" xml:space="preserve">
-    <value>Prize</value>
+    <value>ဆု</value>
   </data>
   <data name="HistoryStoredLast30Days" xml:space="preserve">
-    <value>History is stored for last 30 days</value>
+    <value>မှတ်တမ်းကို ပြီးခဲ့သည့် ရက် ၃၀ အတွက် သိမ်းဆည်းထားသည်</value>
   </data>
   <data name="Rank" xml:space="preserve">
-    <value>Rank</value>
+    <value>အဆင့်</value>
   </data>
   <data name="PhoneNumber" xml:space="preserve">
-    <value>Phone number</value>
+    <value>ဖုန်းနံပါတ်</value>
   </data>
   <data name="Score" xml:space="preserve">
-    <value>Score</value>
+    <value>နိုင်ပြီ</value>
   </data>
   <data name="MyRank" xml:space="preserve">
-    <value>My Rank</value>
+    <value>ကျွန်တော့်ရဲ့ အဆင့်</value>
   </data>
   <data name="NoLeaderboardFound" xml:space="preserve">
-    <value>No leaderboard found</value>
+    <value>ဦးဆောင်သူစာရင်း မတွေ့ပါ</value>
   </data>
   <data name="DailyWinnerList" xml:space="preserve">
-    <value>Daily Winner List</value>
+    <value>နေ့စဉ်ဆုရှင်စာရင်း</value>
   </data>
   <data name="DailyWinners" xml:space="preserve">
-    <value>Daily Winners</value>
+    <value>နေ့စဉ်အနိုင်ရရှိသူများ</value>
   </data>
   <data name="MonthlyWinners" xml:space="preserve">
-    <value>Monthly Winners</value>
+    <value>လစဉ်ဆုရရှိသူများ</value>
   </data>
   <data name="MonthlyWinnerList" xml:space="preserve">
-    <value>Monthly Winner List</value>
+    <value>လစဉ်ဆုရှင်စာရင်း</value>
   </data>
   <data name="ViewDailyWinners" xml:space="preserve">
-    <value>View daily winners</value>
+    <value>နေ့စဉ်ဆုရှင်များကိုကြည့်ပါ</value>
   </data>
   <data name="ViewMonthlyWinners" xml:space="preserve">
-    <value>View monthly winners</value>
+    <value>လစဉ်ဆုရှင်များကိုကြည့်ပါ</value>
   </data>
   <data name="DailyWinnersDescription" xml:space="preserve">
-    <value>View lucky winners and rewards received every day.</value>
+    <value>နေ့စဉ်ရရှိသော ကံထူးရှင်များနှင့် ဆုလက်ဆောင်များကို ကြည့်ရှုပါ။</value>
   </data>
   <data name="MonthlyWinnersDescription" xml:space="preserve">
-    <value>View monthly prize winners and special rewards.</value>
+    <value>လစဉ်ဆုရရှိသူများနှင့် အထူးဆုလာဘ်များကို ကြည့်ရှုပါ။</value>
   </data>
   <data name="FirstPrize" xml:space="preserve">
-    <value>First Prize</value>
+    <value>ပထမဆု</value>
   </data>
   <data name="SecondPrize" xml:space="preserve">
-    <value>Second Prize</value>
+    <value>ဒုတိယဆု</value>
   </data>
   <data name="ThirdPrize" xml:space="preserve">
-    <value>Third Prize</value>
+    <value>တတိယဆု</value>
   </data>
   <data name="Hello" xml:space="preserve">
-    <value>Hello!</value>
+    <value>မင်္ဂလာပါ!</value>
   </data>
   <data name="PlayerAvatar" xml:space="preserve">
-    <value>Player avatar</value>
+    <value>ကစားသမား ရုပ်ပုံ</value>
   </data>
   <data name="OpenMenu" xml:space="preserve">
-    <value>Open menu</value>
+    <value>မီနူးဖွင့်ပါ</value>
   </data>
   <data name="SelectDate" xml:space="preserve">
-    <value>Select date</value>
+    <value>ရက်စွဲရွေးချယ်ပါ</value>
   </data>
   <data name="SelectMonth" xml:space="preserve">
-    <value>Select month</value>
+    <value>လကို ရွေးချယ်ပါ</value>
   </data>
   <data name="No" xml:space="preserve">
-    <value>No</value>
+    <value>မဟုတ်ပါ</value>
   </data>
   <data name="Time" xml:space="preserve">
-    <value>Time</value>
+    <value>အချိန်</value>
   </data>
   <data name="NoDailyWinnersFound" xml:space="preserve">
-    <value>No daily winners found</value>
+    <value>နေ့စဉ်အနိုင်ရသူများ မတွေ့ပါ</value>
   </data>
   <data name="NoMonthlyWinnersFound" xml:space="preserve">
-    <value>No monthly winners found</value>
+    <value>လစဉ်ဆုရှင်များ မတွေ့ပါ</value>
   </data>
   <data name="Level" xml:space="preserve">
-    <value>Level</value>
+    <value>အဆင့်</value>
   </data>
   <data name="GuideAriaLabel" xml:space="preserve">
-    <value>Kitty Fall service guide</value>
+    <value>Kitty Fall ဝန်ဆောင်မှုလမ်းညွှန်</value>
   </data>
   <data name="GuideTitle" xml:space="preserve">
-    <value>Proposed Scenario for&lt;br&gt;Kitty Fall Service</value>
+    <value>Kitty Fall ဝန်ဆောင်မှုအတွက် အဆိုပြုထားသော ဇာတ်လမ်း</value>
   </data>
   <data name="GuideServiceIntroduction" xml:space="preserve">
-    <value>Service Introduction</value>
+    <value>ဝန်ဆောင်မှုမိတ်ဆက်</value>
   </data>
   <data name="GuideIntroP1" xml:space="preserve">
-    <value>Kitty Fall is a casual puzzle game designed with simple, easy-to-access gameplay yet offering a high level of challenge. It provides light entertainment while giving players opportunities to earn attractive rewards through a play-earn-redeem mechanism.</value>
+    <value>Kitty Fall သည် ရိုးရှင်းပြီး အသုံးပြုရလွယ်ကူသော ဂိမ်းကစားနည်းဖြင့် ဒီဇိုင်းထုတ်ထားသော ပေါ့ပေါ့ပါးပါး ပဟေဠိဂိမ်းတစ်ခုဖြစ်သည်။ ဆွဲဆောင်မှုရှိသော ဆုလာဘ်များရရှိရန် အခွင့်အလမ်းများပေးသည့်အပြင် ပေါ့ပါးသော ဖျော်ဖြေမှုကိုလည်း ပေးစွမ်းသည်။</value>
   </data>
   <data name="GuideIntroP2" xml:space="preserve">
-    <value>Players join a journey by controlling number blocks to collect the correct number of cats of the same color. After completing each level, players receive reward points, extra turns, or support items, along with chances to unlock valuable rewards such as data packages, call minutes, and Loyalty points.</value>
+    <value>ကစားသမားများသည် တူညီသောအရောင်ရှိသော ကြောင်အရေအတွက်ကို စုဆောင်းရန် နံပါတ်ဘလောက်များကို ထိန်းချုပ်ခြင်းဖြင့် ခရီးတစ်ခုတွင် ပါဝင်ကြသည်။ အဆင့်တစ်ခုစီပြီးမြောက်ပြီးနောက် ကစားသမားများသည် ဆုလာဘ်များ၊ အပိုလှည့်ခွင့်များ သို့မဟုတ် ပံ့ပိုးမှုပစ္စည်းများအပြင် ဒေတာပက်ကေ့ဂျ်များ၊ ဖုန်းခေါ်ဆိုမှုမိနစ်များနှင့် သစ္စာရှိမှုအမှတ်များကဲ့သို့သော အဖိုးတန်ဆုလာဘ်များကို လော့ခ်ဖွင့်ရန် အခွင့်အရေးများ ရရှိမည်ဖြစ်သည်။</value>
   </data>
   <data name="GuideIntroP3" xml:space="preserve">
-    <value>The game is designed for mass mobile users, especially in developing markets where users prefer lightweight, easy-to-play, highly interactive games that deliver real value.</value>
+    <value>ဒီဂိမ်းကို မိုဘိုင်းအသုံးပြုသူအများအပြားအတွက် ဒီဇိုင်းထုတ်ထားပြီး အထူးသဖြင့် အသုံးပြုသူများသည် ပေါ့ပါးပြီး ကစားရလွယ်ကူကာ အပြန်အလှန်အကျိုးသက်ရောက်မှုမြင့်မားသော ဂိမ်းများကို နှစ်သက်ကြသည့် ဖွံ့ဖြိုးဆဲဈေးကွက်များတွင် အသုံးပြုနိုင်ပါသည်။</value>
   </data>
   <data name="GuideIntroP4" xml:space="preserve">
-    <value>With a system of levels of increasing difficulty, Kitty Fall creates a clear progression journey, motivating players to continue conquering higher levels for greater rewards, thereby increasing retention and usage time.</value>
+    <value>အခက်အခဲအဆင့်များ တိုးလာသည့်စနစ်ဖြင့် Kitty Fall သည် ရှင်းလင်းသောတိုးတက်မှုခရီးတစ်ခုကို ဖန်တီးပေးပြီး ကစားသမားများအား ပိုမိုမြင့်မားသောဆုလာဘ်များအတွက် ပိုမိုမြင့်မားသောအဆင့်များကို ဆက်လက်သိမ်းပိုက်ရန် လှုံ့ဆော်ပေးပြီး ထိန်းသိမ်းမှုနှင့် အသုံးပြုမှုအချိန်ကို တိုးမြှင့်ပေးသည်။</value>
   </data>
   <data name="GuideIntroP5" xml:space="preserve">
-    <value>The service integrates effective retention and monetization mechanisms such as daily play limits, purchasing additional turns, using Rescue when close to completing a level, and a point-based reward redemption system, ensuring a balance between user experience and business objectives.</value>
+    <value>ဝန်ဆောင်မှုတွင် နေ့စဉ်ကစားချိန်ကန့်သတ်ချက်များ၊ အပိုအလှည့်များဝယ်ယူခြင်း၊ အဆင့်တစ်ခုပြီးရန်နီးကပ်လာသောအခါ Rescue ကိုအသုံးပြုခြင်းနှင့် ရည်မှန်းချက်များအကြား ဟန်ချက်ညီမှုရှိစေရန်သေချာစေသည့် ထိရောက်သော ထိန်းသိမ်းမှုနှင့် ငွေရှာခြင်းယန္တရားများကို ပေါင်းစပ်ထားသည်။</value>
   </data>
   <data name="GuideIntroP6" xml:space="preserve">
-    <value>Kitty Fall is not just an entertainment game but also a gamification tool that helps Mytel enhance customer engagement, drive data usage, and increase revenue from value-added services.</value>
+    <value>Kitty Fall သည် ဖျော်ဖြေရေးဂိမ်းတစ်ခုသာမက Mytel ၏ ဖောက်သည်ထိတွေ့ဆက်ဆံမှုကို မြှင့်တင်ရန်၊ ဒေတာအသုံးပြုမှုကို မြှင့်တင်ရန်နှင့် တန်ဖိုးမြှင့်ဝန်ဆောင်မှုများမှ ဝင်ငွေတိုးမြှင့်ရန် ကူညီပေးသည့် gamification tool တစ်ခုလည်းဖြစ်သည်။</value>
   </data>
   <data name="GuideHowToParticipate" xml:space="preserve">
-    <value>How to Participate</value>
+    <value>ဘယ်လိုပါဝင်ရမလဲ</value>
   </data>
   <data name="GuideCustomersCanPlay" xml:space="preserve">
-    <value>Customers can play the game via WEB/APP channels.</value>
+    <value>ဝယ်ယူသူများသည် WEB/APP ချန်နယ်များမှတစ်ဆင့် ဂိမ်းကို ကစားနိုင်ပါသည်။</value>
   </data>
   <data name="GuideRegistrationChannels" xml:space="preserve">
-    <value>Service registration is available through multiple channels: SMS / USSD / WEB / APP.</value>
+    <value>ဝန်ဆောင်မှုမှတ်ပုံတင်ခြင်းကို SMS / USSD / WEB / APP မှတစ်ဆင့် နည်းလမ်းများစွာဖြင့် ရရှိနိုင်ပါသည်။</value>
   </data>
   <data name="GuidePurchaseOrSubscribe" xml:space="preserve">
-    <value>Purchase or subscribe to play turns</value>
+    <value>ကစားရန် အလှည့်များကို ဝယ်ယူပါ သို့မဟုတ် စာရင်းသွင်းပါ</value>
   </data>
   <data name="GuideStartPlayingOptions" xml:space="preserve">
-    <value>To start playing, users need available turns and can choose one of the following options:</value>
+    <value>စတင်ကစားရန်အတွက် အသုံးပြုသူများသည် ရရှိနိုင်သော အလှည့်များ လိုအပ်ပြီး အောက်ပါရွေးချယ်စရာများထဲမှ တစ်ခုကို ရွေးချယ်နိုင်သည်-</value>
   </data>
   <data name="GuideSubscribeTurnPackages" xml:space="preserve">
-    <value>Subscribe to turn packages: 179 MMK / 5 turn</value>
+    <value>အလှည့်ပက်ကေ့ဂျ်များကို စာရင်းသွင်းပါ- ၁၇၉ ကျပ် / အလှည့် ၅ ခု</value>
   </data>
   <data name="GuideOneTimePurchase1" xml:space="preserve">
-    <value>One-time purchase: 89 MMK / 1 turn</value>
+    <value>တစ်ကြိမ်ဝယ်ယူမှု - ၈၉ ကျပ် / ၁ ကြိမ်</value>
   </data>
   <data name="GuideOneTimePurchase5" xml:space="preserve">
-    <value>189 MMK / 5 turn</value>
+    <value>၁၈၉ ကျပ် / ၅  ကြိမ်</value>
   </data>
   <data name="GuideGameOverview" xml:space="preserve">
-    <value>Game Overview</value>
+    <value>ဂိမ်းခြုံငုံသုံးသပ်ချက်</value>
   </data>
   <data name="GuideModeLevels" xml:space="preserve">
-    <value>Each mode consists of 50 levels, with differences in gameplay time, scoring, and rewards at each level.</value>
+    <value>မုဒ်တစ်ခုစီတွင် အဆင့် ၅၀ ပါဝင်ပြီး ဂိမ်းကစားချိန်၊ ရမှတ်နှင့် အဆင့်တစ်ခုစီတွင် ဆုလာဘ်များ ကွာခြားပါသည်။</value>
   </data>
   <data name="GuideTotalLevels" xml:space="preserve">
-    <value>The game includes a total of 50 levels with increasing difficulty, allowing players to progressively experience and challenge themselves.</value>
+    <value>ဂိမ်းတွင် စုစုပေါင်း အဆင့် ၅၀ ပါဝင်ပြီး ပိုမိုခက်ခဲလာသောကြောင့် ကစားသမားများအနေဖြင့် ၎င်းတို့ကိုယ်တိုင် တဖြည်းဖြည်း အတွေ့အကြုံရယူပြီး စိန်ခေါ်မှုများ ပြုလုပ်နိုင်မည်ဖြစ်သည်။</value>
   </data>
   <data name="GuideProgressRewards" xml:space="preserve">
-    <value>As players progress and complete each level, they can earn reward points, and at key milestones, they will receive direct rewards from the service.</value>
+    <value>ကစားသမားများ တိုးတက်လာပြီး အဆင့်တစ်ခုစီကို ပြီးမြောက်သည်နှင့်အမျှ ၎င်းတို့သည် ဆုလာဘ်ရမှတ်များ ရရှိနိုင်ပြီး အဓိကမှတ်တိုင်များတွင် ဝန်ဆောင်မှုမှ တိုက်ရိုက်ဆုလာဘ်များကို ရရှိမည်ဖြစ်သည်။</value>
   </data>
   <data name="GuideFailLevel" xml:space="preserve">
-    <value>If a player fails to complete a level within the required time, they will lose a turn, the game will stop, and they must restart from the beginning.</value>
+    <value>ကစားသမားတစ်ဦးသည် လိုအပ်သောအချိန်အတွင်း အဆင့်တစ်ခုကို ပြီးမြောက်အောင် မလုပ်ဆောင်နိုင်ပါက ၎င်းတို့သည် အလှည့်တစ်ခု ဆုံးရှုံးမည်ဖြစ်ပြီး ဂိမ်းသည် ရပ်တန့်သွားမည်ဖြစ်ပြီး အစမှ ပြန်လည်စတင်ရမည်။</value>
   </data>
   <data name="GuideRescueOption" xml:space="preserve">
-    <value>If a player is unable to complete a level, they can purchase a Rescue option (maximum 1 time per turn) at a cost of 79 MMK.</value>
+    <value>ကစားသမားတစ်ဦးသည် အဆင့်တစ်ခုကို ပြီးမြောက်အောင် မလုပ်ဆောင်နိုင်ပါက Rescue option (တစ်လှည့်လျှင် အများဆုံး တစ်ကြိမ်) ကို မြန်မာငွေ ၇၉ ကျပ်ဖြင့် ဝယ်ယူနိုင်ပါသည်။</value>
   </data>
   <data name="GuideLevelScoreTimeRewardTable" xml:space="preserve">
-    <value>Level - Score - Time - Reward Table</value>
+    <value>အဆင့် - ရမှတ် - အချိန် - ဆုလာဘ်ဇယား</value>
   </data>
   <data name="GuideEasyReward5" xml:space="preserve">
-    <value>5MB Data / 3 loyalty / 20 score</value>
+    <value>180MB ဒေတာ / loyalty point ၆၀ ခု  / ရမှတ် ၃၅၀</value>
   </data>
   <data name="GuideEasyReward10" xml:space="preserve">
-    <value>10MB Data / 5 loyalty / 40 score</value>
+    <value>5MB ဒေတာ / loyalty point ၃ ခု / ရမှတ် ၂၀</value>
   </data>
   <data name="GuideEasyReward15" xml:space="preserve">
-    <value>20MB Data / 10 loyalty / 70 score</value>
+    <value>10MB ဒေတာ / loyalty point ၅ ခု / ရမှတ် ၄၀</value>
   </data>
   <data name="GuideEasyReward20" xml:space="preserve">
-    <value>40MB Data / 10 Call minutes / 100 score</value>
+    <value>20MB ဒေတာ / loyalty point ၁၀ ခု  / 70 ရမှတ်</value>
   </data>
   <data name="GuideEasyReward25" xml:space="preserve">
-    <value>70MB Data / 20 loyalty / 140 score</value>
+    <value>40MB ဒေတာ / ဖုန်းခေါ်ဆိုမှု ၁၀ ​​မိနစ် / ရမှတ် ၁၀၀</value>
   </data>
   <data name="GuideEasyReward30" xml:space="preserve">
-    <value>100MB Data / 30 loyalty / 180 score</value>
+    <value>70MB ဒေတာ / loyalty point ၂၀ ခု  / ရမှတ် ၁၄၀</value>
   </data>
   <data name="GuideEasyReward35" xml:space="preserve">
-    <value>120MB Data / 40 loyalty / 230 score</value>
+    <value>100MB ဒေတာ / loyalty point ၃၀ ခု / ရမှတ် ၁၈၀</value>
   </data>
   <data name="GuideEasyReward40" xml:space="preserve">
-    <value>150MB Data / 50 loyalty / 300 score</value>
+    <value>120MB ဒေတာ / loyalty point ၄၀ ခု / ရမှတ် ၂၃၀</value>
   </data>
   <data name="GuideEasyReward45" xml:space="preserve">
-    <value>180MB Data / 60 loyalty / 350 score</value>
+    <value>150MB ဒေတာ / loyalty point ၅၀ ခု  / ရမှတ် ၃၀၀</value>
   </data>
   <data name="GuideEasyReward50" xml:space="preserve">
-    <value>200MB Data / 80 loyalty / 500 score</value>
+    <value>200MB ဒေတာ / loyalty point ၈၀ ခု  / ရမှတ် ၅၀၀</value>
   </data>
   <data name="GuideMediumReward5" xml:space="preserve">
-    <value>20MB Data / 6 loyalty / 70 score</value>
+    <value>350MB ဒေတာ / loyalty point ၈၀ ခု  / ရမှတ် ၆၀၀</value>
   </data>
   <data name="GuideMediumReward10" xml:space="preserve">
-    <value>40MB Data / 12 loyalty / 130 score</value>
+    <value>20MB ဒေတာ / loyalty point ၆ ခု / ရမှတ် ၇၀</value>
   </data>
   <data name="GuideMediumReward15" xml:space="preserve">
-    <value>80MB Data / 18 loyalty / 190 score</value>
+    <value>40MB ဒေတာ / loyalty point ၁၂ ခု / 130 ရမှတ်</value>
   </data>
   <data name="GuideMediumReward20" xml:space="preserve">
-    <value>140MB Data / 260 score</value>
+    <value>80MB ဒေတာ / loyalty point ၁၈ ခု  / 190 ရမှတ်</value>
   </data>
   <data name="GuideMediumReward25" xml:space="preserve">
-    <value>180MB Data / 30 loyalty / 320 score</value>
+    <value>140MB ဒေတာ / ရမှတ် ၂၆၀</value>
   </data>
   <data name="GuideMediumReward30" xml:space="preserve">
-    <value>220MB Data / 40 loyalty / 380 score</value>
+    <value>180MB ဒေတာ / loyalty point ၃၀ ခု  / ရမှတ် ၃၂၀</value>
   </data>
   <data name="GuideMediumReward35" xml:space="preserve">
-    <value>260MB Data / 60 loyalty / 450 score</value>
+    <value>220MB ဒေတာ / loyalty point ၄၀ ခု  / ရမှတ် ၃၈၀</value>
   </data>
   <data name="GuideMediumReward40" xml:space="preserve">
-    <value>300MB Data / 70 loyalty / 520 score</value>
+    <value>260MB ဒေတာ / loyalty point ၆၀ ခု  / ရမှတ် ၄၅၀</value>
   </data>
   <data name="GuideMediumReward45" xml:space="preserve">
-    <value>350MB Data / 80 loyalty / 600 score</value>
+    <value>300MB ဒေတာ / loyalty point ၇၀ ခု  / ရမှတ် ၅၂၀</value>
   </data>
   <data name="GuideMediumReward50" xml:space="preserve">
-    <value>450MB Data / 100 loyalty / 700 score</value>
+    <value>၄၅၀MB ဒေတာ / loyalty point ၁၀၀ ခု  / ရမှတ် ၇၀၀</value>
   </data>
   <data name="GuideHardReward5" xml:space="preserve">
-    <value>40MB Data / 10 loyalty / 100 score</value>
+    <value>600MB ဒေတာ / loyalty point ၁၃၀ ခု  / ရမှတ် ၉၀၀</value>
   </data>
   <data name="GuideHardReward10" xml:space="preserve">
-    <value>80MB Data / 20 loyalty / 200 score</value>
+    <value>40MB ဒေတာ / loyalty point ၁၀ ခု  / 100 ရမှတ်</value>
   </data>
   <data name="GuideHardReward15" xml:space="preserve">
-    <value>140MB Data / 30 loyalty / 300 score</value>
+    <value>80MB ဒေတာ / loyalty point ၂၀ ခု  / 200 ရမှတ်</value>
   </data>
   <data name="GuideHardReward20" xml:space="preserve">
-    <value>220MB Data / 400 score</value>
+    <value>140MB ဒေတာ / loyalty point ၃၀ ခု / ရမှတ် ၃၀၀</value>
   </data>
   <data name="GuideHardReward25" xml:space="preserve">
-    <value>300MB Data / 50 loyalty / 500 score</value>
+    <value>220MB ဒေတာ / 400 ရမှတ်</value>
   </data>
   <data name="GuideHardReward30" xml:space="preserve">
-    <value>380MB Data / 70 loyalty / 600 score</value>
+    <value>300MB ဒေတာ / loyalty point ၅၀ ခု  / 500 ရမှတ်</value>
   </data>
   <data name="GuideHardReward35" xml:space="preserve">
-    <value>450MB Data / 90 loyalty / 700 score</value>
+    <value>380MB ဒေတာ / loyalty point ၇၀ ခု  / ရမှတ် ၆၀၀</value>
   </data>
   <data name="GuideHardReward40" xml:space="preserve">
-    <value>520MB Data / 110 loyalty / 800 score</value>
+    <value>၄၅၀MB ဒေတာ / loyalty point ၉၀ ခု  / ရမှတ် ၇၀၀</value>
   </data>
   <data name="GuideHardReward45" xml:space="preserve">
-    <value>600MB Data / 130 loyalty / 900 score</value>
+    <value>520MB ဒေတာ / loyalty point ၁၁၀ ခု  / ရမှတ် ၈၀၀</value>
   </data>
   <data name="GuideHardReward50" xml:space="preserve">
-    <value>750MB Data / 150 loyalty / 1000 score</value>
+    <value>750MB ဒေတာ / loyalty point ၁၅၀ ခု  / ရမှတ် ၁၀၀၀</value>
   </data>
   <data name="GuideMonthlyRewardEligibility" xml:space="preserve">
-    <value>Monthly Reward Eligibility Conditions</value>
+    <value>လစဉ်ဆုလာဘ် အရည်အချင်းပြည့်မီမှုဆိုင်ရာ စည်းကမ်းချက်များ</value>
   </data>
   <data name="GuidePlayersRequired" xml:space="preserve">
-    <value>Players are required to achieve:</value>
+    <value>ကစားသမားများသည် အောက်ပါတို့ကို အောင်မြင်ရန် လိုအပ်သည်-</value>
   </data>
   <data name="GuideConditions" xml:space="preserve">
-    <value>Conditions</value>
+    <value>အခြေအနေများ</value>
   </data>
   <data name="GuideValue" xml:space="preserve">
-    <value>Value</value>
+    <value>တန်ဖိုး</value>
   </data>
   <data name="GuideTotalScore" xml:space="preserve">
-    <value>Total score</value>
+    <value>စုစုပေါင်းရမှတ်</value>
   </data>
   <data name="GuideTotalScoreCondition" xml:space="preserve">
-    <value>&amp;ge; 5,000 score / month</value>
+    <value>တစ်လလျှင် ရမှတ် ၅၀၀၀ နှင့်အထက်</value>
   </data>
   <data name="GuideMonthlyRewardChance" xml:space="preserve">
-    <value>All users who meet the requirements have the chance to participate in the monthly reward.</value>
+    <value>လိုအပ်ချက်များနှင့် ကိုက်ညီသော အသုံးပြုသူအားလုံးသည် လစဉ်ဆုလာဘ်တွင် ပါဝင်ရန် အခွင့်အရေးရှိသည်။</value>
   </data>
   <data name="GuideRewardDistributionMechanism" xml:space="preserve">
-    <value>Reward Distribution Mechanism</value>
+    <value>ဆုလာဘ်ဖြန့်ဝေမှုယန္တရား</value>
   </data>
   <data name="GuideEndOfMonth" xml:space="preserve">
-    <value>At the end of the month</value>
+    <value>လကုန်မှာ</value>
   </data>
   <data name="GuideCollectEligibleUsers" xml:space="preserve">
-    <value>Collect all eligible users</value>
+    <value>အရည်အချင်းပြည့်မီသော အသုံးပြုသူအားလုံးကို စုဆောင်းပါ</value>
   </data>
   <data name="GuideRandomDraw" xml:space="preserve">
-    <value>Conduct a random draw</value>
+    <value>ကံစမ်းမဲဖောက်ပေးပါသည်</value>
   </data>
   <data name="GuideTicketsByPoint" xml:space="preserve">
-    <value>Each user receives a number of tickets corresponding to their point level</value>
+    <value>အသုံးပြုသူတစ်ဦးချင်းစီသည် ၎င်းတို့၏အမှတ်အဆင့်နှင့် ကိုက်ညီသော လက်မှတ်အရေအတွက်ကို ရရှိသည်</value>
   </data>
   <data name="GuideDrawTicketsBasedOnPoints" xml:space="preserve">
-    <value>Draw Tickets based on points</value>
+    <value>အမှတ်ပေါ်မူတည်ပြီး လက်မှတ်များထုတ်ယူပါ</value>
   </data>
   <data name="GuideTotalScoreMonth" xml:space="preserve">
-    <value>Total score month</value>
+    <value>စုစုပေါင်းရမှတ်လ</value>
   </data>
   <data name="GuideNumberOfTicket" xml:space="preserve">
-    <value>Number of ticket</value>
+    <value>လက်မှတ်အရေအတွက်</value>
   </data>
   <data name="GuideOneTicket" xml:space="preserve">
-    <value>1 ticket</value>
+    <value>လက်မှတ် ၁ စောင်</value>
   </data>
   <data name="GuideTwoTickets" xml:space="preserve">
-    <value>2 tickets</value>
+    <value>လက်မှတ် ၂ စောင်</value>
   </data>
   <data name="GuideThreeTickets" xml:space="preserve">
-    <value>3 tickets</value>
+    <value>လက်မှတ် ၃ စောင်</value>
   </data>
   <data name="GuideFiveTickets" xml:space="preserve">
-    <value>5 tickets</value>
+    <value>လက်မှတ် ၅ စောင်</value>
   </data>
   <data name="GuideSevenTickets" xml:space="preserve">
-    <value>7 tickets</value>
+    <value>လက်မှတ် ၇ စောင်</value>
   </data>
   <data name="GuideTenTickets" xml:space="preserve">
-    <value>10 tickets</value>
+    <value>လက်မှတ် ၁၀ စောင်</value>
   </data>
   <data name="GuideMonthlyAnnouncement" xml:space="preserve">
-    <value>On the 1st of each month at 5:00 AM, the system will announce the lucky customers who win the prizes.</value>
+    <value>လစဉ် ၁ ရက်နေ့ နံနက် ၅:၀၀ နာရီတွင် စနစ်မှ ဆုများရရှိသော ကံထူးရှင်ဖောက်သည်များကို ကြေငြာပေးပါမည်။</value>
   </data>
   <data name="GuideMonthlyPrizeLimit" xml:space="preserve">
-    <value>Each subscriber is eligible to receive a monthly prize only once within the most recent 3-month period.</value>
+    <value>စာရင်းသွင်းသူတိုင်းသည် မကြာသေးမီက ရရှိခဲ့သော ၃ လအတွင်း တစ်ကြိမ်သာ လစဉ်ဆုလက်ဆောင်ကို ရရှိခွင့်ရှိသည်။</value>
   </data>
   <data name="AccountLoyaltyPoints" xml:space="preserve">
     <value>သစ္စာရှိမှုအမှတ်များ</value>
   </data>
   <data name="AccountTotalLoyaltyPoints" xml:space="preserve">
-    <value>သစ္စာရှိမှုအမှတ် စုစုပေါင်း</value>
+    <value>စုစုပေါင်း loyalty points များ</value>
   </data>
   <data name="AccountTitle" xml:space="preserve">
     <value>အကောင့်</value>
   </data>
   <data name="AccountCloseMenu" xml:space="preserve">
-    <value>အကောင့်မီနူး ပိတ်ရန်</value>
+    <value>အကောင့်မီနူးကို ပိတ်ပါ</value>
   </data>
   <data name="AccountPhoneNumber" xml:space="preserve">
     <value>အကောင့် (ဖုန်းနံပါတ်)</value>
   </data>
   <data name="AccountDefaultDescription" xml:space="preserve">
-    <value>ဤအကောင့်သည် သင်၏ မူလအကောင့်ဖြစ်သည်။</value>
+    <value>ဒါက သင့်ရဲ့ မူရင်းအကောင့်ပါ။</value>
   </data>
   <data name="AccountTotalThisMonth" xml:space="preserve">
-    <value>ယခုလ စုစုပေါင်း</value>
+    <value>ယခုလအတွက် စုစုပေါင်း</value>
   </data>
   <data name="AccountPoints" xml:space="preserve">
     <value>အမှတ်များ</value>
   </data>
   <data name="AccountTotalPoints" xml:space="preserve">
-    <value>စုစုပေါင်းအမှတ်</value>
+    <value>စုစုပေါင်းရမှတ်များ</value>
   </data>
   <data name="AccountDataMb" xml:space="preserve">
     <value>ဒေတာ (MB)</value>
   </data>
   <data name="AccountTotalDataWon" xml:space="preserve">
-    <value>ရရှိသောဒေတာစုစုပေါင်း</value>
+    <value>စုစုပေါင်းဒေတာအနိုင်ရရှိမှု</value>
   </data>
   <data name="AccountMonthlySummary" xml:space="preserve">
-    <value>အမှတ်၊ ဒေတာနှင့် ဆုများကို {0} မှ {1} အထိ စုဆောင်းပြီး လစဉ် ပြန်လည်သတ်မှတ်ပါသည်။</value>
+    <value>အမှတ်များ၊ ဒေတာနှင့် ဆုလာဘ်များကို {0} မှ {1} အထိ စုဆောင်းပြီး လစဉ် ပြန်လည်သတ်မှတ်ပါသည်။</value>
   </data>
   <data name="AccountCurrentPackage" xml:space="preserve">
     <value>လက်ရှိပက်ကေ့ချ်</value>
   </data>
   <data name="AccountActiveSubscription" xml:space="preserve">
-    <value>အသုံးပြုနေသော စာရင်းသွင်းမှု</value>
+    <value>လက်ရှိစာရင်းသွင်းမှု</value>
   </data>
   <data name="AccountNoActivePackage" xml:space="preserve">
-    <value>လက်ရှိပက်ကေ့ချ်မရှိပါ</value>
+    <value>အသက်ဝင်သော ပက်ကေ့ဂျ် မရှိပါ</value>
   </data>
   <data name="AccountDailyPackage" xml:space="preserve">
-    <value>နေ့စဉ်ပက်ကေ့ျ်</value>
+    <value>နေ့စဉ်ပက်ကေ့ျ်</value>
   </data>
   <data name="AccountPlaysPerDay" xml:space="preserve">
-    <value>တစ်ရက်လျှင် {0} ကြိမ်</value>
+    <value>တစ်နေ့လျှင် {0} ကြိမ် ကစားသည်</value>
   </data>
   <data name="AccountExpires" xml:space="preserve">
-    <value>သက်တမ်းကုန်ဆုံးရက် {0}</value>
+    <value>သက်တမ်းကုန်ဆုံးမည့်ရက် {0}</value>
   </data>
   <data name="AccountAutoRenew" xml:space="preserve">
-    <value>အလိုအလျောက်သက်တမ်းတိုး</value>
+    <value>အလိုအလျောက် သက်တမ်းတိုးခြင်း</value>
   </data>
   <data name="AccountSubscribedSince" xml:space="preserve">
-    <value>စာရင်းသွင်းသညနေ့ {0}</value>
+    <value>{0} ကတည်းက စာရင်းသွင်းထားသည်</value>
   </data>
   <data name="AccountSubscriptionUnavailable" xml:space="preserve">
-    <value>စာရင်းသွင်းမှုအချက်အလက် မရရှိနိုင်ပါ။</value>
+    <value>စာရင်းသွင်းမှု အချက်အလက်များကို မရရှိနိုင်ပါ။</value>
   </data>
   <data name="AccountHowToCancel" xml:space="preserve">
     <value>ပယ်ဖျက်နည်း</value>
@@ -667,10 +667,10 @@
     <value>ဝန်ဆောင်မှုကို ပယ်ဖျက်လိုပါက ပေးပို့ပါ</value>
   </data>
   <data name="AccountCancelCommand" xml:space="preserve">
-    <value>{0} ကို {1} သို့</value>
+    <value>{0} မှ {1} အထိ</value>
   </data>
   <data name="AccountFollowInstructions" xml:space="preserve">
-    <value>ပြီးနောက် ညွှန်ကြားချက်များကို လိုက်နာပါ။</value>
+    <value>နှင့် ညွှန်ကြားချက်များကို လိုက်နာပါ။</value>
   </data>
   <data name="AccountLanguage" xml:space="preserve">
     <value>ဘာသာစကား</value>
@@ -682,28 +682,28 @@
     <value>မြန်မာ</value>
   </data>
   <data name="AccountSecurityNote" xml:space="preserve">
-    <value>သင့်ဂိမ်းအတွေ့အကြုံနှင့် ဆုများကို ဤအကောင့်တွင် လုံခြုံစွာ သိမ်းဆည်းထားပါသည်။</value>
+    <value>သင့်ဂိမ်းအတွေ့အကြုံနှင့် ဆုလာဘ်များကို ဤအကောင့်တွင် လုံခြုံစွာ သိမ်းဆည်းထားပါသည်။</value>
   </data>
   <data name="AccountAvatarAlt" xml:space="preserve">
-    <value>အကောင့်ပုံ</value>
+    <value>အကောင့်ဓာတ်ပုံ</value>
   </data>
   <data name="AccountCancelCatAlt" xml:space="preserve">
-    <value>Kitty Fall ကြောင်</value>
+    <value>ကစ်တီ ဆောင်းဦးရာသီကြောင်</value>
   </data>
   <data name="BuyTurnSuccessMessage" xml:space="preserve">
-    <value>သင်သည် ကစားခွင့် {0} ကြိမ်ကို အောင်မြင်စွာ ဝယ်ယူပြီးပါပြီ။</value>
+    <value>သင်သည် အလှည့် {0} ခုကို အောင်မြင်စွာ ဝယ်ယူပြီးပါပြီ။</value>
   </data>
   <data name="TurnOverTitle" xml:space="preserve">
-    <value>ကစားခွင့် မကျန်တော့ပါ!</value>
+    <value>ဘယ်ဘက်သို့ မကွေ့ရ!</value>
   </data>
   <data name="TurnOverPrimary" xml:space="preserve">
-    <value>သင့်တွင် ကစားခွင့် မကျန်တော့ပါ။</value>
+    <value>မင်းမှာ ကစားချိန်တွေ ဘာမှ မကျန်တော့ဘူး။</value>
   </data>
   <data name="TurnOverSecondary" xml:space="preserve">
-    <value>ကစားခွင့်များ ထပ်မံရယူပြီး စွန့်စားခန်းကို ဆက်ကစားပါ!</value>
+    <value>အလှည့်အပြောင်းတွေ ပိုများများရယူပြီး သင့်ရဲ့စွန့်စားခန်းကို ဆက်လက်လုပ်ဆောင်လိုက်ပါ။</value>
   </data>
   <data name="BuyMoreTurns" xml:space="preserve">
-    <value>ကစားခွင့် ထပ်ဝယ်မည်</value>
+    <value>အလှည့်များ ပိုမိုဝယ်ယူပါ</value>
   </data>
   <data name="Close" xml:space="preserve">
     <value>ပိတ်ရန်</value>
@@ -712,16 +712,36 @@
     <value>MB</value>
   </data>
   <data name="LOYALTY" xml:space="preserve">
-    <value>LOYALTY</value>
-  </data>
-  <data name="GuideMonthlyRewardTable" xml:space="preserve"><value>Monthly Reward Table</value></data>
-  <data name="GuidePrize" xml:space="preserve"><value>Prize</value></data>
-  <data name="GuideQuantity" xml:space="preserve"><value>Quantity</value></data>
-  <data name="GuideReward" xml:space="preserve"><value>Reward</value></data>
-  <data name="GuideFirstPrize" xml:space="preserve"><value>First Prize</value></data>
-  <data name="GuideSecondPrize" xml:space="preserve"><value>Second Prize</value></data>
-  <data name="GuideThirdPrize" xml:space="preserve"><value>Third Prize</value></data>
-  <data name="GuideFirstPrizeReward" xml:space="preserve"><value>2,000,000 MMK</value></data>
-  <data name="GuideSecondPrizeReward" xml:space="preserve"><value>500,000 MMK</value></data>
-  <data name="GuideThirdPrizeReward" xml:space="preserve"><value>200,000 MMK</value></data>
-</root>
+    <value>သစ္စာစောင့်သိမှု</value>
+  </data>
+  <data name="GuideMonthlyRewardTable" xml:space="preserve">
+    <value>လစဉ်ဆုလာဘ်ဇယား</value>
+  </data>
+  <data name="GuidePrize" xml:space="preserve">
+    <value>ဆု</value>
+  </data>
+  <data name="GuideQuantity" xml:space="preserve">
+    <value>ပမာဏ</value>
+  </data>
+  <data name="GuideReward" xml:space="preserve">
+    <value>ဆုလာဘ်</value>
+  </data>
+  <data name="GuideFirstPrize" xml:space="preserve">
+    <value>ပထမဆု</value>
+  </data>
+  <data name="GuideSecondPrize" xml:space="preserve">
+    <value>ဒုတိယဆု</value>
+  </data>
+  <data name="GuideThirdPrize" xml:space="preserve">
+    <value>တတိယဆု</value>
+  </data>
+  <data name="GuideFirstPrizeReward" xml:space="preserve">
+    <value>၂,၀၀၀,၀၀၀ ကျပ်</value>
+  </data>
+  <data name="GuideSecondPrizeReward" xml:space="preserve">
+    <value>၅၀၀,၀၀၀ ကျပ်</value>
+  </data>
+  <data name="GuideThirdPrizeReward" xml:space="preserve">
+    <value>၂၀၀,၀၀၀ ကျပ်</value>
+  </data>
+</root>

File diff suppressed because it is too large
+ 0 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/data.json


BIN
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/images/btn_lvl-sheet0.webp


BIN
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/images/sprite3-sheet1.webp


BIN
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/images/sprite3-sheet2.webp


+ 1 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/offline.json

@@ -1 +1 @@
-{"version":1784652352331,"fileList":["scripts/main.js","scripts/c3runtime.js","scripts/objRefTable.js","scripts/project/main.js","scripts/c3main.js","scripts/dispatchworker.js","scripts/jobworker.js","data.json","scripts/modernjscheck.js","scripts/supportcheck.js","scripts/offlineclient.js","icons/loading-logo.png","icons/icon-16.png","icons/icon-32.png","icons/icon-64.png","icons/icon-128.png","icons/icon-256.png","icons/icon-512.png","media/congratulations.webm","media/click.webm","media/Button03.webm","media/cute-cat-352656.webm","media/win2.webm","media/timeup_.webm","media/click_sound.webm","media/playground.webm","box2d.wasm.js","box2d.wasm","style.css","images/shared-0-sheet0.webp","images/shared-0-sheet1.webp","images/shared-0-sheet2.webp","images/shared-0-sheet3.webp","images/shared-0-sheet4.webp","images/shared-0-sheet5.webp","images/shared-0-sheet6.webp","images/block1a-sheet0.webp","images/block1a-sheet1.webp","images/cats-sheet0.webp","images/cats-sheet1.webp","images/cats-sheet2.webp","images/cats-sheet3.webp","images/cats-sheet4.webp","images/confettix-sheet0.webp","images/confettix-sheet1.webp","images/sprite3-sheet0.webp","images/sprite3-sheet1.webp","images/sprite3-sheet2.webp","images/scroll-sheet0.webp","images/btn_lvl-sheet0.webp","images/btn_lvl-sheet1.webp","scripts/register-sw.js"]}
+{"version":1784690715561,"fileList":["scripts/main.js","scripts/c3runtime.js","scripts/objRefTable.js","scripts/project/main.js","scripts/c3main.js","scripts/dispatchworker.js","scripts/jobworker.js","data.json","scripts/modernjscheck.js","scripts/supportcheck.js","scripts/offlineclient.js","icons/loading-logo.png","icons/icon-16.png","icons/icon-32.png","icons/icon-64.png","icons/icon-128.png","icons/icon-256.png","icons/icon-512.png","media/congratulations.webm","media/click.webm","media/Button03.webm","media/cute-cat-352656.webm","media/win2.webm","media/timeup_.webm","media/click_sound.webm","media/playground.webm","box2d.wasm.js","box2d.wasm","style.css","images/shared-0-sheet0.webp","images/shared-0-sheet1.webp","images/shared-0-sheet2.webp","images/shared-0-sheet3.webp","images/shared-0-sheet4.webp","images/shared-0-sheet5.webp","images/shared-0-sheet6.webp","images/block1a-sheet0.webp","images/block1a-sheet1.webp","images/cats-sheet0.webp","images/cats-sheet1.webp","images/cats-sheet2.webp","images/cats-sheet3.webp","images/cats-sheet4.webp","images/confettix-sheet0.webp","images/confettix-sheet1.webp","images/sprite3-sheet0.webp","images/sprite3-sheet1.webp","images/sprite3-sheet2.webp","images/scroll-sheet0.webp","images/btn_lvl-sheet0.webp","images/btn_lvl-sheet1.webp","scripts/register-sw.js"]}

File diff suppressed because it is too large
+ 0 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/scripts/c3runtime.js


File diff suppressed because it is too large
+ 0 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/scripts/main.js


+ 64 - 14
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/catpuzzle/scripts/project/main.js

@@ -7,6 +7,11 @@ let lastExitGame=false;
 let lastLevelCompleted = 0;
 let lastGameOver = 0;
 
+// Keep the server-provided daily level separate from Construct Local Storage.
+// The event sheet may enter its "missing" branch after startup and repaint all
+// menu buttons as locked even though max_level was read correctly from the URL.
+let dailyMaxLevelFromUrl = 1;
+
 runOnStartup(async runtime =>
 {
 	runtime.addEventListener(
@@ -38,6 +43,19 @@ async function OnBeforeProjectStart(runtime)
 		() => Tick(runtime)
 	);
 
+	// Apply after the event sheet so its Local Storage fallback cannot overwrite
+	// the level state supplied by the website for the current subscriber/day.
+	runtime.addEventListener(
+		"tick2",
+		() =>
+		{
+			// Level buttons only exist on the menu. Do not run the menu sync
+			// while an Easy/Medium/Hard gameplay layout is active.
+			if (runtime.layout?.name === "Menu")
+				SyncDailyLevelMenu(runtime);
+		}
+	);
+
 	console.log("Add event success");
 
 	// Báo MVC biết game đã sẵn sàng
@@ -53,6 +71,31 @@ async function OnBeforeProjectStart(runtime)
 }
 
 
+function SyncDailyLevelMenu(runtime)
+{
+	const levelButtons = runtime.objects.btn_lvl?.getAllInstances() ?? [];
+
+	for (const button of levelButtons)
+	{
+		const level = Number(button.instVars.level);
+		if (!Number.isFinite(level))
+			continue;
+
+		const isOpen = level <= dailyMaxLevelFromUrl;
+		const animation = isOpen ? "open" : "locked";
+
+		if (button.animationName !== animation)
+			button.setAnimation(animation);
+
+		// The open animation contains one frame per menu number (1-50).
+		// Selecting the animation resets it to frame 0, so restore the frame
+		// that belongs to this button's level after changing its lock state.
+		if (isOpen && button.animationFrame !== level - 1)
+			button.animationFrame = level - 1;
+	}
+}
+
+
 
 function LoadGameConfigFromUrl(runtime)
 {
@@ -62,19 +105,23 @@ function LoadGameConfigFromUrl(runtime)
 			window.location.search
 		);
 
-		const gameType =
-			params.get("gameType");
+		const requestedGameType = params.get("gameType");
+		const requestedMaxLevel = Number.parseInt(params.get("max_level"), 10);
 
+		// Website calculates today's progress for the current subscriber and
+		// passes it in the iframe URL. Apply both values before the menu event
+		// sheet starts, so the game does not briefly use Easy/local progress.
+		runtime.globalVars.gameType = ["Easy", "Medium", "Hard"].includes(requestedGameType)
+			? requestedGameType
+			: "Easy";
 
-		if (gameType)
-		{
-			runtime.globalVars.gameType = gameType;
-		}
-		else
-		{
-			runtime.globalVars.gameType = "Easy";
-		}
-		runtime.globalVars.InitGameTypeSuccess =1;
+		runtime.globalVars.unlocked_level = Number.isFinite(requestedMaxLevel)
+			? Math.min(50, Math.max(1, requestedMaxLevel))
+			: 1;
+		dailyMaxLevelFromUrl = runtime.globalVars.unlocked_level;
+
+		runtime.globalVars.InitGameTypeSuccess = 1;
+		runtime.globalVars.InitUnLockSucess = 1;
 
 		// Sau khi có gameType thì set cấu hình game
 		SetGameConfig(runtime);
@@ -83,6 +130,8 @@ function LoadGameConfigFromUrl(runtime)
 		console.log(
 			"GameType:",
 			runtime.globalVars.gameType,
+			"MaxLevel:",
+			runtime.globalVars.unlocked_level,
 			"TotalTime:",
 			runtime.globalVars.totaltime
 		);
@@ -96,6 +145,10 @@ function LoadGameConfigFromUrl(runtime)
 		);
 
 		runtime.globalVars.gameType = "Easy";
+		runtime.globalVars.unlocked_level = 1;
+		dailyMaxLevelFromUrl = 1;
+		runtime.globalVars.InitGameTypeSuccess = 1;
+		runtime.globalVars.InitUnLockSucess = 1;
 
 		SetGameConfig(runtime);
 	}
@@ -470,6 +523,3 @@ function MovePlayer(offsetX, offsetY)
     player.x += offsetX;
     player.y += offsetY;
 }
-
-
-

+ 2 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/kitty/js/all.min.js

@@ -459,7 +459,8 @@ const initKittyFall = () => {
                 gameShell.setAttribute("aria-hidden", "false");
                 const gameUrl = playGameRoot.dataset.gameUrl || "/catpuzzle/index.html";
                 const separator = gameUrl.includes("?") ? "&" : "?";
-                gameFrame.src = `${gameUrl}${separator}gameType=${encodeURIComponent(selectedLevel)}`;
+                const maxLevel = Math.min(50, Math.max(1, Number.parseInt(result.max_level, 10) || 1));
+                gameFrame.src = `${gameUrl}${separator}gameType=${encodeURIComponent(selectedLevel)}&max_level=${maxLevel}`;
             } catch (error) {
                 console.error("StartSession Error:", error);
                 window.alert("Unable to start game.");

+ 2 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/kitty/js/input.js

@@ -459,7 +459,8 @@ const initKittyFall = () => {
                 gameShell.setAttribute("aria-hidden", "false");
                 const gameUrl = playGameRoot.dataset.gameUrl || "/catpuzzle/index.html";
                 const separator = gameUrl.includes("?") ? "&" : "?";
-                gameFrame.src = `${gameUrl}${separator}gameType=${encodeURIComponent(selectedLevel)}`;
+                const maxLevel = Math.min(50, Math.max(1, Number.parseInt(result.max_level, 10) || 1));
+                gameFrame.src = `${gameUrl}${separator}gameType=${encodeURIComponent(selectedLevel)}&max_level=${maxLevel}`;
             } catch (error) {
                 console.error("StartSession Error:", error);
                 window.alert("Unable to start game.");

BIN
Kitty_Fall/catpuzzle.zip → Kitty_Fall/catpuzzle_fix.zip


BIN
Kitty_Fall/catpuzzle_mytel.zip


Some files were not shown because too many files changed in this diff