diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/VirtualItemTemplates/RomItemTemplate.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/VirtualItemTemplates/RomItemTemplate.prefab
index e90a36b5..fe81f02f 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/VirtualItemTemplates/RomItemTemplate.prefab
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/VirtualItemTemplates/RomItemTemplate.prefab
@@ -353,7 +353,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!224 &88397014911048519
RectTransform:
m_ObjectHideFlags: 0
@@ -595,7 +595,7 @@ RectTransform:
m_Father: {fileID: 4825215963562112837}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
@@ -673,6 +673,81 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2970190240800710577
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1123244137077354552}
+ - component: {fileID: 196912998120336165}
+ - component: {fileID: 2537658034304089639}
+ m_Layer: 5
+ m_Name: Star
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1123244137077354552
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2970190240800710577}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -2}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8105925540140519754}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 8.2, y: -10.1}
+ m_SizeDelta: {x: 48.319504, y: 40.7695}
+ m_Pivot: {x: 0, y: 1}
+--- !u!222 &196912998120336165
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2970190240800710577}
+ m_CullTransparentMesh: 1
+--- !u!114 &2537658034304089639
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2970190240800710577}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 0, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 7637870703528583553, guid: a8e14774cb9b81d4799116466bc09437, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
--- !u!1 &3095305487988041719
GameObject:
m_ObjectHideFlags: 0
@@ -814,6 +889,7 @@ MonoBehaviour:
DownProgress: {fileID: 1484915906009859069}
FileReadyFlag: {fileID: 6316945668089981796}
DownloadComplete: {fileID: 6633045760783967661}
+ Star: {fileID: 0}
--- !u!114 &5700455559359757662
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -1021,6 +1097,7 @@ RectTransform:
m_Children:
- {fileID: 6087025893861054323}
- {fileID: 1361359478345282377}
+ - {fileID: 1123244137077354552}
- {fileID: 88397014911048519}
m_Father: {fileID: 8754483333502849411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
index f8ce5994..ce00a72c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
@@ -85,5 +85,10 @@
/// RomID
///
OnRomFileDownloaded,
+ ///
+ /// 当Rom收藏状态变化时触发
+ /// RomID
+ ///
+ OnRomStarStateChanged, //TODO 实现这个事件
}
}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs
index d3e3bbc2..6a59e5d4 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs
@@ -184,6 +184,7 @@ namespace AxibugEmuOnline.Client
public string imgUrl;
public string hash;
public int stars;
+ public int isStar;//TODO 实现收藏标记
}
[Serializable]
public class Resp_CheckStandInfo
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs
index 73b7059f..e1f9c464 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs
@@ -55,8 +55,18 @@ namespace AxibugEmuOnline.Client
public int Index { get; private set; }
/// 在查询结果中的所在页
public int Page { get; private set; }
- public string Hash => webData != null ? webData.hash : string.Empty;
-
+ public string Hash => webData != null ? webData.hash : string.Empty;
+ /// 标记是否收藏
+ public bool Star
+ {
+ get { return webData != null ? webData.isStar > 0 : false; }
+ set
+ {
+ if (webData == null) return;
+ webData.isStar = value ? 1 : 0;
+ }
+ }
+
public event Action OnDownloadOver;
public event Action OnInfoFilled;
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
index fef19578..1a499722 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
@@ -1,9 +1,11 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.Common;
+using AxibugEmuOnline.Client.Event;
using AxibugProtobuf;
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using static AxibugEmuOnline.Client.HttpAPI;
namespace AxibugEmuOnline.Client
@@ -33,6 +35,16 @@ namespace AxibugEmuOnline.Client
m_romSearchFunc = App.httpAPI.SearchNesRomList;
break;
}
+
+ Eventer.Instance.RegisterEvent(EEvent.OnRomStarStateChanged, OnRomStarStateChanged);
+ }
+
+ private void OnRomStarStateChanged(int romID, bool star)
+ {
+ var targetRom = nesRomFetchList.FirstOrDefault(rom => rom.ID == romID);
+ if (targetRom == null) return;
+
+ targetRom.Star = star;
}
public RomFile GetRomFile(string romFileName)
@@ -42,8 +54,6 @@ namespace AxibugEmuOnline.Client
return romFile;
}
-
-
/// 清除所有下载的Rom文件
public void ClearRomFile()
{
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomItem.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomItem.cs
index f3462659..480858c8 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomItem.cs
@@ -21,12 +21,24 @@ namespace AxibugEmuOnline.Client
GameObject FileReadyFlag;
[SerializeField]
UIShiny DownloadComplete;
+ [SerializeField]
+ GameObject Star;
public int Index { get; set; }
- public bool IsFav { get; }
+ public bool IsStar
+ {
+ get
+ {
+ return m_romfile != null && m_romfile.InfoReady ? m_romfile.Star : false;
+ }
+ }
+ public int RomID { get { return m_romfile != null && m_romfile.InfoReady ? m_romfile.ID : -1; } }
- private RomLib m_romlib => App.nesRomLib;
+ private RomLib m_romlib => App.nesRomLib;
+
+ public bool RomInfoReady => m_romfile != null && m_romfile.InfoReady;
+
private RomFile m_romfile;
protected override void OnEnable()
@@ -103,6 +115,7 @@ namespace AxibugEmuOnline.Client
m_romImage.sprite = img;
if (m_select) LaunchUI.Instance.SetRomPreview(img);
});
+ Star.SetActiveEx(m_romfile.Star);
}
}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs
index 47ade89c..79d49980 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs
@@ -34,6 +34,7 @@ namespace AxibugEmuOnline.Client
{
new OptMenu_Search(this),
new OptMenu_ShowAll(this),
+ new OptMenu_Fav(this),
};
}
@@ -111,14 +112,11 @@ namespace AxibugEmuOnline.Client
private RomListMenuItem m_romListUI;
private ThirdMenuRoot m_romListSub;
- public override string Name
- {
- get
- {
- var isFav = (m_romListSub.GetItemUIByIndex(m_romListSub.SelectIndex) as RomItem).IsFav;
- return isFav ? "收藏" : "取消收藏";
- }
- }
+ private RomItem m_currentSelect => m_romListSub.GetItemUIByIndex(m_romListSub.SelectIndex) as RomItem;
+
+ public override bool Visible => m_currentSelect.RomInfoReady;
+
+ public override string Name { get { return m_currentSelect.IsStar ? "取消收藏" : "收藏"; } }
public OptMenu_Fav(RomListMenuItem romListUI)
{
@@ -128,6 +126,11 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{
+ var romItem = m_currentSelect;
+ if (!romItem.IsStar)
+ App.share.SendGameStar(romItem.RomID, 0);
+ else
+ App.share.SendGameStar(romItem.RomID, 1);
}
}
}