Commit 68b5410a authored by Unicorn369's avatar Unicorn369

Update

parent a3791faa
......@@ -141,14 +141,16 @@ public class Menu : WindowServantSP
void onClickDownload()
{
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
Application.OpenURL("https://github.com/Unicorn369/pro2_android_closeup/releases/download/1.0/closeup_version1.0.zip");
Application.OpenURL("https://github.com/Unicorn369/pro2_android_closeup/releases/tag/1.0");
#elif UNITY_ANDROID //Android
AndroidJavaObject jo = new AndroidJavaObject("cn.unicorn369.library.API");
if (!File.Exists("updates/closeup_version1.0.txt")) {//用于检查更新
if (File.Exists("closeup_version1.0.zip")) {//如果有则直接解压
jo.Call("doExtractZipFile", "closeup_version1.0.zip", Program.ANDROID_GAME_PATH);
if (!File.Exists("updates/closeup_version1.1.txt")) {//用于检查更新
if (File.Exists("closeup_version1.1.zip")) {//如果有则直接解压
jo.Call("doExtractZipFile", "closeup_version1.1.zip", Program.ANDROID_GAME_PATH);
} else if (File.Exists("updates/closeup_version1.0.txt")){//如果有则下载更新包
jo.Call("doDownloadZipFile", "https://github.com/Unicorn369/pro2_android_closeup/releases/download/1.0/up_closeup_version1.1.zip");
} else {//否则下载并解压,锁定目录:/ygocore
jo.Call("doDownloadZipFile", "https://github.com/Unicorn369/pro2_android_closeup/releases/download/1.0/closeup_version1.0.zip");
jo.Call("doDownloadZipFile", "https://github.com/Unicorn369/pro2_android_closeup/releases/download/1.0/closeup_version1.1.zip");
}
} else {
jo.Call("showToast", "已下载,无需再次下载!");
......
......@@ -379,6 +379,7 @@ public class Program : MonoBehaviour
File.Create("updates/image_version1.1.txt");
} else {
jo.Call("showToast", "没有发现卡图包,是否未安装YGOMobile");
Application.OpenURL("https://www.taptap.com/app/37972");
}
}
#endif
......
......@@ -25,6 +25,7 @@ public class GameTextureManager
static HttpDldFile df = new HttpDldFile();
private static readonly Semaphore _sem = new Semaphore(30, 30);
public class BitmapHelper
{
public System.Drawing.Color[,] colors = null;
......@@ -207,12 +208,12 @@ public class GameTextureManager
while (waitLoadStack.Count > 0)
{
thu++;
if (thu==10)
if (thu == 10)
{
Thread.Sleep(50);
thu = 0;
}
if (bLock==false)
if (bLock == false)
{
PictureResource pic;
......@@ -227,36 +228,18 @@ public class GameTextureManager
}
if (pic.type == GameTextureType.card_feature)
{
try
{
ProcessingCardFeature(pic);
}
catch (Exception e)
{
Debug.Log("e 1" + e.ToString());
}
_sem.WaitOne();
new Thread(() => ProcessingCardFeature(pic)).Start();
}
if (pic.type == GameTextureType.card_picture)
{
try
{
ProcessingCardPicture(pic);
}
catch (Exception e)
{
Debug.Log("e 2" + e.ToString());
}
_sem.WaitOne();
new Thread(() => ProcessingCardPicture(pic)).Start();
}
if (pic.type == GameTextureType.card_verticle_drawing)
{
try
{
ProcessingVerticleDrawing(pic);
}
catch (Exception e)
{
Debug.Log("e 3" + e.ToString());
}
_sem.WaitOne();
new Thread(() => ProcessingVerticleDrawing(pic)).Start();
}
}
}
......@@ -269,11 +252,13 @@ public class GameTextureManager
}
private static void ProcessingCardFeature(PictureResource pic)
{
try
{
if (File.Exists("picture/closeup/" + pic.code.ToString() + ".png"))
{
string path = "picture/closeup/" + pic.code.ToString() + ".png";
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
BitmapHelper bitmap = new BitmapHelper(path);
int left;
int right;
......@@ -308,7 +293,7 @@ public class GameTextureManager
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
......@@ -317,7 +302,7 @@ public class GameTextureManager
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
#endif
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{
......@@ -402,6 +387,15 @@ public class GameTextureManager
}
}
}
catch (Exception e)
{
Debug.Log("e 1" + e.ToString());
}
finally
{
_sem.Release();
}
}
private static void caculateK(PictureResource pic)
{
......@@ -439,7 +433,7 @@ public class GameTextureManager
int width = pic.hashed_data.GetLength(0);
int height = pic.hashed_data.GetLength(1);
int h = 0;
for (h = height-1; h >0; h--)
for (h = height - 1; h > 0; h--)
{
int all = 0;
for (int w = 0; w < width; w++)
......@@ -454,7 +448,7 @@ public class GameTextureManager
break;
}
}
pic.k =((float)h) / ((float)height);
pic.k = ((float)h) / ((float)height);
if (pic.k > 1)
{
pic.k = 1f;
......@@ -465,7 +459,7 @@ public class GameTextureManager
}
}
private static float[,,] getCuttedPic(string path,bool pCard,bool EightEdition)
private static float[,,] getCuttedPic(string path, bool pCard, bool EightEdition)
{
BitmapHelper bitmap = new BitmapHelper(path);
int left = 0, top = 0, right = bitmap.colors.GetLength(0), buttom = bitmap.colors.GetLength(1);
......@@ -593,11 +587,13 @@ public class GameTextureManager
}
private static void ProcessingVerticleDrawing(PictureResource pic)
{
try
{
string path = "picture/closeup/" + pic.code.ToString() + ".png";
if (!File.Exists(path))
{
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
path = "picture/card/" + pic.code.ToString() + ".png";
if (!File.Exists(path))
{
......@@ -625,9 +621,9 @@ public class GameTextureManager
}
if (!File.Exists(path))
{
return;
path = "picture/null.png";
}
pic.hashed_data = getCuttedPic(path, pic.pCard,Iam8);
pic.hashed_data = getCuttedPic(path, pic.pCard, Iam8);
softVtype(pic, 0.5f);
pic.k = 1;
//pic.autoMade = true;
......@@ -636,7 +632,7 @@ public class GameTextureManager
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
path = "picture/null.png";
byte[] data;
......@@ -647,24 +643,11 @@ public class GameTextureManager
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
//#elif UNITY_IPHONE //iPhone Test (Android not support)
//path = Application.streamingAssetsPath + "/closeup/" + pic.code.ToString() + ".png";
//if (File.Exists(path))
//{
// www = new WWW(path);
// byte[] data = www.bytes;
// pic.data = data;
//} else {
// path = Application.streamingAssetsPath + "/null.png"
// www = new WWW(path);
// byte[] data = www.bytes;
// pic.data = data;
//}
#endif
#endif
}
else
{
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
BitmapHelper bitmap = new BitmapHelper(path);
int left;
int right;
......@@ -713,7 +696,7 @@ public class GameTextureManager
}
if (wholeUNalpha >= ((width + height) * 0.5f * 0.12f))
{
softVtype(pic,0.7f);
softVtype(pic, 0.7f);
}
caculateK(pic);
......@@ -721,7 +704,7 @@ public class GameTextureManager
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
......@@ -730,7 +713,7 @@ public class GameTextureManager
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
#endif
}
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
......@@ -738,6 +721,15 @@ public class GameTextureManager
loadedList.Add(hashPic(pic.code, pic.type), pic);
}
}
catch (Exception e)
{
Debug.Log("e 3" + e.ToString());
}
finally
{
_sem.Release();
}
}
private static void softVtype(PictureResource pic, float si)
{
......@@ -790,6 +782,8 @@ public class GameTextureManager
}
private static void ProcessingCardPicture(PictureResource pic)
{
try
{
string path = "picture/card/" + pic.code.ToString() + ".png";
if (!File.Exists(path))
......@@ -811,7 +805,7 @@ public class GameTextureManager
if (!File.Exists(path) && pic.code != 0 && Program.DownloadImage)
{
//YGOMobile (177x254)
df.Download("http://download.ygo2019.xyz/ygopro/pics/" + pic.code.ToString() + ".jpg", "expansions/pics/" + pic.code.ToString() + ".jpg");
df.Download("http://api.ygo2019.xyz/ygopro/pics/" + pic.code.ToString() + ".jpg", "expansions/pics/" + pic.code.ToString() + ".jpg");
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path) && pic.code != 0 && Program.DownloadImage)
......@@ -851,6 +845,15 @@ public class GameTextureManager
}
}
}
catch (Exception e)
{
Debug.Log("e 2" + e.ToString());
}
finally
{
_sem.Release();
}
}
private static UInt64 hashPic(long code, GameTextureType type)
{
......@@ -932,7 +935,7 @@ public class GameTextureManager
return ret;
}
public static bool uiLoaded=false;
public static bool uiLoaded = false;
public static Texture2D get(string name)
{
......
......@@ -10,25 +10,36 @@ using UnityEngine;
public class HttpDldFile
{
private readonly System.Threading.Semaphore semaphore = new System.Threading.Semaphore(6, 6);
public bool Download(string url, string filename)
{
bool flag = false;
try
{
if(!Directory.Exists(Path.GetDirectoryName(filename))){
if (!Directory.Exists(Path.GetDirectoryName(filename)))
{
Directory.CreateDirectory(Path.GetDirectoryName(filename));
}
using (var client = new WebClient())
using (var client = new TimeoutWebClient())
{
ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;
//authorization needed to acces github
if (Path.GetExtension(filename).Contains("png"))
{
//client.Headers.Add(HttpRequestHeader.Authorization, string.Concat("token ", RepoData.GetToken()));
client.Headers.Add(HttpRequestHeader.ContentType,"application/x-www-form-urlencoded; charset=UTF-8");
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063");
client.DownloadFile(new Uri(url), filename+".tmp");
client.Timeout = 6500;
}
if (Path.GetExtension(filename).Contains("jpg"))
{
client.Timeout = 3500;
}
semaphore.WaitOne();
client.DownloadFile(new Uri(url), filename + ".tmp");
}
flag = true;
if(File.Exists(filename))
if (File.Exists(filename))
{
File.Delete(filename);
}
......@@ -38,6 +49,10 @@ public class HttpDldFile
{
flag = false;
}
finally
{
semaphore.Release();
}
return flag;
}
public static bool MyRemoteCertificateValidationCallback(System.Object sender,
......@@ -68,5 +83,25 @@ public class HttpDldFile
}
return isOk;
}
}
public class TimeoutWebClient : WebClient
{
public int Timeout { get; set; }
public TimeoutWebClient()
{
Timeout = 10000;
}
public TimeoutWebClient(int timeout)
{
Timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
request.Timeout = Timeout;
return request;
}
}
\ No newline at end of file
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