2026-06-11 00:34:50 +08:00

231 lines
12 KiB
C#

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<string, Sprite> GroundSprites = new();
public Dictionary<string, Sprite> ForestSprites = new();
public Dictionary<string, Sprite> MountainSprites = new();
public Sprite WaterSprite;
public Sprite OceanSprite;
public Dictionary<string, Sprite> 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<int, object> _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 Dictionary<ChessType, Sprite> ChessSpriteDict = new();
public void Init()
{
for (int i = 0; i < 9; i++)
{
Roads["Road"+i] = TH1Resource.ResourceLoader.Load<Sprite>($"ArtResources/TH1Miscs/TH1Misc_Road{i}");
Roads["WaterRoad"+i] = TH1Resource.ResourceLoader.Load<Sprite>($"ArtResources/TH1Miscs/TH1Misc_WaterRoad{i}");
}
UnitInfoSelf = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/InGame/UnitInfoSelf");
UnitInfoEnemy = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/InGame/UnitInfoEnemy");
//--------UI--------
TechCompleteBackground = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/TechTree/TH1Tech_GreenCircle");
TechLockedBackground = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/TechTree/TH1Tech_DarkCircle");
TechAvailableBackground = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/TechTree/TH1Tech_BlueCircle");
TH1Icon_ActionDefense = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/TH1Icon_ActionDefense");
AchievementStar = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/Common/UILibraryStar");
AchievementStarGray = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/Common/UILibraryStarGray");
ActionBGAvailable = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/Common/bgAvailable");
ActionBGExpensive = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/Common/bgExpensive");
ActionBGUnavailable = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1UI/Common/bgUnavailable");
Ally = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/Ally_256");
BreakAlly = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/BreakAlly_256");
Embassy = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/Embassy_256");
BreakEmbassy = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/BreakEmbassy_256");
ChessSpriteDict[ChessType.None] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_Knights");
ChessSpriteDict[ChessType.King] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_King");
ChessSpriteDict[ChessType.Queen] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_Queen");
ChessSpriteDict[ChessType.Bishop] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_Bishop");
ChessSpriteDict[ChessType.Knight] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_Knights");
ChessSpriteDict[ChessType.Rook] = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/ChessIcon/ChessIcon_Rook");
BubbleActionUpgrade = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionUpgrade_256");
BubbleActionCapture = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionCapture_256");
BubbleActionTreasure = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionTreasure_256");
BubbleActionStarfish = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/Action/CircleAction256x256/TH1Icon_BubbleActionStarfish_256");
CommonBG_CircleGrey = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Common/CommonBG/CommonCircleGrey");
CommonBG_CircleBlue = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Common/CommonBG/CommonCircleBlue");
CommonBG_CircleGreen = TH1Resource.ResourceLoader.Load<Sprite>("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<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialSlow"),
moveHighlightRed);
SetMoveHighlightVisual(
MoveHighlightType.Enemy,
TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_Enemy"),
Color.white);
SetMoveHighlightVisual(
MoveHighlightType.Boat,
TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialBoat"),
moveHighlightDeepBlue);
SetMoveHighlightVisual(
MoveHighlightType.Ashore,
TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialAshore"),
moveHighlightDeepBlue);
SetMoveHighlightVisual(
MoveHighlightType.Sanae,
TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/Moriya/Skill_SanaeWindX"),
moveHighlightGreen);
SetMoveHighlightVisual(
MoveHighlightType.Teleport,
TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialTeleport"),
moveHighlightDeepBlue);
SetMoveHighlightVisual(
MoveHighlightType.Momiji,
TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/Moriya/Skill_MOMIJIHUNTER"),
moveHighlightGreen);
SetMoveHighlightVisual(
MoveHighlightType.Yuugi,
TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/Skill_YuugiDash"),
moveHighlightGreen);
SetMoveHighlightVisual(
MoveHighlightType.Road,
TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialRoad"),
moveHighlightGreen);
//-------- GridVFX --------
GridVFXDie = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Die");
GridVFXCounterDie = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_CounterDie");
GridVFXROYALFLAMES = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/Skill_ROYALFLAMES");
GridVFXTEWI = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/TewiFrenchBuff");
GridVFXCoin = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/CommonIcon/CoinIcon");
GridVFXKAGUYA = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/SkillIcon/SKill_KAGUYAFRENCHFOREVERBUFF");
GridVFXHeal = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Heal");
GridVFXConnect = TH1Resource.ResourceLoader.Load<Sprite>("TH1UI/Icon/CityInfo/TH1IconCityInfoConnected");
GridVFXTreasure = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Treasure");
GridVFXRedMistCreate = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_RedMistCreate");
GridVFXSakuyaGuard = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_SakuyaGuard");
GridVFXLucky = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Treasure");
GridVFXBigLucky= TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_BigLucky");
GridVFXUnlucky = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Unlucky");
GridVFXBigUnlucky = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_BigUnlucky");
GridVFXLuckyText = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_LuckyText");
GridVFXBigLuckyText = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_BigLuckyText");
GridVFXUnluckyText = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_UnluckyText");
GridVFXBigUnluckyText = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_BigUnluckyText");
GridVFXLuxury = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Luxury");
//-------- Unit --------
MeilingZzz = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Units/Giant/EgyptianMeilingZzz");
KanakoSit = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Units/Giant/GermanyKanako_Sit");
UtsuhoBoom = TH1Resource.ResourceLoader.Load<Sprite>("ArtResources/TH1Units/Giant/IndianUtsuho_Boom");
}
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);
}
}
}