using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using RuntimeData; using Logic; namespace TH1Resource { public sealed class MoveHighlightVisual { public readonly Sprite Sprite; public readonly Color Color; public MoveHighlightVisual(Sprite sprite, Color color) { Sprite = sprite; Color = color; } } public class SpriteCache { public Dictionary GroundSprites = new(); public Dictionary ForestSprites = new(); public Dictionary MountainSprites = new(); public Sprite WaterSprite; public Sprite OceanSprite; public Dictionary Roads = new(); public Sprite UnitInfoSelf; public Sprite UnitInfoEnemy; //-------UI相关-------- public Sprite TechCompleteBackground; public Sprite TechLockedBackground; public Sprite TechAvailableBackground; public Sprite TH1Icon_ActionDefense; public Sprite AchievementStar; public Sprite AchievementStarGray; public Sprite ActionBGAvailable; public Sprite ActionBGExpensive; public Sprite ActionBGUnavailable; public Sprite Ally; public Sprite BreakAlly; public Sprite Embassy; public Sprite BreakEmbassy; public Sprite BubbleActionUpgrade; public Sprite BubbleActionCapture; public Sprite BubbleActionTreasure; public Sprite BubbleActionStarfish; public Sprite CommonBG_CircleGrey; public Sprite CommonBG_CircleBlue; public Sprite CommonBG_CircleGreen; private readonly Dictionary _moveHighlightVisuals = new(); //-------- GridVFX 相关 -------- public Sprite GridVFXDie; public Sprite GridVFXCounterDie; public Sprite GridVFXROYALFLAMES; public Sprite GridVFXTEWI; public Sprite GridVFXCoin; public Sprite GridVFXKAGUYA; public Sprite GridVFXHeal; public Sprite GridVFXConnect; public Sprite GridVFXTreasure; public Sprite GridVFXRedMistCreate; public Sprite GridVFXSakuyaGuard; public Sprite GridVFXLucky; public Sprite GridVFXBigLucky; public Sprite GridVFXUnlucky; public Sprite GridVFXBigUnlucky; public Sprite GridVFXLuckyText; public Sprite GridVFXBigLuckyText; public Sprite GridVFXUnluckyText; public Sprite GridVFXBigUnluckyText; public Sprite GridVFXLuxury; //-------- Unit 相关 -------- public Sprite MeilingZzz; public Sprite KanakoSit; public Sprite UtsuhoBoom; public Sprite NorwaySuikaHuge; public Sprite NorwaySuikaSuperHuge; public Sprite NorwayAunnStone; public Dictionary ChessSpriteDict = new(); public void Init() { for (int i = 0; i < 9; i++) { Roads["Road"+i] = TH1Resource.ResourceLoader.Load($"ArtResources/TH1Miscs/TH1Misc_Road{i}"); Roads["WaterRoad"+i] = TH1Resource.ResourceLoader.Load($"ArtResources/TH1Miscs/TH1Misc_WaterRoad{i}"); } UnitInfoSelf = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/InGame/UnitInfoSelf"); UnitInfoEnemy = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/InGame/UnitInfoEnemy"); //--------UI-------- TechCompleteBackground = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/TechTree/TH1Tech_GreenCircle"); TechLockedBackground = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/TechTree/TH1Tech_DarkCircle"); TechAvailableBackground = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/TechTree/TH1Tech_BlueCircle"); TH1Icon_ActionDefense = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/TH1Icon_ActionDefense"); AchievementStar = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/Common/UILibraryStar"); AchievementStarGray = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/Common/UILibraryStarGray"); ActionBGAvailable = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/Common/bgAvailable"); ActionBGExpensive = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/Common/bgExpensive"); ActionBGUnavailable = TH1Resource.ResourceLoader.Load("ArtResources/TH1UI/Common/bgUnavailable"); Ally = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/Ally_256"); BreakAlly = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/BreakAlly_256"); Embassy = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/Embassy_256"); BreakEmbassy = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/BreakEmbassy_256"); ChessSpriteDict[ChessType.None] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_Knights"); ChessSpriteDict[ChessType.King] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_King"); ChessSpriteDict[ChessType.Queen] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_Queen"); ChessSpriteDict[ChessType.Bishop] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_Bishop"); ChessSpriteDict[ChessType.Knight] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_Knights"); ChessSpriteDict[ChessType.Rook] = TH1Resource.ResourceLoader.Load("TH1UI/Icon/ChessIcon/ChessIcon_Rook"); BubbleActionUpgrade = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionUpgrade_256"); BubbleActionCapture = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionCapture_256"); BubbleActionTreasure = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionTreasure_256"); BubbleActionStarfish = TH1Resource.ResourceLoader.Load("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionStarfish_256"); CommonBG_CircleGrey = TH1Resource.ResourceLoader.Load("TH1UI/Common/CommonBG/CommonCircleGrey"); CommonBG_CircleBlue = TH1Resource.ResourceLoader.Load("TH1UI/Common/CommonBG/CommonCircleBlue"); CommonBG_CircleGreen = TH1Resource.ResourceLoader.Load("TH1UI/Common/CommonBG/CommonCircleGreen"); Color moveHighlightRed = new Color(1f, 0.35f, 0.35f, 1f); Color moveHighlightDeepBlue = new Color(0.12f, 0.34f, 0.9f, 1f); Color moveHighlightGreen = new Color(0.35f, 0.9f, 0.45f, 1f); SetMoveHighlightVisual( MoveHighlightType.Slow, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_SpecialSlow"), moveHighlightRed); SetMoveHighlightVisual( MoveHighlightType.Enemy, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_Enemy"), Color.white); SetMoveHighlightVisual( MoveHighlightType.Boat, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_SpecialBoat"), moveHighlightDeepBlue); SetMoveHighlightVisual( MoveHighlightType.Ashore, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_SpecialAshore"), moveHighlightDeepBlue); SetMoveHighlightVisual( MoveHighlightType.Sanae, TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/Moriya/Skill_SanaeWindX"), moveHighlightGreen); SetMoveHighlightVisual( MoveHighlightType.Teleport, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_SpecialTeleport"), moveHighlightDeepBlue); SetMoveHighlightVisual( MoveHighlightType.Momiji, TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/Moriya/Skill_MOMIJIHUNTER"), moveHighlightGreen); SetMoveHighlightVisual( MoveHighlightType.Yuugi, TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/Skill_YuugiDash"), moveHighlightGreen); SetMoveHighlightVisual( MoveHighlightType.Road, TH1Resource.ResourceLoader.Load("ArtResources/TH1Common/GridMoveHightlight_SpecialRoad"), moveHighlightGreen); //-------- GridVFX -------- GridVFXDie = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Die"); GridVFXCounterDie = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_CounterDie"); GridVFXROYALFLAMES = TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/Skill_ROYALFLAMES"); GridVFXTEWI = TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/TewiFrenchBuff"); GridVFXCoin = TH1Resource.ResourceLoader.Load("TH1UI/Icon/CommonIcon/CoinIcon"); GridVFXKAGUYA = TH1Resource.ResourceLoader.Load("TH1UI/Icon/SkillIcon/SKill_KAGUYAFRENCHFOREVERBUFF"); GridVFXHeal = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Heal"); GridVFXConnect = TH1Resource.ResourceLoader.Load("TH1UI/Icon/CityInfo/TH1IconCityInfoConnected"); GridVFXTreasure = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Treasure"); GridVFXRedMistCreate = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_RedMistCreate"); GridVFXSakuyaGuard = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_SakuyaGuard"); GridVFXLucky = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Treasure"); GridVFXBigLucky= TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_BigLucky"); GridVFXUnlucky = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Unlucky"); GridVFXBigUnlucky = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_BigUnlucky"); GridVFXLuckyText = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_LuckyText"); GridVFXBigLuckyText = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_BigLuckyText"); GridVFXUnluckyText = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_UnluckyText"); GridVFXBigUnluckyText = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_BigUnluckyText"); GridVFXLuxury = TH1Resource.ResourceLoader.Load("ArtResources/TH1VFX/TH1VFX_Luxury"); //-------- Unit -------- MeilingZzz = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/EgyptianMeilingZzz"); KanakoSit = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/GermanyKanako_Sit"); UtsuhoBoom = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/IndianUtsuho_Boom"); NorwaySuikaHuge = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/NorwaySuika_Medium"); NorwaySuikaSuperHuge = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/NorwaySuika_Huge"); NorwayAunnStone = TH1Resource.ResourceLoader.Load("ArtResources/TH1Units/Giant/NorwayAunn_Stone"); } public bool TryGetMoveHighlightVisual(MoveHighlightType type, out MoveHighlightVisual visual) { visual = null; if (!_moveHighlightVisuals.TryGetValue((int)type, out var rawVisual)) { return false; } visual = rawVisual as MoveHighlightVisual; return visual != null; } private void SetMoveHighlightVisual(MoveHighlightType type, Sprite sprite, Color color) { _moveHighlightVisuals[(int)type] = new MoveHighlightVisual(sprite, color); } } }