Commit d341b7f6 authored by ElderLich's avatar ElderLich

Feature: Added GY and Banishment Zone as well for 3 Tab

parent 73e5e1c6
...@@ -349,6 +349,7 @@ MonoBehaviour: ...@@ -349,6 +349,7 @@ MonoBehaviour:
listSingleColumn: {fileID: 21300000, guid: 1593fc89217af42499c6ab1514ab1709, type: 3} listSingleColumn: {fileID: 21300000, guid: 1593fc89217af42499c6ab1514ab1709, type: 3}
listViewIconExpand: {fileID: 21300000, guid: 838190b6b8c45334bab89da28a238150, type: 3} listViewIconExpand: {fileID: 21300000, guid: 838190b6b8c45334bab89da28a238150, type: 3}
listViewIconDefault: {fileID: 21300000, guid: 9f9e97c267d35b84db512595c857ffba, type: 3} listViewIconDefault: {fileID: 21300000, guid: 9f9e97c267d35b84db512595c857ffba, type: 3}
listCardStatsBase: {fileID: 21300000, guid: 5b696a850bf3a3443bf0e67396ecc181, type: 3}
CardAffectDisable: {fileID: 21300000, guid: 5e4f5281aaf73274c888adbe5afce0e0, type: 3} CardAffectDisable: {fileID: 21300000, guid: 5e4f5281aaf73274c888adbe5afce0e0, type: 3}
CardAffectEquip: {fileID: 21300000, guid: 1a678cbbdf93a5449aa105d7c2d6d83a, type: 3} CardAffectEquip: {fileID: 21300000, guid: 1a678cbbdf93a5449aa105d7c2d6d83a, type: 3}
CardAffectField: {fileID: 21300000, guid: 4185642e1b53a404ea1e358e5ccda6fe, type: 3} CardAffectField: {fileID: 21300000, guid: 4185642e1b53a404ea1e358e5ccda6fe, type: 3}
......
...@@ -22,8 +22,17 @@ namespace MDPro3.UI ...@@ -22,8 +22,17 @@ namespace MDPro3.UI
const float ExtraDeckToggleButtonWidth = 64f; const float ExtraDeckToggleButtonWidth = 64f;
const float ExtraDeckToggleButtonHeight = 62f; const float ExtraDeckToggleButtonHeight = 62f;
const float ExtraDeckToggleButtonIconSize = 42f; const float ExtraDeckToggleButtonIconSize = 42f;
const float ExtraDeckToggleButtonOverlap = 4f; const float ExtraDeckToggleButtonOverlap = 0f;
const float ExtraDeckToggleButtonTopInset = 0f; const float ExtraDeckToggleButtonTopInset = 0f;
const float ExtraDeckToggleAdornmentWidth = 40f;
const float ExtraDeckToggleAdornmentHeight = 106f;
const float ExtraDeckToggleAdornmentVisibleStartX = 22f;
const float ExtraDeckToggleAdornmentOffsetY = 22f;
const float ExtraDeckToggleJoinPatchWidth = 16f;
const float ExtraDeckToggleJoinPatchHeight = 16f;
const float ExtraDeckToggleJoinPatchOffsetX = ExtraDeckToggleButtonWidth - 2f;
const float ExtraDeckToggleJoinPatchOffsetY = 0f;
const float ExtraDeckToggleJoinPatchTopLineHeight = 2f;
const float HiddenPadding = 20f; const float HiddenPadding = 20f;
public RectTransform baseRect; public RectTransform baseRect;
...@@ -43,6 +52,9 @@ namespace MDPro3.UI ...@@ -43,6 +52,9 @@ namespace MDPro3.UI
bool extraDeckGridMode = false; bool extraDeckGridMode = false;
Button extraDeckModeButton; Button extraDeckModeButton;
Image extraDeckModeButtonIcon; Image extraDeckModeButtonIcon;
RectTransform extraDeckModeButtonSeamRect;
RectTransform extraDeckModeButtonJoinPatchRect;
RectTransform extraDeckModeButtonJoinPatchTopLineRect;
public void Show(List<GameCard> cards, CardLocation location, int controller) public void Show(List<GameCard> cards, CardLocation location, int controller)
{ {
...@@ -56,7 +68,7 @@ namespace MDPro3.UI ...@@ -56,7 +68,7 @@ namespace MDPro3.UI
this.cards = cards; this.cards = cards;
this.location = location; this.location = location;
this.controller = controller; this.controller = controller;
if ((this.location & CardLocation.Extra) > 0 && (!showing || (previousLocation & CardLocation.Extra) == 0)) if (IsToggleListLocation(this.location) && (!showing || !IsToggleListLocation(previousLocation)))
extraDeckGridMode = false; extraDeckGridMode = false;
if (!showing) if (!showing)
...@@ -219,13 +231,17 @@ namespace MDPro3.UI ...@@ -219,13 +231,17 @@ namespace MDPro3.UI
bool ShouldUseExtraDeckGrid() bool ShouldUseExtraDeckGrid()
{ {
return (location & CardLocation.Extra) > 0 && extraDeckGridMode; return IsToggleListLocation(location) && extraDeckGridMode;
} }
void EnsureExtraDeckModeToggle() void EnsureExtraDeckModeToggle()
{ {
TryBindExistingExtraDeckModeToggle();
if (extraDeckModeButton != null) if (extraDeckModeButton != null)
{
UpdateExtraDeckModeToggleLayout();
return; return;
}
var parent = baseRect; var parent = baseRect;
if (parent == null) if (parent == null)
...@@ -233,17 +249,24 @@ namespace MDPro3.UI ...@@ -233,17 +249,24 @@ namespace MDPro3.UI
var go = new GameObject("ExtraDeckViewToggle", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image), typeof(Button)); var go = new GameObject("ExtraDeckViewToggle", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image), typeof(Button));
go.transform.SetParent(parent, false); go.transform.SetParent(parent, false);
go.transform.SetSiblingIndex(0); go.transform.SetAsLastSibling();
var rect = go.GetComponent<RectTransform>(); var rect = go.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0f, 1f); rect.anchorMin = new Vector2(0f, 1f);
rect.anchorMax = new Vector2(0f, 1f); rect.anchorMax = new Vector2(0f, 1f);
rect.pivot = new Vector2(0f, 1f); rect.pivot = new Vector2(0f, 1f);
rect.anchoredPosition = new Vector2(GetExtraDeckToggleAnchoredX(), -ExtraDeckToggleButtonTopInset); rect.anchoredPosition = Vector2.zero;
rect.sizeDelta = new Vector2(ExtraDeckToggleButtonWidth, ExtraDeckToggleButtonHeight); rect.sizeDelta = Vector2.zero;
var bgImage = go.GetComponent<Image>(); var bgImage = go.GetComponent<Image>();
var baseImage = baseRect != null ? baseRect.GetComponent<Image>() : null; var baseImage = baseRect != null ? baseRect.GetComponent<Image>() : null;
if (baseImage != null) var blackBg = TextureManager.container != null ? TextureManager.container.black : null;
if (blackBg != null)
{
bgImage.sprite = blackBg;
bgImage.type = Image.Type.Simple;
bgImage.color = Color.white;
}
else if (baseImage != null)
{ {
bgImage.sprite = baseImage.sprite; bgImage.sprite = baseImage.sprite;
bgImage.type = baseImage.type; bgImage.type = baseImage.type;
...@@ -268,6 +291,38 @@ namespace MDPro3.UI ...@@ -268,6 +291,38 @@ namespace MDPro3.UI
extraDeckModeButtonIcon.preserveAspect = true; extraDeckModeButtonIcon.preserveAspect = true;
extraDeckModeButtonIcon.color = Color.white; extraDeckModeButtonIcon.color = Color.white;
extraDeckModeButtonIcon.raycastTarget = false; extraDeckModeButtonIcon.raycastTarget = false;
EnsureExtraDeckModeToggleSeam(go.transform);
EnsureExtraDeckModeToggleJoinPatch(go.transform);
UpdateExtraDeckModeToggleLayout();
}
void TryBindExistingExtraDeckModeToggle()
{
if (extraDeckModeButton != null || baseRect == null)
return;
var existing = baseRect.Find("ExtraDeckViewToggle");
if (existing == null)
return;
extraDeckModeButton = existing.GetComponent<Button>();
if (extraDeckModeButton == null)
return;
var iconTransform = existing.Find("Icon");
if (iconTransform != null)
extraDeckModeButtonIcon = iconTransform.GetComponent<Image>();
EnsureExtraDeckModeToggleSeam(existing);
EnsureExtraDeckModeToggleJoinPatch(existing);
var bgImage = existing.GetComponent<Image>();
if (bgImage != null)
extraDeckModeButton.targetGraphic = bgImage;
extraDeckModeButton.onClick.RemoveListener(OnExtraDeckModeButtonClick);
extraDeckModeButton.onClick.AddListener(OnExtraDeckModeButtonClick);
} }
void UpdateExtraDeckModeToggle() void UpdateExtraDeckModeToggle()
...@@ -275,9 +330,11 @@ namespace MDPro3.UI ...@@ -275,9 +330,11 @@ namespace MDPro3.UI
if (extraDeckModeButton == null || extraDeckModeButtonIcon == null) if (extraDeckModeButton == null || extraDeckModeButtonIcon == null)
return; return;
var isExtraLocation = (location & CardLocation.Extra) > 0; UpdateExtraDeckModeToggleLayout();
extraDeckModeButton.gameObject.SetActive(isExtraLocation);
if (!isExtraLocation) var isToggleLocation = IsToggleListLocation(location);
extraDeckModeButton.gameObject.SetActive(isToggleLocation);
if (!isToggleLocation)
return; return;
if (ShouldUseExtraDeckGrid()) if (ShouldUseExtraDeckGrid())
...@@ -292,13 +349,18 @@ namespace MDPro3.UI ...@@ -292,13 +349,18 @@ namespace MDPro3.UI
void OnExtraDeckModeButtonClick() void OnExtraDeckModeButtonClick()
{ {
if ((location & CardLocation.Extra) == 0) if (!IsToggleListLocation(location))
return; return;
extraDeckGridMode = !extraDeckGridMode; extraDeckGridMode = !extraDeckGridMode;
RefreshList(); RefreshList();
} }
bool IsToggleListLocation(CardLocation targetLocation)
{
return (targetLocation & (CardLocation.Extra | CardLocation.Grave | CardLocation.Removed)) > 0;
}
float GetHiddenPosX() float GetHiddenPosX()
{ {
return (baseRect.sizeDelta.x + HiddenPadding + GetToggleLeftProtrusion()) * Config.GetUIScale(1.18f) return (baseRect.sizeDelta.x + HiddenPadding + GetToggleLeftProtrusion()) * Config.GetUIScale(1.18f)
...@@ -321,6 +383,175 @@ namespace MDPro3.UI ...@@ -321,6 +383,175 @@ namespace MDPro3.UI
return -ExtraDeckToggleButtonWidth + ExtraDeckToggleButtonOverlap; return -ExtraDeckToggleButtonWidth + ExtraDeckToggleButtonOverlap;
} }
float GetExtraDeckToggleAdornmentAnchoredX()
{
// Lock the visible seam line to the toggle start (left edge).
return -ExtraDeckToggleAdornmentVisibleStartX;
}
void UpdateExtraDeckModeToggleLayout()
{
if (extraDeckModeButton != null && extraDeckModeButton.transform is RectTransform buttonRect)
{
buttonRect.anchoredPosition = new Vector2(GetExtraDeckToggleAnchoredX(), -ExtraDeckToggleButtonTopInset);
buttonRect.sizeDelta = new Vector2(ExtraDeckToggleButtonWidth, ExtraDeckToggleButtonHeight);
}
if (extraDeckModeButtonSeamRect != null)
{
extraDeckModeButtonSeamRect.anchoredPosition =
new Vector2(GetExtraDeckToggleAdornmentAnchoredX(), ExtraDeckToggleAdornmentOffsetY);
extraDeckModeButtonSeamRect.sizeDelta =
new Vector2(ExtraDeckToggleAdornmentWidth, ExtraDeckToggleAdornmentHeight);
}
if (extraDeckModeButtonJoinPatchRect != null)
{
extraDeckModeButtonJoinPatchRect.anchoredPosition =
new Vector2(ExtraDeckToggleJoinPatchOffsetX, ExtraDeckToggleJoinPatchOffsetY);
extraDeckModeButtonJoinPatchRect.sizeDelta =
new Vector2(ExtraDeckToggleJoinPatchWidth, ExtraDeckToggleJoinPatchHeight);
}
if (extraDeckModeButtonJoinPatchTopLineRect != null)
{
extraDeckModeButtonJoinPatchTopLineRect.anchoredPosition = Vector2.zero;
extraDeckModeButtonJoinPatchTopLineRect.sizeDelta = new Vector2(0f, ExtraDeckToggleJoinPatchTopLineHeight);
}
}
void EnsureExtraDeckModeToggleSeam(Transform parent)
{
extraDeckModeButtonSeamRect = null;
var seamSprite = GetToggleBackgroundSprite();
if (parent == null || seamSprite == null)
return;
RectTransform seamRect = null;
var seamTransform = parent.Find("Seam");
if (seamTransform != null)
{
seamTransform.gameObject.SetActive(true);
seamRect = seamTransform as RectTransform;
if (seamRect == null)
seamRect = seamTransform.GetComponent<RectTransform>();
}
if (seamRect == null)
{
var seam = new GameObject("Seam", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
seam.transform.SetParent(parent, false);
seam.transform.SetAsFirstSibling();
seamRect = seam.GetComponent<RectTransform>();
}
seamRect.anchorMin = new Vector2(0f, 1f);
seamRect.anchorMax = new Vector2(0f, 1f);
seamRect.pivot = new Vector2(0f, 1f);
seamRect.anchoredPosition = Vector2.zero;
seamRect.sizeDelta = Vector2.zero;
var seamImage = seamRect.GetComponent<Image>();
if (seamImage == null)
seamImage = seamRect.gameObject.AddComponent<Image>();
seamImage.sprite = seamSprite;
seamImage.type = Image.Type.Simple;
seamImage.color = Color.white;
seamImage.raycastTarget = false;
extraDeckModeButtonSeamRect = seamRect;
var middleMaskTransform = seamRect.Find("MiddleMask");
if (middleMaskTransform != null)
middleMaskTransform.gameObject.SetActive(false);
}
void EnsureExtraDeckModeToggleJoinPatch(Transform parent)
{
extraDeckModeButtonJoinPatchRect = null;
extraDeckModeButtonJoinPatchTopLineRect = null;
if (parent == null)
return;
RectTransform patchRect = null;
var patchTransform = parent.Find("JoinPatch");
if (patchTransform != null)
{
patchTransform.gameObject.SetActive(true);
patchRect = patchTransform as RectTransform;
if (patchRect == null)
patchRect = patchTransform.GetComponent<RectTransform>();
}
if (patchRect == null)
{
var patch = new GameObject("JoinPatch", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
patch.transform.SetParent(parent, false);
patch.transform.SetSiblingIndex(0);
patchRect = patch.GetComponent<RectTransform>();
}
patchRect.anchorMin = new Vector2(0f, 1f);
patchRect.anchorMax = new Vector2(0f, 1f);
patchRect.pivot = new Vector2(0f, 1f);
var patchImage = patchRect.GetComponent<Image>();
var blackBg = TextureManager.container != null ? TextureManager.container.black : null;
if (blackBg != null)
{
patchImage.sprite = blackBg;
patchImage.type = Image.Type.Simple;
patchImage.color = Color.white;
}
else
{
patchImage.sprite = null;
patchImage.color = Color.black;
}
patchImage.raycastTarget = false;
RectTransform topLineRect = null;
var topLineTransform = patchRect.Find("TopLine");
if (topLineTransform != null)
{
topLineTransform.gameObject.SetActive(true);
topLineRect = topLineTransform as RectTransform;
if (topLineRect == null)
topLineRect = topLineTransform.GetComponent<RectTransform>();
}
if (topLineRect == null)
{
var topLine = new GameObject("TopLine", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
topLine.transform.SetParent(patchRect, false);
topLineRect = topLine.GetComponent<RectTransform>();
}
topLineRect.anchorMin = new Vector2(0f, 1f);
topLineRect.anchorMax = new Vector2(1f, 1f);
topLineRect.pivot = new Vector2(0.5f, 1f);
var topLineImage = topLineRect.GetComponent<Image>();
if (blackBg != null)
{
topLineImage.sprite = blackBg;
topLineImage.type = Image.Type.Simple;
}
else
{
topLineImage.sprite = null;
}
topLineImage.color = new Color(0.78f, 0.78f, 0.78f, 1f);
topLineImage.raycastTarget = false;
extraDeckModeButtonJoinPatchRect = patchRect;
extraDeckModeButtonJoinPatchTopLineRect = topLineRect;
}
Sprite GetToggleBackgroundSprite()
{
return TextureManager.container != null ? TextureManager.container.listCardStatsBase : null;
}
void ClearList() void ClearList()
{ {
foreach (var obj in cardObjs) foreach (var obj in cardObjs)
......
...@@ -301,6 +301,7 @@ namespace MDPro3 ...@@ -301,6 +301,7 @@ namespace MDPro3
public Sprite listSingleColumn; public Sprite listSingleColumn;
public Sprite listViewIconExpand; public Sprite listViewIconExpand;
public Sprite listViewIconDefault; public Sprite listViewIconDefault;
public Sprite listCardStatsBase;
[Header("Card Affect")] [Header("Card Affect")]
public Sprite CardAffectDisable; public Sprite CardAffectDisable;
......
fileFormatVersion: 2
guid: 5b696a850bf3a3443bf0e67396ecc181
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment