Commit 929de022 authored by hex's avatar hex

Changed card addition from double-click to long-press (good news for those with tenosynovitis)

parent 5cf5390a
Pipeline #37618 failed
using System;
using System.Net.Sockets;
using YGOSharp.Network.Enums;
using UnityEngine;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Net.Sockets;
using System.Text;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using YGOSharp.Network.Enums;
using YGOSharp.OCGWrapper.Enums;
public static class TcpHelper
{
public static TcpClient tcpClient = null;
static NetworkStream networkStream = null;
static NetworkStream networkStream = null;
static bool canjoin = true;
static bool roomListChecking = false;
public static void join(string ipString, string name, string portString, string pswString, string version)
public static void join(
string ipString,
string name,
string portString,
string pswString,
string version
)
{
if (canjoin)
{
......@@ -26,7 +32,11 @@ public static class TcpHelper
canjoin = false;
try
{
tcpClient = new TcpClientWithTimeout(ipString, int.Parse(portString), 3000).Connect();
tcpClient = new TcpClientWithTimeout(
ipString,
int.Parse(portString),
3000
).Connect();
networkStream = tcpClient.GetStream();
Thread t = new Thread(receiver);
t.Start();
......@@ -36,7 +46,7 @@ public static class TcpHelper
roomListChecking = true;
}
else
{
{
roomListChecking = false;
}
CtosMessage_JoinGame(pswString, version);
......@@ -59,7 +69,9 @@ public static class TcpHelper
{
try
{
while (tcpClient != null && networkStream != null && tcpClient.Connected && Program.Running)
while (
tcpClient != null && networkStream != null && tcpClient.Connected && Program.Running
)
{
byte[] data = SocketMaster.ReadPacket(networkStream);
addDateJumoLine(data);
......@@ -72,7 +84,6 @@ public static class TcpHelper
onDisConnected = true;
Program.DEBUGLOG("onDisConnected 3");
}
}
public static void addDateJumoLine(byte[] data)
......@@ -95,7 +106,7 @@ public static class TcpHelper
public static void preFrameFunction()
{
if (datas.Count>0)
if (datas.Count > 0)
{
if (Monitor.TryEnter(datas))
{
......@@ -187,7 +198,7 @@ public static class TcpHelper
}
catch (System.Exception e)
{
// Program.DEBUGLOG(e);
// Program.DEBUGLOG(e);
}
}
datas.Clear();
......@@ -198,23 +209,34 @@ public static class TcpHelper
{
onDisConnected = false;
Program.I().ocgcore.setDefaultReturnServant();
if (TcpHelper.tcpClient != null)
try
{
if (TcpHelper.tcpClient.Connected)
if (tcpClient != null)
{
tcpClient.Client.Shutdown(0);
if (tcpClient.Connected)
{
tcpClient.Client.Shutdown(SocketShutdown.Both);
}
tcpClient.Close();
}
}
catch (Exception e)
{
Debug.LogWarning("Socket cleanup failed: " + e.Message);
}
tcpClient = null;
if (Program.I().ocgcore.isShowed == false)
{
if (Program.I().menu.isShowed == false)
if (Program.I().menu.isShowed == false)
{
if (Program.I().mycard.isMatching) {
if (Program.I().mycard.isMatching)
{
Program.I().shiftToServant(Program.I().mycard);
} else {
}
else
{
Program.I().shiftToServant(Program.I().selectServer);
}
}
......@@ -225,10 +247,13 @@ public static class TcpHelper
}
else
{
Program.I().cardDescription.RMSshow_none(InterString.Get("对方离开游戏,您现在可以截图。"));
Program
.I()
.cardDescription.RMSshow_none(
InterString.Get("对方离开游戏,您现在可以截图。")
);
Program.I().ocgcore.forceMSquit();
}
}
}
......@@ -269,7 +294,6 @@ public static class TcpHelper
public static void CtosMessage_Response(byte[] response)
{
Package message = new Package();
message.Fuction = (int)CtosMessage.Response;
message.Data.writer.Write(response);
......@@ -277,6 +301,7 @@ public static class TcpHelper
}
public static YGOSharp.Deck deck;
public static void CtosMessage_UpdateDeck(YGOSharp.Deck deckFor)
{
if (deckFor.Main.Count == 0)
......@@ -335,12 +360,11 @@ public static class TcpHelper
Send(message);
}
public static void CtosMessage_CreateGame()
{
}
public static void CtosMessage_CreateGame() { }
public static List<string> deckStrings = new List<string>();
public static void CtosMessage_JoinGame(string psw,string version)
public static void CtosMessage_JoinGame(string psw, string version)
{
deckStrings.Clear();
Package message = new Package();
......@@ -467,7 +491,7 @@ public static class TcpHelper
return re;
}
public static string lastRecordName = "";
public static string lastRecordName = "";
public static void SaveRecord()
{
......@@ -541,6 +565,7 @@ public class Package
{
public int Fuction = 0;
public BinaryMaster Data = null;
public Package()
{
Fuction = (int)CtosMessage.Response;
......@@ -553,6 +578,7 @@ public class BinaryMaster
MemoryStream memstream = null;
public BinaryReader reader = null;
public BinaryWriter writer = null;
public BinaryMaster(byte[] raw = null)
{
if (raw == null)
......@@ -566,21 +592,25 @@ public class BinaryMaster
reader = new BinaryReader(memstream);
writer = new BinaryWriter(memstream);
}
public void set(byte[] raw)
{
memstream = new MemoryStream(raw);
reader = new BinaryReader(memstream);
writer = new BinaryWriter(memstream);
}
public byte[] get()
{
byte[] bytes = memstream.ToArray();
return bytes;
}
public int getLength()
{
return (int)memstream.Length;
}
public override string ToString()
{
string return_value = "";
......@@ -588,11 +618,11 @@ public class BinaryMaster
for (int i = 0; i < bytes.Length; i++)
{
return_value += ((int)bytes[i]).ToString();
if (i < bytes.Length - 1) return_value += ",";
if (i < bytes.Length - 1)
return_value += ",";
}
return return_value;
}
}
public static class BinaryExtensions
......@@ -617,7 +647,6 @@ public static class BinaryExtensions
{
UnityEngine.Debug.Log(e);
}
}
public static string ReadUnicode(this BinaryReader reader, int len)
......@@ -661,7 +690,7 @@ public static class BinaryExtensions
return a;
}
public static void readCardData(this BinaryReader r, gameCard cardTemp=null)
public static void readCardData(this BinaryReader r, gameCard cardTemp = null)
{
gameCard cardToRefresh = cardTemp;
int flag = r.ReadInt32();
......@@ -670,13 +699,13 @@ public static class BinaryExtensions
if ((flag & (int)Query.Code) != 0)
{
code= r.ReadInt32();
code = r.ReadInt32();
}
if ((flag & (int)Query.Position) != 0)
{
gps = r.ReadGPS();
cardToRefresh = null;
cardToRefresh = Program.I().ocgcore.GCS_cardGet(gps,false);
cardToRefresh = Program.I().ocgcore.GCS_cardGet(gps, false);
}
if (cardToRefresh == null)
......@@ -699,7 +728,6 @@ public static class BinaryExtensions
cardToRefresh.p = gps;
}
if (data.Id > 0)
{
if ((cardToRefresh.p.location & (UInt32)CardLocation.Hand) > 0)
......@@ -795,7 +823,11 @@ public static class BinaryExtensions
l3 = r.ReadInt32(); //link value
data.LinkMarker = r.ReadInt32();
}
if (((flag & (int)Query.Level) != 0) || ((flag & (int)Query.Rank) != 0) || ((flag & (int)Query.Link) != 0))
if (
((flag & (int)Query.Level) != 0)
|| ((flag & (int)Query.Rank) != 0)
|| ((flag & (int)Query.Link) != 0)
)
{
if (l1 > l2)
{
......@@ -805,7 +837,7 @@ public static class BinaryExtensions
{
data.Level = l2;
}
if(l3 > data.Level)
if (l3 > data.Level)
data.Level = l3;
}
......@@ -842,7 +874,6 @@ public class SocketMaster
var buf = ReadFull(stream, plen);
return buf;
}
}
public class TcpClientWithTimeout
......@@ -860,6 +891,7 @@ public class TcpClientWithTimeout
_port = port;
_timeout_milliseconds = timeout_milliseconds;
}
public TcpClient Connect()
{
// kick off the thread that tries to connect
......@@ -867,7 +899,7 @@ public class TcpClientWithTimeout
exception = null;
Thread thread = new Thread(new ThreadStart(BeginConnect));
thread.IsBackground = true; // 作为后台线程处理
// 不会占用机器太长的时间
// 不会占用机器太长的时间
thread.Start();
// 等待如下的时间
......@@ -891,13 +923,17 @@ public class TcpClientWithTimeout
{
// 同样地抛出错误
thread.Abort();
string message = string.Format("TcpClient connection to {0}:{1} timed out",
_hostname, _port);
string message = string.Format(
"TcpClient connection to {0}:{1} timed out",
_hostname,
_port
);
TcpHelper.onDisConnected = true;
Program.DEBUGLOG("onDisConnected 8");
throw new TimeoutException(message);
}
}
protected void BeginConnect()
{
try
......
......@@ -3,10 +3,22 @@ using System.Collections.Generic;
using System.IO;
using UnityEngine;
using YGOSharp.OCGWrapper.Enums;
public class DeckManager : ServantWithCardDescription
{
#region UI
// 优化长按检测的变量,以支持持续添加
private MonoCardInDeckManager cardForLongPress = null;
private float pressStartTime = 0f;
private Vector3 mouseDownPosition; // 记录鼠标按下时的屏幕位置,用于区分点击和拖拽
// 用于持续添加的常量和状态变量
private const float INITIAL_LONG_PRESS_DURATION = 0.5f; // 初始长按触发时间
private const float CONTINUOUS_ADD_INTERVAL = 0.15f; // 持续添加的间隔时间(秒)
private bool isContinuouslyAdding = false; // 是否已进入持续添加模式
private float nextAddCardTime = 0f; // 下一次可以添加卡片的时间点
public enum Condition
{
editDeck = 1,
......@@ -47,22 +59,24 @@ public class DeckManager : ServantWithCardDescription
public override void initialize()
{
gameObjectSearch = create
(
gameObjectSearch = create(
Program.I().new_ui_search,
Program.camera_back_ground_2d.ScreenToWorldPoint(new Vector3(Screen.width + 600, Screen.height / 2, 600)),
Program.camera_back_ground_2d.ScreenToWorldPoint(
new Vector3(Screen.width + 600, Screen.height / 2, 600)
),
new Vector3(0, 0, 0),
false,
Program.ui_back_ground_2d
);
gameObjectDetailedSearch = create
(
);
gameObjectDetailedSearch = create(
Program.I().new_ui_searchDetailed,
Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height * 2f, 0)),
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(Screen.width, Screen.height * 2f, 0)
),
new Vector3(0, 0, 0),
false,
Program.ui_main_2d
);
);
UIHelper.InterGameObject(gameObjectSearch);
UIHelper.InterGameObject(gameObjectDetailedSearch);
shiftCondition(Condition.editDeck);
......@@ -72,7 +86,10 @@ public class DeckManager : ServantWithCardDescription
UIPopupList_ban = UIHelper.getByName<UIPopupList>(gameObjectDetailedSearch, "ban_");
UIPopupList_second = UIHelper.getByName<UIPopupList>(gameObjectDetailedSearch, "second_");
UIPopupList_race = UIHelper.getByName<UIPopupList>(gameObjectDetailedSearch, "race_");
UIPopupList_attribute = UIHelper.getByName<UIPopupList>(gameObjectDetailedSearch, "attribute_");
UIPopupList_attribute = UIHelper.getByName<UIPopupList>(
gameObjectDetailedSearch,
"attribute_"
);
UIPopupList_pack = UIHelper.getByName<UIPopupList>(gameObjectDetailedSearch, "pack_");
UIInput_search = UIHelper.getByName<UIInput>(gameObjectSearch, "input_");
UIInput_search.value = "";
......@@ -81,9 +98,17 @@ public class DeckManager : ServantWithCardDescription
UIInput_def = UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_");
for (int i = 0; i < 32; i++)
{
UIToggle_effects[i] = UIHelper.getByName<UIToggle>(gameObjectDetailedSearch, "T (" + (i + 1).ToString() + ")");
UIHelper.trySetLableText(UIToggle_effects[i].gameObject, GameStringManager.get_unsafe(1100 + i));
UIToggle_effects[i].GetComponentInChildren<UILabel>().overflowMethod = UILabel.Overflow.ClampContent;
UIToggle_effects[i] = UIHelper.getByName<UIToggle>(
gameObjectDetailedSearch,
"T (" + (i + 1).ToString() + ")"
);
UIHelper.trySetLableText(
UIToggle_effects[i].gameObject,
GameStringManager.get_unsafe(1100 + i)
);
UIToggle_effects[i].GetComponentInChildren<UILabel>().overflowMethod = UILabel
.Overflow
.ClampContent;
}
UIPopupList_pack.Clear();
UIPopupList_pack.AddItem(GameStringManager.get_unsafe(1310));
......@@ -109,36 +134,44 @@ public class DeckManager : ServantWithCardDescription
clearAll();
UIHelper.registEvent(UIPopupList_main.gameObject, onUIPopupList_main);
UIHelper.registEvent(UIPopupList_second.gameObject, onUIPopupList_second);
superScrollView = new SuperScrollView
(
UIHelper.getByName<UIPanel>(gameObjectSearch, "panel_"),
UIHelper.getByName<UIScrollBar>(gameObjectSearch, "bar_"),
itemOnListProducer,
86
);
Program.go(500, () =>
{
List<MonoCardInDeckManager> cs = new List<MonoCardInDeckManager>();
for (int i = 0; i < 300; i++)
{
cs.Add(createCard());
}
for (int i = 0; i < 300; i++)
{
destroyCard(cs[i]);
superScrollView = new SuperScrollView(
UIHelper.getByName<UIPanel>(gameObjectSearch, "panel_"),
UIHelper.getByName<UIScrollBar>(gameObjectSearch, "bar_"),
itemOnListProducer,
86
);
Program.go(
500,
() =>
{
List<MonoCardInDeckManager> cs = new List<MonoCardInDeckManager>();
for (int i = 0; i < 300; i++)
{
cs.Add(createCard());
}
for (int i = 0; i < 300; i++)
{
destroyCard(cs[i]);
}
}
});
);
}
GameObject itemOnListProducer(string[] Args)
{
GameObject returnValue = null;
returnValue = create(Program.I().new_ui_cardOnSearchList, Vector3.zero, Vector3.zero, false, Program.ui_back_ground_2d);
returnValue = create(
Program.I().new_ui_cardOnSearchList,
Vector3.zero,
Vector3.zero,
false,
Program.ui_back_ground_2d
);
UIHelper.getRealEventGameObject(returnValue).name = Args[0];
UIHelper.trySetLableText(returnValue, Args[2]);
cardPicLoader cardPicLoader_ = UIHelper.getRealEventGameObject(returnValue).AddComponent<cardPicLoader>();
cardPicLoader cardPicLoader_ = UIHelper
.getRealEventGameObject(returnValue)
.AddComponent<cardPicLoader>();
cardPicLoader_.code = int.Parse(Args[0]);
cardPicLoader_.data = YGOSharp.CardsManager.Get(int.Parse(Args[0]));
cardPicLoader_.uiTexture = UIHelper.getByName<UITexture>(returnValue, "pic_");
......@@ -151,7 +184,13 @@ public class DeckManager : ServantWithCardDescription
{
base.applyHideArrangement();
Program.cameraFacing = false;
iTween.MoveTo(gameObjectSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width + 600, Screen.height / 2, 600)), 1.2f);
iTween.MoveTo(
gameObjectSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(Screen.width + 600, Screen.height / 2, 600)
),
1.2f
);
refreshDetail();
}
......@@ -161,7 +200,13 @@ public class DeckManager : ServantWithCardDescription
Program.cameraFacing = true;
UITexture tex = UIHelper.getByName<UITexture>(gameObjectSearch, "under_");
tex.height = Screen.height;
iTween.MoveTo(gameObjectSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width - tex.width / 2, Screen.height / 2, 0)), 1.2f);
iTween.MoveTo(
gameObjectSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(Screen.width - MAIN_PANEL_MARGIN_RIGHT, Screen.height / 2, 0)
),
1.2f
);
refreshDetail();
}
......@@ -187,7 +232,14 @@ public class DeckManager : ServantWithCardDescription
UIHelper.registEvent(toolBar, "sort_", sort);
UIHelper.registEvent(toolBar, "clear_", clear);
UIHelper.registEvent(toolBar, "home_", home);
UIHelper.registEvent(toolBar, "save_", () => { onSave(); });
UIHelper.registEvent(
toolBar,
"save_",
() =>
{
onSave();
}
);
UIHelper.registEvent(toolBar, "lfList_", onLF);
UIHelper.registEvent(toolBar, "copy_", onCopy);
break;
......@@ -243,13 +295,7 @@ public class DeckManager : ServantWithCardDescription
{
try
{
if (
deck.IMain.Count <= 60
&&
deck.IExtra.Count <= 15
&&
deck.ISide.Count <= 15
)
if (deck.IMain.Count <= 60 && deck.IExtra.Count <= 15 && deck.ISide.Count <= 15)
{
string deckInUse = Config.Get("deckInUse", "miaowu");
if (canSave)
......@@ -271,7 +317,11 @@ public class DeckManager : ServantWithCardDescription
{
value += deck.Side[i].ToString() + "\r\n";
}
System.IO.File.WriteAllText("deck/" + deckInUse + ".ydk", value, System.Text.Encoding.UTF8);
System.IO.File.WriteAllText(
"deck/" + deckInUse + ".ydk",
value,
System.Text.Encoding.UTF8
);
}
else
{
......@@ -290,7 +340,11 @@ public class DeckManager : ServantWithCardDescription
{
value += deck.Deck_O.Side[i].ToString() + "\r\n";
}
System.IO.File.WriteAllText("deck/" + deckInUse + ".ydk", value, System.Text.Encoding.UTF8);
System.IO.File.WriteAllText(
"deck/" + deckInUse + ".ydk",
value,
System.Text.Encoding.UTF8
);
}
deckDirty = false;
RMSshow_none(InterString.Get("卡组[?]已经被保存。", deckInUse));
......@@ -353,7 +407,18 @@ public class DeckManager : ServantWithCardDescription
{
rid = item.gameObject.AddComponent<Rigidbody>();
}
rid.AddForce(0.7f * (item.transform.position + new Vector3(0, 30 - Vector3.Distance(item.transform.position, Vector3.zero), 0)) / Program.deltaTime);
rid.AddForce(
0.7f
* (
item.transform.position
+ new Vector3(
0,
30 - Vector3.Distance(item.transform.position, Vector3.zero),
0
)
)
/ Program.deltaTime
);
}
catch (Exception e)
{
......@@ -378,8 +443,8 @@ public class DeckManager : ServantWithCardDescription
refreshDetail();
}
bool detailPanelShiftedTemp = false;
void shiftDetailPanel(bool dragged)
{
detailPanelShiftedTemp = dragged;
......@@ -396,6 +461,41 @@ public class DeckManager : ServantWithCardDescription
}
}
// 用于控制右侧UI布局的常量,方便调整
// -----------------------------------------------------------------
/// <summary>
/// 主搜索面板的基础宽度
/// </summary>
private const float MAIN_SEARCH_PANEL_WIDTH = 280f;
/// <summary>
/// 详细搜索面板的基础宽度
/// </summary>
private const float DETAILED_SEARCH_PANEL_WIDTH = 230f;
/// <summary>
/// 主搜索面板距离屏幕右边缘的距离 (基于其中心点)
/// </summary>
private const float MAIN_PANEL_MARGIN_RIGHT = MAIN_SEARCH_PANEL_WIDTH / 2;
/// <summary>
/// 详细搜索面板滑出后,与主搜索面板组合的总宽度 (用于计算位置)
/// </summary>
private const float COMBINED_PANEL_WIDTH =
MAIN_SEARCH_PANEL_WIDTH + DETAILED_SEARCH_PANEL_WIDTH + 115f; // 115f 是原始代码中的一个偏移/间距值
/// <summary>
/// 摄像机右侧需要避让的边距 (当只有主搜索面板时)
/// </summary>
private const float CAMERA_MARGIN_RIGHT_NORMAL = MAIN_SEARCH_PANEL_WIDTH;
/// <summary>
/// 摄像机右侧需要避让的边距 (当详细搜索也展开时)
/// 这个值通常等于 detailed panel 的宽度乘以其缩放值
/// </summary>
private const float CAMERA_MARGIN_RIGHT_DETAILED = DETAILED_SEARCH_PANEL_WIDTH;
// -----------------------------------------------------------------
void refreshDetail()
{
......@@ -405,18 +505,52 @@ public class DeckManager : ServantWithCardDescription
{
if (Screen.height < 700)
{
gameObjectDetailedSearch.transform.localScale = new Vector3(Screen.height / 700f, Screen.height / 700f, Screen.height / 700f);
gameObjectDetailedSearch.transform.localScale = new Vector3(
Screen.height / 700f,
Screen.height / 700f,
Screen.height / 700f
);
if (detailShowed)
{
gameObjectDetailedSearch.GetComponent<UITexture>().height = 700;
iTween.MoveTo(gameObjectDetailedSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width - 460 - 115f * Screen.height / 700f, Screen.height * 0.5f, 0)), 0.6f);
reShowBar(0, 460 + 460 * Screen.height/ 700f);
iTween.MoveTo(
gameObjectDetailedSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(
Screen.width
- MAIN_SEARCH_PANEL_WIDTH
- DETAILED_SEARCH_PANEL_WIDTH
- 115f * Screen.height / 700f,
Screen.height * 0.5f,
0
)
),
0.6f
);
reShowBar(
0,
MAIN_SEARCH_PANEL_WIDTH
+ DETAILED_SEARCH_PANEL_WIDTH * Screen.height / 700f
);
}
else
{
gameObjectDetailedSearch.GetComponent<UITexture>().height = 700;
iTween.MoveTo(gameObjectDetailedSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width - 460 - 115f * Screen.height / 700f, Screen.height * 1.5f, 0)), 0.6f);
reShowBar(0, 230);
iTween.MoveTo(
gameObjectDetailedSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(
Screen.width
- MAIN_SEARCH_PANEL_WIDTH
- DETAILED_SEARCH_PANEL_WIDTH
- 115f * Screen.height / 700f,
Screen.height * 1.5f,
0
)
),
0.6f
);
reShowBar(0, CAMERA_MARGIN_RIGHT_NORMAL);
}
}
else
......@@ -425,17 +559,40 @@ public class DeckManager : ServantWithCardDescription
if (detailShowed)
{
gameObjectDetailedSearch.GetComponent<UITexture>().height = Screen.height;
iTween.MoveTo(gameObjectDetailedSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width - 575f, Screen.height * 0.5f, 0)), 0.6f);
reShowBar(0, 460 * 2);
// [修改] 使用常量替换硬编码的 575f
iTween.MoveTo(
gameObjectDetailedSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(
Screen.width - COMBINED_PANEL_WIDTH,
Screen.height * 0.5f,
0
)
),
0.6f
);
// 使用常量替换硬编码的 460*2
reShowBar(0, MAIN_SEARCH_PANEL_WIDTH + DETAILED_SEARCH_PANEL_WIDTH);
}
else
{
gameObjectDetailedSearch.GetComponent<UITexture>().height = Screen.height;
iTween.MoveTo(gameObjectDetailedSearch, Program.camera_main_2d.ScreenToWorldPoint(new Vector3(Screen.width - 575f, Screen.height * 1.5f, 0)), 0.6f);
reShowBar(0, 230);
// 使用常量替换硬编码的 575f
iTween.MoveTo(
gameObjectDetailedSearch,
Program.camera_main_2d.ScreenToWorldPoint(
new Vector3(
Screen.width - COMBINED_PANEL_WIDTH,
Screen.height * 1.5f,
0
)
),
0.6f
);
// 使用常量替换硬编码的 230
reShowBar(0, CAMERA_MARGIN_RIGHT_NORMAL);
}
}
}
else
{
......@@ -504,7 +661,6 @@ public class DeckManager : ServantWithCardDescription
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "atk_UP").value = "";
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_UP").value = "";
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "year_UP").value = "";
}
catch (System.Exception e)
{
......@@ -513,6 +669,7 @@ public class DeckManager : ServantWithCardDescription
}
List<string> seconds = new List<string>();
void onUIPopupList_second()
{
Program.notGo(printSecond);
......@@ -627,29 +784,28 @@ public class DeckManager : ServantWithCardDescription
private void process()
{
List<YGOSharp.Card> result = YGOSharp.CardsManager.searchAdvanced
(
getName(),
getLevel(),
getAttack(),
getDefence(),
getP(),
getYear(),
getLevel_UP(),
getAttack_UP(),
getDefence_UP(),
getP_UP(),
getYear_UP(),
getOT(),
getPack(),
getBanFilter(),
currentBanlist,
getTypeFilter(),
getTypeFilter2(),
getRaceFilter(),
getAttributeFilter(),
getCatagoryFilter()
);
List<YGOSharp.Card> result = YGOSharp.CardsManager.searchAdvanced(
getName(),
getLevel(),
getAttack(),
getDefence(),
getP(),
getYear(),
getLevel_UP(),
getAttack_UP(),
getDefence_UP(),
getP_UP(),
getYear_UP(),
getOT(),
getPack(),
getBanFilter(),
currentBanlist,
getTypeFilter(),
getTypeFilter2(),
getRaceFilter(),
getAttributeFilter(),
getCatagoryFilter()
);
print(result);
UIHelper.trySetLableText(gameObjectSearch, "title_", result.Count.ToString());
UIInput_search.isSelected = true;
......@@ -927,7 +1083,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "atk_").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "atk_").value
);
}
catch (Exception)
{
......@@ -945,7 +1103,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_").value
);
}
catch (Exception)
{
......@@ -963,7 +1123,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "stars_").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "stars_").value
);
}
catch (Exception)
{
......@@ -981,7 +1143,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "p_").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "p_").value
);
}
catch (Exception)
{
......@@ -999,7 +1163,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "year_").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "year_").value
);
}
catch (Exception)
{
......@@ -1017,7 +1183,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "atk_UP").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "atk_UP").value
);
}
catch (Exception)
{
......@@ -1035,7 +1203,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_UP").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "def_UP").value
);
}
catch (Exception)
{
......@@ -1053,7 +1223,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "stars_UP").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "stars_UP").value
);
}
catch (Exception)
{
......@@ -1071,7 +1243,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "p_UP").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "p_UP").value
);
}
catch (Exception)
{
......@@ -1089,7 +1263,9 @@ public class DeckManager : ServantWithCardDescription
int returnValue = 0;
try
{
returnValue = int.Parse(UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "year_UP").value);
returnValue = int.Parse(
UIHelper.getByName<UIInput>(gameObjectDetailedSearch, "year_UP").value
);
}
catch (Exception)
{
......@@ -1116,6 +1292,27 @@ public class DeckManager : ServantWithCardDescription
return UIPopupList_pack.value;
}
// [新增] 封装的添加卡片副本的逻辑,用于复用
private void AddCopyToDeck(MonoCardInDeckManager sourceCard)
{
// 安全检查:如果不在编辑模式,或卡片已满编,则不执行任何操作
if (condition != Condition.editDeck || !checkBanlistAvail(sourceCard.cardData.Id))
{
return;
}
MonoCardInDeckManager newCard = createCard();
// 将新卡片生成在原卡片稍上方,视觉效果更好
newCard.transform.position = sourceCard.transform.position + Vector3.up * 0.5f;
sourceCard.cardData.cloneTo(newCard.cardData);
newCard.gameObject.layer = 16;
// 统一添加到 IMain 中,后续的 ArrangeObjectDeck 会自动处理分类(主卡组或额外)
deck.IMain.Add(newCard);
deckDirty = true;
ArrangeObjectDeck(true); // 重新整理数据
ShowObjectDeck(); // 重新排列场上的卡片
}
#endregion
GameObject gameObjectDesk = null;
......@@ -1147,19 +1344,57 @@ public class DeckManager : ServantWithCardDescription
gameObjectDesk.transform.position = new Vector3(0, 0, 0);
gameObjectDesk.transform.eulerAngles = new Vector3(90, 0, 0);
gameObjectDesk.transform.localScale = new Vector3(30, 30, 1);
gameObjectDesk.GetComponent<Renderer>().material.mainTexture = Program.GetTextureViaPath("textures/duel/deckTable.png");//YGOMobile Paths
gameObjectDesk.GetComponent<Renderer>().material.mainTexture = Program.GetTextureViaPath(
"textures/duel/deckTable.png"
); //YGOMobile Paths
//UIHelper.SetMaterialRenderingMode(gameObjectDesk.GetComponent<Renderer>().material, UIHelper.RenderingMode.Transparent);
Rigidbody rigidbody = gameObjectDesk.AddComponent<Rigidbody>();
rigidbody.useGravity = false;
rigidbody.isKinematic = true;
rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
BoxCollider boxCollider = gameObjectDesk.AddComponent<BoxCollider>();
main_unmber = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, 13.6f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
m_unmber = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, 6.6f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
s_number = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, 4.6f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
t_unmber = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, 2.6f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
extra_unmber = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, -5.3f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
side_number = create_s(Program.I().mod_ocgcore_number, new Vector3(-16.5f, 0, -11f), new Vector3(90, 0, 0), true).GetComponent<number_loader>();
main_unmber = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, 13.6f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
m_unmber = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, 6.6f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
s_number = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, 4.6f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
t_unmber = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, 2.6f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
extra_unmber = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, -5.3f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
side_number = create_s(
Program.I().mod_ocgcore_number,
new Vector3(-16.5f, 0, -11f),
new Vector3(90, 0, 0),
true
)
.GetComponent<number_loader>();
switch (condition)
{
case Condition.editDeck:
......@@ -1209,6 +1444,38 @@ public class DeckManager : ServantWithCardDescription
public override void preFrameFunction()
{
base.preFrameFunction();
// [修改] 全新的长按与拖拽检测逻辑
if (cardForLongPress != null)
{
// 1. 检查是否为拖拽 (鼠标移动超过一定距离)
if (Vector3.Distance(Input.mousePosition, mouseDownPosition) > 15f) // 15像素的阈值
{
// 判定为拖拽,开始拖拽卡牌
cardInDragging = cardForLongPress;
cardInDragging.beginDrag();
cardForLongPress = null; // 清除长按检测状态
isContinuouslyAdding = false; // 确保连续添加状态也被重置
}
// 2. 检查是否满足长按条件
else if (Time.time - pressStartTime > INITIAL_LONG_PRESS_DURATION)
{
// 2a. 如果是首次触发长按,立即添加第一张并启动持续添加模式
if (!isContinuouslyAdding)
{
isContinuouslyAdding = true;
AddCopyToDeck(cardForLongPress); // 添加第一张卡
nextAddCardTime = Time.time + CONTINUOUS_ADD_INTERVAL; // 设定下一次添加的时间
}
// 2b. 如果已在持续添加模式,检查是否到达下一次添加的时间点
else if (Time.time >= nextAddCardTime)
{
AddCopyToDeck(cardForLongPress); // 添加后续卡片
nextAddCardTime = Time.time + CONTINUOUS_ADD_INTERVAL; // 再次设定下一次添加的时间
}
}
}
if (cardInDragging != null)
{
if (detailPanelShiftedTemp == false)
......@@ -1240,7 +1507,11 @@ public class DeckManager : ServantWithCardDescription
}
}
cameraDistance = 29 - 3.1415926f / 180f * (cameraAngle - 60f) * 13f;
Program.cameraPosition = new Vector3(0, cameraDistance * Mathf.Sin(3.1415926f / 180f * cameraAngle), -cameraDistance * Mathf.Cos(3.1415926f / 180f * cameraAngle));
Program.cameraPosition = new Vector3(
0,
cameraDistance * Mathf.Sin(3.1415926f / 180f * cameraAngle),
-cameraDistance * Mathf.Cos(3.1415926f / 180f * cameraAngle)
);
if (Program.TimePassed() - lastRefreshTime > 80)
{
lastRefreshTime = Program.TimePassed();
......@@ -1248,12 +1519,17 @@ public class DeckManager : ServantWithCardDescription
main_unmber.set_number(deck.Main.Count, 3);
side_number.set_number(deck.Side.Count, 4);
extra_unmber.set_number(deck.Extra.Count, 0);
int m = 0, s = 0, t = 0;
int m = 0,
s = 0,
t = 0;
foreach (var item in deck.IMain)
{
if ((item.cardData.Type & (int)CardType.Monster) > 0) m++;
if ((item.cardData.Type & (int)CardType.Spell) > 0) s++;
if ((item.cardData.Type & (int)CardType.Trap) > 0) t++;
if ((item.cardData.Type & (int)CardType.Monster) > 0)
m++;
if ((item.cardData.Type & (int)CardType.Spell) > 0)
s++;
if ((item.cardData.Type & (int)CardType.Trap) > 0)
t++;
}
m_unmber.set_number(m, 1);
s_number.set_number(s, 2);
......@@ -1280,7 +1556,8 @@ public class DeckManager : ServantWithCardDescription
{
if (gameObjectDetailedSearch != null)
{
r -= 230 * gameObjectDetailedSearch.transform.localScale.x;
// [修改] 使用常量替换硬编码的 230
r -= CAMERA_MARGIN_RIGHT_DETAILED * gameObjectDetailedSearch.transform.localScale.x;
}
}
Program.reMoveCam((l + r) / 2f);
......@@ -1291,12 +1568,18 @@ public class DeckManager : ServantWithCardDescription
MonoCardInDeckManager cardInDeck = gameObject.GetComponent<MonoCardInDeckManager>();
if (cardInDeck != null)
{
((CardDescription)(Program.I().cardDescription)).setData(cardInDeck.cardData, GameTextureManager.myBack);
((CardDescription)(Program.I().cardDescription)).setData(
cardInDeck.cardData,
GameTextureManager.myBack
);
}
cardPicLoader cardInSearchResult = gameObject.GetComponent<cardPicLoader>();
if (cardInSearchResult != null)
{
((CardDescription)(Program.I().cardDescription)).setData(cardInSearchResult.data, GameTextureManager.myBack);
((CardDescription)(Program.I().cardDescription)).setData(
cardInSearchResult.data,
GameTextureManager.myBack
);
}
}
......@@ -1306,36 +1589,15 @@ public class DeckManager : ServantWithCardDescription
public override void ES_mouseDownGameObject(GameObject gameObject)
{
bool doubleClick = false;
if (goLast == gameObject)
{
if (Program.TimePassed() - timeLastDown < 300)
{
doubleClick = true;
}
}
goLast = gameObject;
timeLastDown = Program.TimePassed();
MonoCardInDeckManager cardInDeck = gameObject.GetComponent<MonoCardInDeckManager>();
cardPicLoader cardInSearchResult = gameObject.GetComponent<cardPicLoader>();
if (cardInDeck != null && !cardInDeck.dying)
{
if (doubleClick && condition == Condition.editDeck && checkBanlistAvail(cardInDeck.cardData.Id))
{
MonoCardInDeckManager card = createCard();
card.transform.position = cardInDeck.transform.position;
cardInDeck.cardData.cloneTo(card.cardData);
card.gameObject.layer = 16;
deck.IMain.Add(card);
deckDirty = true;
ArrangeObjectDeck(true);
ShowObjectDeck();
}
else
{
cardInDragging = cardInDeck;
cardInDeck.beginDrag();
}
// [修改] 初始化长按/拖拽状态
cardForLongPress = cardInDeck;
pressStartTime = Time.time;
isContinuouslyAdding = false; // 每次按下都重置持续添加状态
mouseDownPosition = Input.mousePosition;
}
else if (cardInSearchResult != null)
{
......@@ -1362,20 +1624,26 @@ public class DeckManager : ServantWithCardDescription
{
if (cardInDragging != null)
{
if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
{
//
}
else
// 第一步:终止拖拽,设置物理状态
cardInDragging.endDrag();
// 第二步:逻辑判断是否仍应纳入卡组
if (cardInDragging.getIfAlive())
{
if (cardInDragging.getIfAlive())
deckDirty = true;
ArrangeObjectDeck(true);
ShowObjectDeck();
deckDirty = true;
}
cardInDragging.endDrag();
// 第三步:整理数据结构(IMain、ISide等)
ArrangeObjectDeck(true);
// 第四步:更新卡片在场景中的位置与角度(含Tween)
ShowObjectDeck();
// 第五步:清除引用
cardInDragging = null;
}
cardForLongPress = null;
isContinuouslyAdding = false;
}
public override void ES_mouseUpRight()
......@@ -1384,14 +1652,16 @@ public class DeckManager : ServantWithCardDescription
{
if (condition == Condition.editDeck)
{
MonoCardInDeckManager cardInDeck = Program.pointedGameObject.GetComponent<MonoCardInDeckManager>();
MonoCardInDeckManager cardInDeck =
Program.pointedGameObject.GetComponent<MonoCardInDeckManager>();
if (cardInDeck != null)
{
cardInDeck.killIt();
ArrangeObjectDeck(true);
ShowObjectDeck();
}
cardPicLoader cardInSearchResult = Program.pointedGameObject.GetComponent<cardPicLoader>();
cardPicLoader cardInSearchResult =
Program.pointedGameObject.GetComponent<cardPicLoader>();
if (cardInSearchResult != null)
{
CreateMonoCard(cardInSearchResult.data);
......@@ -1400,13 +1670,14 @@ public class DeckManager : ServantWithCardDescription
}
else
{
MonoCardInDeckManager cardInDeck = Program.pointedGameObject.GetComponent<MonoCardInDeckManager>();
MonoCardInDeckManager cardInDeck =
Program.pointedGameObject.GetComponent<MonoCardInDeckManager>();
if (cardInDeck != null)
{
bool isSide = false;
for (int i = 0; i < deck.ISide.Count; i++)
for (int i = 0; i < deck.ISide.Count; i++)
{
if (cardInDeck== deck.ISide[i])
if (cardInDeck == deck.ISide[i])
{
isSide = true;
}
......@@ -1498,10 +1769,7 @@ public class DeckManager : ServantWithCardDescription
{
code = Int32.Parse(line);
}
catch (Exception)
{
}
catch (Exception) { }
if (code > 100)
{
YGOSharp.Card card = YGOSharp.CardsManager.Get(code);
......@@ -1519,39 +1787,38 @@ public class DeckManager : ServantWithCardDescription
}
}
else
switch (flag)
{
case 1:
{
deck.Main.Add(code);
deck.Deck_O.Main.Add(code);
}
break;
case 2:
{
deck.Extra.Add(code);
deck.Deck_O.Extra.Add(code);
}
break;
case 3:
{
deck.Side.Add(code);
deck.Deck_O.Side.Add(code);
}
break;
default:
break;
}
switch (flag)
{
case 1:
{
deck.Main.Add(code);
deck.Deck_O.Main.Add(code);
}
break;
case 2:
{
deck.Extra.Add(code);
deck.Deck_O.Extra.Add(code);
}
break;
case 3:
{
deck.Side.Add(code);
deck.Deck_O.Side.Add(code);
}
break;
default:
break;
}
}
}
}
}
catch (Exception e)
{
}
catch (Exception e) { }
}
public static bool FromBase64toCodedDeck(string base64, out YGOSharp.Deck deck) {
public static bool FromBase64toCodedDeck(string base64, out YGOSharp.Deck deck)
{
deck = new YGOSharp.Deck();
bool res = true;
try
......@@ -1562,7 +1829,8 @@ public class DeckManager : ServantWithCardDescription
offset += 4;
int sidec = BitConverter.ToInt32(buffer, offset);
offset += 4;
for(int i = 0; i < mainc; ++i) {
for (int i = 0; i < mainc; ++i)
{
int code = BitConverter.ToInt32(buffer, offset);
offset += 4;
if (code > 100)
......@@ -1580,7 +1848,8 @@ public class DeckManager : ServantWithCardDescription
}
}
}
for(int i = 0; i < sidec; ++i) {
for (int i = 0; i < sidec; ++i)
{
int code = BitConverter.ToInt32(buffer, offset);
offset += 4;
if (code > 100)
......@@ -1597,7 +1866,8 @@ public class DeckManager : ServantWithCardDescription
return res;
}
public static string convertDeckToBase64(YGOSharp.Deck deck) {
public static string convertDeckToBase64(YGOSharp.Deck deck)
{
List<byte> array_list = new List<byte>();
writeInt32ToList(array_list, deck.Main.Count + deck.Extra.Count);
writeInt32ToList(array_list, deck.Side.Count);
......@@ -1617,9 +1887,11 @@ public class DeckManager : ServantWithCardDescription
return Convert.ToBase64String(buffer);
}
private static void writeInt32ToList(List<byte> array_list, int value) {
private static void writeInt32ToList(List<byte> array_list, int value)
{
byte[] int_buffer = BitConverter.GetBytes(value);
for(int i = 0; i < 4; ++i) {
for (int i = 0; i < 4; ++i)
{
array_list.Add(int_buffer[i]);
}
}
......@@ -1657,53 +1929,55 @@ public class DeckManager : ServantWithCardDescription
var deckTemp = deck.getAllObjectCardAndDeload();
if (order)
{
deckTemp.Sort((left, right) =>
{
Vector3 leftPosition = left.gameObject.transform.position;
Vector3 rightPosition = right.gameObject.transform.position;
if (leftPosition.y > 3f)
deckTemp.Sort(
(left, right) =>
{
leftPosition = MonoCardInDeckManager.refLectPosition(leftPosition);
}
if (rightPosition.y > 3f)
{
rightPosition = MonoCardInDeckManager.refLectPosition(rightPosition);
}
if (leftPosition.z > -3 && rightPosition.z > -3)
{
float l = leftPosition.x + 1000f * (int)((13f - leftPosition.z) / 3.7f);
float r = rightPosition.x + 1000f * (int)((13f - rightPosition.z) / 3.7f);
if (l < r)
Vector3 leftPosition = left.gameObject.transform.position;
Vector3 rightPosition = right.gameObject.transform.position;
if (leftPosition.y > 3f)
{
return -1;
leftPosition = MonoCardInDeckManager.refLectPosition(leftPosition);
}
else
if (rightPosition.y > 3f)
{
rightPosition = MonoCardInDeckManager.refLectPosition(rightPosition);
}
if (leftPosition.z > -3 && rightPosition.z > -3)
{
float l = leftPosition.x + 1000f * (int)((13f - leftPosition.z) / 3.7f);
float r = rightPosition.x + 1000f * (int)((13f - rightPosition.z) / 3.7f);
if (l < r)
{
return -1;
}
else
{
return 1;
}
}
else if (leftPosition.z > -3 && rightPosition.z < -3)
{
return 1;
}
}
else if (leftPosition.z > -3 && rightPosition.z < -3)
{
return 1;
}
else if (leftPosition.z < -3 && rightPosition.z > -3)
{
return -1;
}
else
{
float l = leftPosition.x;
float r = rightPosition.x;
if (l < r)
else if (leftPosition.z < -3 && rightPosition.z > -3)
{
return -1;
}
else
{
return 1;
float l = leftPosition.x;
float r = rightPosition.x;
if (l < r)
{
return -1;
}
else
{
return 1;
}
}
}
});
);
}
for (int i = 0; i < deckTemp.Count; i++)
{
......@@ -1747,8 +2021,6 @@ public class DeckManager : ServantWithCardDescription
deckDirty = true;
}
List<GameObject> diedCards = new List<GameObject>();
MonoCardInDeckManager createCard()
......@@ -1761,9 +2033,18 @@ public class DeckManager : ServantWithCardDescription
}
if (r == null)
{
r = Program.I().create(Program.I().new_mod_cardInDeckManager).AddComponent<MonoCardInDeckManager>();
r.gameObject.transform.Find("back").gameObject.GetComponent<Renderer>().material.mainTexture = GameTextureManager.myBack;
r.gameObject.transform.Find("face").gameObject.GetComponent<Renderer>().material.mainTexture = GameTextureManager.myBack;
r = Program
.I()
.create(Program.I().new_mod_cardInDeckManager)
.AddComponent<MonoCardInDeckManager>();
r
.gameObject.transform.Find("back")
.gameObject.GetComponent<Renderer>()
.material.mainTexture = GameTextureManager.myBack;
r
.gameObject.transform.Find("face")
.gameObject.GetComponent<Renderer>()
.material.mainTexture = GameTextureManager.myBack;
}
r.gameObject.transform.position = new Vector3(0, 5, 0);
r.gameObject.transform.eulerAngles = new Vector3(90, 0, 0);
......@@ -1792,55 +2073,79 @@ public class DeckManager : ServantWithCardDescription
public void FormCodedDeckToObjectDeck()
{
canSave = false;
safeGogo(4000, () =>
{
canSave = true;
});
safeGogo(
4000,
() =>
{
canSave = true;
}
);
int indexOfLogic = 0;
int[] hangshu = UIHelper.get_decklieshuArray(deck.Main.Count);
foreach (var item in deck.Main)
{
Vector2 v = UIHelper.get_hang_lieArry(indexOfLogic, hangshu);
Vector3 toVector = new Vector3(UIHelper.get_left_right_index(-12.5f, 12.5f, (int)v.y, hangshu[(int)v.x]), 0.5f + v.y / 3f + v.x / 3f, 11.8f - v.x * 4f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_index(-12.5f, 12.5f, (int)v.y, hangshu[(int)v.x]),
0.5f + v.y / 3f + v.x / 3f,
11.8f - v.x * 4f
);
YGOSharp.Card data = YGOSharp.CardsManager.Get(item);
safeGogo(indexOfLogic * 25, () =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.IMain.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
});
safeGogo(
indexOfLogic * 25,
() =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.IMain.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
}
);
indexOfLogic++;
}
indexOfLogic = 0;
foreach (var item in deck.Extra)
{
Vector3 toVector = new Vector3(UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, indexOfLogic, deck.Extra.Count, 10), 0.5f + (float)indexOfLogic / 3f, -6.2f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, indexOfLogic, deck.Extra.Count, 10),
0.5f + (float)indexOfLogic / 3f,
-6.2f
);
YGOSharp.Card data = YGOSharp.CardsManager.Get(item);
safeGogo(indexOfLogic * 90, () =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.IExtra.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
});
safeGogo(
indexOfLogic * 90,
() =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.IExtra.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
}
);
indexOfLogic++;
}
indexOfLogic = 0;
foreach (var item in deck.Side)
{
Vector3 toVector = new Vector3(UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, indexOfLogic, deck.Side.Count, 10), 0.5f + (float)indexOfLogic / 3f, -12f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, indexOfLogic, deck.Side.Count, 10),
0.5f + (float)indexOfLogic / 3f,
-12f
);
YGOSharp.Card data = YGOSharp.CardsManager.Get(item);
safeGogo(indexOfLogic * 90, () =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.ISide.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
});
safeGogo(
indexOfLogic * 90,
() =>
{
MonoCardInDeckManager card = createCard();
card.cardData = data;
card.gameObject.layer = 16;
deck.ISide.Add(card);
card.tweenToVectorAndFall(toVector, new Vector3(90, 0, 0));
}
);
indexOfLogic++;
}
}
......@@ -1861,7 +2166,11 @@ public class DeckManager : ServantWithCardDescription
toAngle = new Vector3(87f - (hangshu[(int)v.x] - 10f) * 0.4f, -90, -90);
}
}
Vector3 toVector = new Vector3(UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, (int)v.y, hangshu[(int)v.x], 10), 0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k, 11.8f - v.x * 4f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, (int)v.y, hangshu[(int)v.x], 10),
0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k,
11.8f - v.x * 4f
);
deck.IMain[i].tweenToVectorAndFall(toVector, toAngle);
}
for (int i = 0; i < deck.IExtra.Count; i++)
......@@ -1875,7 +2184,11 @@ public class DeckManager : ServantWithCardDescription
toAngle = new Vector3(87f - (deck.IExtra.Count - 10f) * 0.4f, -90, -90);
}
}
Vector3 toVector = new Vector3(UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, i, deck.IExtra.Count, 10), 0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k, -6.2f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, i, deck.IExtra.Count, 10),
0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k,
-6.2f
);
deck.IExtra[i].tweenToVectorAndFall(toVector, toAngle);
}
......@@ -1890,7 +2203,11 @@ public class DeckManager : ServantWithCardDescription
toAngle = new Vector3(87f - (deck.ISide.Count - 10f) * 0.4f, -90, -90);
}
}
Vector3 toVector = new Vector3(UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, i, deck.ISide.Count, 10), 0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k, -12f);
Vector3 toVector = new Vector3(
UIHelper.get_left_right_indexZuo(-12.5f, 12.5f, i, deck.ISide.Count, 10),
0.6f + Mathf.Sin((90 - toAngle.x) / 180f * Mathf.PI) * k,
-12f
);
deck.ISide[i].tweenToVectorAndFall(toVector, toAngle);
}
}
......@@ -1919,7 +2236,10 @@ public class DeckManager : ServantWithCardDescription
{
try
{
((CardDescription)(Program.I().cardDescription)).setData(YGOSharp.CardsManager.Get(deck.Main[0]), GameTextureManager.myBack);
((CardDescription)(Program.I().cardDescription)).setData(
YGOSharp.CardsManager.Get(deck.Main[0]),
GameTextureManager.myBack
);
}
catch (System.Exception e)
{
......@@ -1937,7 +2257,11 @@ public class DeckManager : ServantWithCardDescription
}
else
{
UIHelper.trySetLableText(gameObjectSearch, "title_", InterString.Get("在此搜索卡片,拖动加入卡组"));
UIHelper.trySetLableText(
gameObjectSearch,
"title_",
InterString.Get("在此搜索卡片,拖动加入卡组")
);
}
Program.go(50, superScrollView.toTop);
Program.go(100, superScrollView.toTop);
......
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