Commit a5d9d45d authored by nanahira's avatar nanahira

Merge branch 'master' of git.mycard.moe:mycard/YGOProUnity_V2

parents fb8e29ab f35f6b22
Pipeline #6019 passed with stages
in 54 minutes and 35 seconds
......@@ -117,10 +117,10 @@ public class Menu : WindowServantSP
Program.I().shiftToServant(Program.I().selectServer);
}
private void onClickAI()
{
Program.I().shiftToServant(Program.I().aiRoom);
}
// private void onClickAI()
// {
// Program.I().shiftToServant(Program.I().aiRoom);
// }
private void onClickPizzle()
{
......
......@@ -830,6 +830,29 @@ public static class UIHelper
screenposition.z + l));
}
public const string sort = "sortByTimeDeck";
public static IOrderedEnumerable<FileInfo> SortDeck(this IOrderedEnumerable<FileInfo> source)
{
return Config.Get(sort, "1") == "1"
? source.ThenByDescending(f => f.LastWriteTime)
: source.ThenBy(f => f.Name);
}
public static IEnumerable<string> GetDecks(string search = "")
{
var deckInUse = Config.Get("deckInUse", "miaowu");
var deckInUsePath = Path.GetFullPath($"deck/{deckInUse}.ydk");
return new DirectoryInfo("deck").EnumerateFiles("*.ydk", SearchOption.AllDirectories)
.Where(f => search == "" || f.Name.Contains(search))
.OrderByDescending(f => f.FullName == deckInUsePath)
.ThenBy(f => f.DirectoryName)
.SortDeck()
.Select(f =>
f.DirectoryName == Path.GetFullPath("deck")
? Path.GetFileNameWithoutExtension(f.Name)
: $"{Path.GetFileName(f.DirectoryName)}/{Path.GetFileNameWithoutExtension(f.Name)}");
}
public static int CompareTime(object x, object y)
{
......
......@@ -794,7 +794,7 @@ public class Ocgcore : ServantWithCardDescription
public void returnTo()
{
TcpHelper.SaveRecord();
if (Program.exitOnReturn)
if (Program.exitOnReturn && returnServant != Program.I().deckManager)
Program.I().menu.onClickExit();
else if (returnServant != null) Program.I().shiftToServant(returnServant);
}
......
......@@ -715,7 +715,7 @@ public class Program : MonoBehaviour
public SelectServer selectServer;
public Book book;
public puzzleMode puzzleMode;
public AIRoom aiRoom;
// public AIRoom aiRoom;
private void initializeALLservants()
{
......@@ -740,8 +740,8 @@ public class Program : MonoBehaviour
servants.Add(selectReplay);
puzzleMode = new puzzleMode();
servants.Add(puzzleMode);
aiRoom = new AIRoom();
servants.Add(aiRoom);
// aiRoom = new AIRoom();
// servants.Add(aiRoom);
}
public void shiftToServant(Servant to)
......@@ -756,7 +756,7 @@ public class Program : MonoBehaviour
if (to != selectServer && selectServer.isShowed) selectServer.hide();
if (to != selectReplay && selectReplay.isShowed) selectReplay.hide();
if (to != puzzleMode && puzzleMode.isShowed) puzzleMode.hide();
if (to != aiRoom && aiRoom.isShowed) aiRoom.hide();
// if (to != aiRoom && aiRoom.isShowed) aiRoom.hide();
if (to == backGroundPic && backGroundPic.isShowed == false) backGroundPic.show();
if (to == menu && menu.isShowed == false) menu.show();
......@@ -768,7 +768,7 @@ public class Program : MonoBehaviour
if (to == selectServer && selectServer.isShowed == false) selectServer.show();
if (to == selectReplay && selectReplay.isShowed == false) selectReplay.show();
if (to == puzzleMode && puzzleMode.isShowed == false) puzzleMode.show();
if (to == aiRoom && aiRoom.isShowed == false) aiRoom.show();
// if (to == aiRoom && aiRoom.isShowed == false) aiRoom.show();
}
#endregion
......
using System;
using System.IO;
using Random = UnityEngine.Random;
public class AIRoom : WindowServantSP
{
private PrecyOcg precy;
public void launch(string playerDek, string aiDeck, string aiScript, bool playerGo, bool suffle, int life, bool god,
int rule)
{
if (precy != null) precy.dispose();
precy = new PrecyOcg();
precy.startAI(playerDek, aiDeck, aiScript, playerGo, suffle, life, god, rule);
RMSshow_none(InterString.Get("AI模式还在开发中,您在AI模式下遇到的BUG不会在联机的时候出现。"));
}
#region ui
private UIselectableList superScrollView;
private readonly string sort = "sortByTimeDeck";
private string suiji = "";
private UIPopupList list_aideck;
private UIPopupList list_airank;
public override void initialize()
{
suiji = InterString.Get("随机卡组");
SetWindow(Program.I().new_ui_aiRoom);
superScrollView = gameObject.GetComponentInChildren<UIselectableList>();
superScrollView.selectedAction = onSelected;
list_aideck = UIHelper.getByName<UIPopupList>(gameObject, "aideck_");
list_airank = UIHelper.getByName<UIPopupList>(gameObject, "rank_");
list_aideck.value = Config.Get("list_aideck", suiji);
list_airank.value = Config.Get("list_airank", "ai");
UIHelper.registEvent(gameObject, "aideck_", onSave);
UIHelper.registEvent(gameObject, "rank_", onSave);
UIHelper.registEvent(gameObject, "start_", onStart);
UIHelper.registEvent(gameObject, "exit_", onClickExit);
UIHelper.trySetLableText(gameObject, "percyHint", InterString.Get("人机模式"));
superScrollView.install();
SetActiveFalse();
}
private void onSelected()
{
Config.Set("deckInUse", superScrollView.selectedString);
}
private void onSave()
{
Config.Set("list_aideck", list_aideck.value);
Config.Set("list_airank", list_airank.value);
}
private void onClickExit()
{
if (Program.exitOnReturn)
Program.I().menu.onClickExit();
else
Program.I().shiftToServant(Program.I().menu);
}
private void onStart()
{
if (!isShowed) return;
var l = 8000;
try
{
l = int.Parse(UIHelper.getByName<UIInput>(gameObject, "life_").value);
}
catch (Exception)
{
}
var aideck = "";
if (Config.Get("list_aideck", suiji) == suiji)
aideck = "ai/ydk/" + list_aideck.items[Random.Range(1, list_aideck.items.Count)] + ".ydk";
else
aideck = "ai/ydk/" + Config.Get("list_aideck", suiji) + ".ydk";
launch("deck/" + Config.Get("deckInUse", "miaowu") + ".ydk", aideck,
"ai/" + Config.Get("list_airank", "ai") + ".lua", UIHelper.getByName<UIToggle>(gameObject, "first_").value,
UIHelper.getByName<UIToggle>(gameObject, "unrand_").value, l,
UIHelper.getByName<UIToggle>(gameObject, "god_").value,
UIHelper.getByName<UIToggle>(gameObject, "mr4_").value ? 4 : 3);
}
private void printFile()
{
var deckInUse = Config.Get("deckInUse", "miaowu");
superScrollView.clear();
var fileInfos = new DirectoryInfo("deck").GetFiles();
if (Config.Get(sort, "1") == "1")
Array.Sort(fileInfos, UIHelper.CompareTime);
else
Array.Sort(fileInfos, UIHelper.CompareName);
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) == deckInUse)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) != deckInUse)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
list_aideck.Clear();
fileInfos = new DirectoryInfo("ai/ydk").GetFiles();
Array.Sort(fileInfos, UIHelper.CompareName);
list_aideck.AddItem(suiji);
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
list_aideck.AddItem(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
list_airank.Clear();
fileInfos = new DirectoryInfo("ai").GetFiles();
Array.Sort(fileInfos, UIHelper.CompareName);
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".lua")
list_airank.AddItem(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
}
public override void show()
{
base.show();
printFile();
superScrollView.selectedString = Config.Get("deckInUse", "miaowu");
superScrollView.toTop();
Program.charge();
}
#endregion
}
\ No newline at end of file
// using System;
// using System.IO;
// using Random = UnityEngine.Random;
//
// public class AIRoom : WindowServantSP
// {
// private PrecyOcg precy;
//
// public void launch(string playerDek, string aiDeck, string aiScript, bool playerGo, bool suffle, int life, bool god,
// int rule)
// {
// if (precy != null) precy.dispose();
// precy = new PrecyOcg();
// precy.startAI(playerDek, aiDeck, aiScript, playerGo, suffle, life, god, rule);
// RMSshow_none(InterString.Get("AI模式还在开发中,您在AI模式下遇到的BUG不会在联机的时候出现。"));
// }
//
// #region ui
//
// private UIselectableList superScrollView;
// private readonly string sort = "sortByTimeDeck";
// private string suiji = "";
//
// private UIPopupList list_aideck;
// private UIPopupList list_airank;
//
// public override void initialize()
// {
// suiji = InterString.Get("随机卡组");
// SetWindow(Program.I().new_ui_aiRoom);
// superScrollView = gameObject.GetComponentInChildren<UIselectableList>();
// superScrollView.selectedAction = onSelected;
// list_aideck = UIHelper.getByName<UIPopupList>(gameObject, "aideck_");
// list_airank = UIHelper.getByName<UIPopupList>(gameObject, "rank_");
// list_aideck.value = Config.Get("list_aideck", suiji);
// list_airank.value = Config.Get("list_airank", "ai");
// UIHelper.registEvent(gameObject, "aideck_", onSave);
// UIHelper.registEvent(gameObject, "rank_", onSave);
// UIHelper.registEvent(gameObject, "start_", onStart);
// UIHelper.registEvent(gameObject, "exit_", onClickExit);
// UIHelper.trySetLableText(gameObject, "percyHint", InterString.Get("人机模式"));
// superScrollView.install();
// SetActiveFalse();
// }
//
// private void onSelected()
// {
// Config.Set("deckInUse", superScrollView.selectedString);
// }
//
// private void onSave()
// {
// Config.Set("list_aideck", list_aideck.value);
// Config.Set("list_airank", list_airank.value);
// }
//
// private void onClickExit()
// {
// if (Program.exitOnReturn)
// Program.I().menu.onClickExit();
// else
// Program.I().shiftToServant(Program.I().menu);
// }
//
// private void onStart()
// {
// if (!isShowed) return;
// var l = 8000;
// try
// {
// l = int.Parse(UIHelper.getByName<UIInput>(gameObject, "life_").value);
// }
// catch (Exception)
// {
// }
//
// var aideck = "";
// if (Config.Get("list_aideck", suiji) == suiji)
// aideck = "ai/ydk/" + list_aideck.items[Random.Range(1, list_aideck.items.Count)] + ".ydk";
// else
// aideck = "ai/ydk/" + Config.Get("list_aideck", suiji) + ".ydk";
// launch("deck/" + Config.Get("deckInUse", "miaowu") + ".ydk", aideck,
// "ai/" + Config.Get("list_airank", "ai") + ".lua", UIHelper.getByName<UIToggle>(gameObject, "first_").value,
// UIHelper.getByName<UIToggle>(gameObject, "unrand_").value, l,
// UIHelper.getByName<UIToggle>(gameObject, "god_").value,
// UIHelper.getByName<UIToggle>(gameObject, "mr4_").value ? 4 : 3);
// }
//
// private void printFile()
// {
// var deckInUse = Config.Get("deckInUse", "miaowu");
// superScrollView.clear();
// var fileInfos = new DirectoryInfo("deck").GetFiles();
// if (Config.Get(sort, "1") == "1")
// Array.Sort(fileInfos, UIHelper.CompareTime);
// else
// Array.Sort(fileInfos, UIHelper.CompareName);
// for (var i = 0; i < fileInfos.Length; i++)
// if (fileInfos[i].Name.Length > 4)
// if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
// if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) == deckInUse)
// superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
// for (var i = 0; i < fileInfos.Length; i++)
// if (fileInfos[i].Name.Length > 4)
// if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
// if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) != deckInUse)
// superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
// list_aideck.Clear();
// fileInfos = new DirectoryInfo("ai/ydk").GetFiles();
// Array.Sort(fileInfos, UIHelper.CompareName);
// list_aideck.AddItem(suiji);
// for (var i = 0; i < fileInfos.Length; i++)
// if (fileInfos[i].Name.Length > 4)
// if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
// list_aideck.AddItem(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
// list_airank.Clear();
// fileInfos = new DirectoryInfo("ai").GetFiles();
// Array.Sort(fileInfos, UIHelper.CompareName);
// for (var i = 0; i < fileInfos.Length; i++)
// if (fileInfos[i].Name.Length > 4)
// if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".lua")
// list_airank.AddItem(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
// }
//
// public override void show()
// {
// base.show();
// printFile();
// superScrollView.selectedString = Config.Get("deckInUse", "miaowu");
// superScrollView.toTop();
// Program.charge();
// }
//
// #endregion
// }
\ No newline at end of file
......@@ -9,7 +9,6 @@ using Object = UnityEngine.Object;
public class Room : WindowServantSP
{
private readonly string sort = "sortByTimeDeck";
private UIselectableList superScrollView;
public override void initialize()
......@@ -32,23 +31,8 @@ public class Room : WindowServantSP
private void printFile()
{
var deckInUse = Config.Get("deckInUse", "wizard");
superScrollView.clear();
var fileInfos = new DirectoryInfo("deck").GetFiles();
if (Config.Get(sort, "1") == "1")
Array.Sort(fileInfos, UIHelper.CompareTime);
else
Array.Sort(fileInfos, UIHelper.CompareName);
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) == deckInUse)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) != deckInUse)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
foreach (var deck in UIHelper.GetDecks()) superScrollView.add(deck);
}
public override void show()
......
......@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEngine;
using YGOSharp;
......@@ -11,7 +12,6 @@ public class selectDeck : WindowServantSP
{
private readonly cardPicLoader[] quickCards = new cardPicLoader[200];
private readonly string sort = "sortByTimeDeck";
private UIDeckPanel deckPanel;
......@@ -121,7 +121,9 @@ public class selectDeck : WindowServantSP
if (hashCode == "onNew")
try
{
File.Create("deck/" + result[0].value + ".ydk").Close();
var path = $"deck/{result[0].value}.ydk";
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
File.Create(path).Close();
RMSshow_none(InterString.Get("「[?]」创建完毕。", result[0].value));
superScrollView.selectedString = result[0].value;
printFile();
......@@ -147,7 +149,9 @@ public class selectDeck : WindowServantSP
if (hashCode == "onCopy")
try
{
File.Copy("deck/" + superScrollView.selectedString + ".ydk", "deck/" + result[0].value + ".ydk");
var path = $"deck/{result[0].value}.ydk";
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
File.Copy("deck/" + superScrollView.selectedString + ".ydk", path);
RMSshow_none(InterString.Get("「[?]」复制完毕。", superScrollView.selectedString));
superScrollView.selectedString = result[0].value;
printFile();
......@@ -160,7 +164,9 @@ public class selectDeck : WindowServantSP
if (hashCode == "onRename")
try
{
File.Move("deck/" + superScrollView.selectedString + ".ydk", "deck/" + result[0].value + ".ydk");
var path = $"deck/{result[0].value}.ydk";
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
File.Move("deck/" + superScrollView.selectedString + ".ydk", path);
RMSshow_none(InterString.Get("「[?]」重命名完毕。", superScrollView.selectedString));
superScrollView.selectedString = result[0].value;
printFile();
......@@ -233,7 +239,7 @@ public class selectDeck : WindowServantSP
private void setSortLable()
{
if (Config.Get(sort, "1") == "1")
if (Config.Get(UIHelper.sort, "1") == "1")
UIHelper.trySetLableText(gameObject, "sort_", InterString.Get("时间排序"));
else
UIHelper.trySetLableText(gameObject, "sort_", InterString.Get("名称排序"));
......@@ -241,10 +247,10 @@ public class selectDeck : WindowServantSP
private void onSort()
{
if (Config.Get(sort, "1") == "1")
Config.Set(sort, "0");
if (Config.Get(UIHelper.sort, "1") == "1")
Config.Set(UIHelper.sort, "0");
else
Config.Set(sort, "1");
Config.Set(UIHelper.sort, "1");
setSortLable();
printFile();
}
......@@ -377,29 +383,9 @@ public class selectDeck : WindowServantSP
private void printFile()
{
var deckInUse = Config.Get("deckInUse", "miaowu");
superScrollView.clear();
var fileInfos = new DirectoryInfo("deck").GetFiles();
if (Config.Get(sort, "1") == "1")
Array.Sort(fileInfos, UIHelper.CompareTime);
else
Array.Sort(fileInfos, UIHelper.CompareName);
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) == deckInUse)
if (searchInput.value == "" ||
Regex.Replace(fileInfos[i].Name, searchInput.value, "miaowu", RegexOptions.IgnoreCase) !=
fileInfos[i].Name)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
for (var i = 0; i < fileInfos.Length; i++)
if (fileInfos[i].Name.Length > 4)
if (fileInfos[i].Name.Substring(fileInfos[i].Name.Length - 4, 4) == ".ydk")
if (fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4) != deckInUse)
if (searchInput.value == "" ||
Regex.Replace(fileInfos[i].Name, searchInput.value, "miaowu", RegexOptions.IgnoreCase) !=
fileInfos[i].Name)
superScrollView.add(fileInfos[i].Name.Substring(0, fileInfos[i].Name.Length - 4));
foreach (var deck in UIHelper.GetDecks(searchInput.value))
superScrollView.add(deck);
if (superScrollView.Selected() == false) superScrollView.selectTop();
}
......
......@@ -117,14 +117,6 @@ public class DeckManager : ServantWithCardDescription
}
camrem();
if (Input.mousePosition.x < Screen.width - 280)
if (Input.mousePosition.x > 250)
{
cameraAngle += Program.wheelValue * 1.2f;
if (cameraAngle < 0f) cameraAngle = 0f;
if (cameraAngle > 90f) cameraAngle = 90f;
}
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));
......@@ -223,17 +215,9 @@ public class DeckManager : ServantWithCardDescription
{
if (cardInDragging != null)
{
if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
{
//
}
else
{
if (cardInDragging.getIfAlive())
deckDirty = true;
ArrangeObjectDeck(true);
ShowObjectDeck();
}
if (cardInDragging.getIfAlive()) deckDirty = true;
ArrangeObjectDeck(true);
ShowObjectDeck();
cardInDragging.endDrag();
cardInDragging = null;
......
......@@ -62,28 +62,28 @@ public class PrecyOcg
}
}
public void startAI(string playerDek, string aiDeck, string aiScript, bool playerGo, bool unrand, int life,
bool god, int rule)
{
if (Program.I().ocgcore.isShowed == false)
{
Program.I().room.mode = 0;
Program.I().ocgcore.MasterRule = rule;
godMode = god;
prepareOcgcore();
Program.I().ocgcore.lpLimit = life;
Program.I().ocgcore.isFirst = playerGo;
Program.I().ocgcore.returnServant = Program.I().aiRoom;
if (!ygopro.startAI(playerDek, aiDeck, aiScript, playerGo, unrand, life, god, rule))
{
Program.I().cardDescription.RMSshow_none(InterString.Get("游戏内部出错,请重试。"));
return;
}
//Config.ClientVersion = 0x233c;
Program.I().shiftToServant(Program.I().ocgcore);
}
}
// public void startAI(string playerDek, string aiDeck, string aiScript, bool playerGo, bool unrand, int life,
// bool god, int rule)
// {
// if (Program.I().ocgcore.isShowed == false)
// {
// Program.I().room.mode = 0;
// Program.I().ocgcore.MasterRule = rule;
// godMode = god;
// prepareOcgcore();
// Program.I().ocgcore.lpLimit = life;
// Program.I().ocgcore.isFirst = playerGo;
// Program.I().ocgcore.returnServant = Program.I().aiRoom;
// if (!ygopro.startAI(playerDek, aiDeck, aiScript, playerGo, unrand, life, god, rule))
// {
// Program.I().cardDescription.RMSshow_none(InterString.Get("游戏内部出错,请重试。"));
// return;
// }
//
// //Config.ClientVersion = 0x233c;
// Program.I().shiftToServant(Program.I().ocgcore);
// }
// }
private void prepareOcgcore()
{
......
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