231 lines
12 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|