Commit 68b5410a authored by Unicorn369's avatar Unicorn369

Update

parent a3791faa
...@@ -141,14 +141,16 @@ public class Menu : WindowServantSP ...@@ -141,14 +141,16 @@ public class Menu : WindowServantSP
void onClickDownload() void onClickDownload()
{ {
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows #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 #elif UNITY_ANDROID //Android
AndroidJavaObject jo = new AndroidJavaObject("cn.unicorn369.library.API"); AndroidJavaObject jo = new AndroidJavaObject("cn.unicorn369.library.API");
if (!File.Exists("updates/closeup_version1.0.txt")) {//用于检查更新 if (!File.Exists("updates/closeup_version1.1.txt")) {//用于检查更新
if (File.Exists("closeup_version1.0.zip")) {//如果有则直接解压 if (File.Exists("closeup_version1.1.zip")) {//如果有则直接解压
jo.Call("doExtractZipFile", "closeup_version1.0.zip", Program.ANDROID_GAME_PATH); 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 } 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 { } else {
jo.Call("showToast", "已下载,无需再次下载!"); jo.Call("showToast", "已下载,无需再次下载!");
......
...@@ -379,6 +379,7 @@ public class Program : MonoBehaviour ...@@ -379,6 +379,7 @@ public class Program : MonoBehaviour
File.Create("updates/image_version1.1.txt"); File.Create("updates/image_version1.1.txt");
} else { } else {
jo.Call("showToast", "没有发现卡图包,是否未安装YGOMobile"); jo.Call("showToast", "没有发现卡图包,是否未安装YGOMobile");
Application.OpenURL("https://www.taptap.com/app/37972");
} }
} }
#endif #endif
......
...@@ -25,6 +25,7 @@ public class GameTextureManager ...@@ -25,6 +25,7 @@ public class GameTextureManager
static HttpDldFile df = new HttpDldFile(); static HttpDldFile df = new HttpDldFile();
private static readonly Semaphore _sem = new Semaphore(30, 30);
public class BitmapHelper public class BitmapHelper
{ {
public System.Drawing.Color[,] colors = null; public System.Drawing.Color[,] colors = null;
...@@ -144,7 +145,7 @@ public class GameTextureManager ...@@ -144,7 +145,7 @@ public class GameTextureManager
public static Texture2D opBack = null; public static Texture2D opBack = null;
public static Texture2D unknown = null; public static Texture2D unknown = null;
public static Texture2D attack = null; public static Texture2D attack = null;
...@@ -152,7 +153,7 @@ public class GameTextureManager ...@@ -152,7 +153,7 @@ public class GameTextureManager
public static Texture2D bar = null; public static Texture2D bar = null;
public static Texture2D exBar = null; public static Texture2D exBar = null;
public static Texture2D lp = null; public static Texture2D lp = null;
...@@ -207,12 +208,12 @@ public class GameTextureManager ...@@ -207,12 +208,12 @@ public class GameTextureManager
while (waitLoadStack.Count > 0) while (waitLoadStack.Count > 0)
{ {
thu++; thu++;
if (thu==10) if (thu == 10)
{ {
Thread.Sleep(50); Thread.Sleep(50);
thu = 0; thu = 0;
} }
if (bLock==false) if (bLock == false)
{ {
PictureResource pic; PictureResource pic;
...@@ -227,41 +228,23 @@ public class GameTextureManager ...@@ -227,41 +228,23 @@ public class GameTextureManager
} }
if (pic.type == GameTextureType.card_feature) if (pic.type == GameTextureType.card_feature)
{ {
try _sem.WaitOne();
{ new Thread(() => ProcessingCardFeature(pic)).Start();
ProcessingCardFeature(pic);
}
catch (Exception e)
{
Debug.Log("e 1" + e.ToString());
}
} }
if (pic.type == GameTextureType.card_picture) if (pic.type == GameTextureType.card_picture)
{ {
try _sem.WaitOne();
{ new Thread(() => ProcessingCardPicture(pic)).Start();
ProcessingCardPicture(pic);
}
catch (Exception e)
{
Debug.Log("e 2" + e.ToString());
}
} }
if (pic.type == GameTextureType.card_verticle_drawing) if (pic.type == GameTextureType.card_verticle_drawing)
{ {
try _sem.WaitOne();
{ new Thread(() => ProcessingVerticleDrawing(pic)).Start();
ProcessingVerticleDrawing(pic);
}
catch (Exception e)
{
Debug.Log("e 3" + e.ToString());
}
} }
} }
} }
} }
catch (Exception e) catch (Exception e)
{ {
Debug.Log("erroe 1" + e.ToString()); Debug.Log("erroe 1" + e.ToString());
} }
...@@ -270,96 +253,57 @@ public class GameTextureManager ...@@ -270,96 +253,57 @@ public class GameTextureManager
private static void ProcessingCardFeature(PictureResource pic) private static void ProcessingCardFeature(PictureResource pic)
{ {
if (File.Exists("picture/closeup/" + pic.code.ToString() + ".png")) try
{
string path = "picture/closeup/" + pic.code.ToString() + ".png";
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
BitmapHelper bitmap = new BitmapHelper(path);
int left;
int right;
int up;
int down;
CutTop(bitmap, out left, out right, out up, out down);
up = CutLeft(bitmap, up);
down = CutRight(bitmap, down);
right = CutButton(bitmap, right);
int width = right - left;
int height = down - up;
pic.hashed_data = new float[width, height, 4];
for (int w = 0; w < width; w++)
{
for (int h = 0; h < height; h++)
{
System.Drawing.Color color = bitmap.GetPixel(left + w, up + h);
float a = (float)color.A / 255f;
if (w < 40) if (a > (float)w / (float)40) a = (float)w / (float)40;
if (w > (width - 40)) if (a > 1f - (float)(w - (width - 40)) / (float)40) a = 1f - (float)(w - (width - 40)) / (float)40;
if (h < 40) if (a > (float)h / (float)40) a = (float)h / (float)40;
if (h > (height - 40)) if (a > 1f - (float)(h - (height - 40)) / (float)40) a = 1f - (float)(h - (height - 40)) / (float)40;
pic.hashed_data[w, height - h - 1, 0] = (float)color.R / 255f;
pic.hashed_data[w, height - h - 1, 1] = (float)color.G / 255f;
pic.hashed_data[w, height - h - 1, 2] = (float)color.B / 255f;
pic.hashed_data[w, height - h - 1, 3] = a;
}
}
caculateK(pic);
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{
loadedList.Add(hashPic(pic.code, pic.type), pic);
}
}
else
{ {
string path = "picture/card/" + pic.code.ToString() + ".png"; if (File.Exists("picture/closeup/" + pic.code.ToString() + ".png"))
if (!File.Exists(path))
{
path = "picture/card/" + pic.code.ToString() + ".jpg";
}
bool Iam8 = false;
if (!File.Exists(path))
{ {
Iam8 = true; string path = "picture/closeup/" + pic.code.ToString() + ".png";
path = "expansions/pics/" + pic.code.ToString() + ".jpg"; #if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
} BitmapHelper bitmap = new BitmapHelper(path);
if (!File.Exists(path)) int left;
{ int right;
Iam8 = true; int up;
path = "pics/" + pic.code.ToString() + ".jpg"; int down;
} CutTop(bitmap, out left, out right, out up, out down);
if (!File.Exists(path)) up = CutLeft(bitmap, up);
{ down = CutRight(bitmap, down);
Iam8 = true; right = CutButton(bitmap, right);
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg"; int width = right - left;
} int height = down - up;
if (!File.Exists(path)) pic.hashed_data = new float[width, height, 4];
{ for (int w = 0; w < width; w++)
pic.hashed_data = new float[10, 10, 4];
for (int w = 0; w < 10; w++)
{ {
for (int h = 0; h < 10; h++) for (int h = 0; h < height; h++)
{ {
pic.hashed_data[w, h, 0] = 0; System.Drawing.Color color = bitmap.GetPixel(left + w, up + h);
pic.hashed_data[w, h, 1] = 0; float a = (float)color.A / 255f;
pic.hashed_data[w, h, 2] = 0; if (w < 40) if (a > (float)w / (float)40) a = (float)w / (float)40;
pic.hashed_data[w, h, 3] = 0; if (w > (width - 40)) if (a > 1f - (float)(w - (width - 40)) / (float)40) a = 1f - (float)(w - (width - 40)) / (float)40;
if (h < 40) if (a > (float)h / (float)40) a = (float)h / (float)40;
if (h > (height - 40)) if (a > 1f - (float)(h - (height - 40)) / (float)40) a = 1f - (float)(h - (height - 40)) / (float)40;
pic.hashed_data[w, height - h - 1, 0] = (float)color.R / 255f;
pic.hashed_data[w, height - h - 1, 1] = (float)color.G / 255f;
pic.hashed_data[w, height - h - 1, 2] = (float)color.B / 255f;
pic.hashed_data[w, height - h - 1, 3] = a;
} }
} }
caculateK(pic);
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type))) if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{ {
loadedList.Add(hashPic(pic.code, pic.type), pic); loadedList.Add(hashPic(pic.code, pic.type), pic);
...@@ -367,40 +311,90 @@ public class GameTextureManager ...@@ -367,40 +311,90 @@ public class GameTextureManager
} }
else else
{ {
pic.hashed_data = getCuttedPic(path, pic.pCard,Iam8); string path = "picture/card/" + pic.code.ToString() + ".png";
int width = pic.hashed_data.GetLength(0); if (!File.Exists(path))
int height = pic.hashed_data.GetLength(1);
int size = (int)(height * 0.8);
int empWidth = (width - size) / 2;
int empHeight = (height - size) / 2;
int right = width - empWidth;
int buttom = height - empHeight;
for (int w = 0; w < width; w++)
{ {
for (int h = 0; h < height; h++) path = "picture/card/" + pic.code.ToString() + ".jpg";
}
bool Iam8 = false;
if (!File.Exists(path))
{
Iam8 = true;
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
Iam8 = true;
path = "pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
Iam8 = true;
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
pic.hashed_data = new float[10, 10, 4];
for (int w = 0; w < 10; w++)
{ {
float a = pic.hashed_data[w, h, 3]; for (int h = 0; h < 10; h++)
if (w < empWidth) {
if (a > ((float)w) / (float)empWidth) pic.hashed_data[w, h, 0] = 0;
a = ((float)w) / (float)empWidth; pic.hashed_data[w, h, 1] = 0;
if (h < empHeight) pic.hashed_data[w, h, 2] = 0;
if (a > ((float)h) / (float)empHeight) pic.hashed_data[w, h, 3] = 0;
a = ((float)h) / (float)empHeight; }
if (w > right) }
if (a > 1f - ((float)(w - right)) / (float)empWidth) if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
a = 1f - ((float)(w - right)) / (float)empWidth; {
if (h > buttom) loadedList.Add(hashPic(pic.code, pic.type), pic);
if (a > 1f - ((float)(h - buttom)) / (float)empHeight)
a = 1f - ((float)(h - buttom)) / (float)empHeight;
pic.hashed_data[w, h, 3] = a * 0.7f;
} }
} }
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type))) else
{ {
loadedList.Add(hashPic(pic.code, pic.type), pic); pic.hashed_data = getCuttedPic(path, pic.pCard,Iam8);
int width = pic.hashed_data.GetLength(0);
int height = pic.hashed_data.GetLength(1);
int size = (int)(height * 0.8);
int empWidth = (width - size) / 2;
int empHeight = (height - size) / 2;
int right = width - empWidth;
int buttom = height - empHeight;
for (int w = 0; w < width; w++)
{
for (int h = 0; h < height; h++)
{
float a = pic.hashed_data[w, h, 3];
if (w < empWidth)
if (a > ((float)w) / (float)empWidth)
a = ((float)w) / (float)empWidth;
if (h < empHeight)
if (a > ((float)h) / (float)empHeight)
a = ((float)h) / (float)empHeight;
if (w > right)
if (a > 1f - ((float)(w - right)) / (float)empWidth)
a = 1f - ((float)(w - right)) / (float)empWidth;
if (h > buttom)
if (a > 1f - ((float)(h - buttom)) / (float)empHeight)
a = 1f - ((float)(h - buttom)) / (float)empHeight;
pic.hashed_data[w, h, 3] = a * 0.7f;
}
}
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{
loadedList.Add(hashPic(pic.code, pic.type), pic);
}
} }
} }
} }
catch (Exception e)
{
Debug.Log("e 1" + e.ToString());
}
finally
{
_sem.Release();
}
} }
private static void caculateK(PictureResource pic) private static void caculateK(PictureResource pic)
...@@ -439,7 +433,7 @@ public class GameTextureManager ...@@ -439,7 +433,7 @@ public class GameTextureManager
int width = pic.hashed_data.GetLength(0); int width = pic.hashed_data.GetLength(0);
int height = pic.hashed_data.GetLength(1); int height = pic.hashed_data.GetLength(1);
int h = 0; int h = 0;
for (h = height-1; h >0; h--) for (h = height - 1; h > 0; h--)
{ {
int all = 0; int all = 0;
for (int w = 0; w < width; w++) for (int w = 0; w < width; w++)
...@@ -454,7 +448,7 @@ public class GameTextureManager ...@@ -454,7 +448,7 @@ public class GameTextureManager
break; break;
} }
} }
pic.k =((float)h) / ((float)height); pic.k = ((float)h) / ((float)height);
if (pic.k > 1) if (pic.k > 1)
{ {
pic.k = 1f; pic.k = 1f;
...@@ -465,12 +459,12 @@ public class GameTextureManager ...@@ -465,12 +459,12 @@ 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); BitmapHelper bitmap = new BitmapHelper(path);
int left = 0, top = 0, right = bitmap.colors.GetLength(0), buttom = bitmap.colors.GetLength(1); int left = 0, top = 0, right = bitmap.colors.GetLength(0), buttom = bitmap.colors.GetLength(1);
//right is width and buttom is height now //right is width and buttom is height now
if (EightEdition) if (EightEdition)
{ {
if (pCard) if (pCard)
{ {
...@@ -594,148 +588,146 @@ public class GameTextureManager ...@@ -594,148 +588,146 @@ public class GameTextureManager
private static void ProcessingVerticleDrawing(PictureResource pic) private static void ProcessingVerticleDrawing(PictureResource pic)
{ {
string path = "picture/closeup/" + pic.code.ToString() + ".png"; try
if (!File.Exists(path))
{ {
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows string path = "picture/closeup/" + pic.code.ToString() + ".png";
path = "picture/card/" + pic.code.ToString() + ".png";
if (!File.Exists(path))
{
path = "picture/card/" + pic.code.ToString() + ".jpg";
}
bool Iam8 = false;
if (!File.Exists(path))
{
Iam8 = true;
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
Iam8 = true;
path = "pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
Iam8 = true;
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
path = "textures/unknown.jpg";//YGOMobile Paths
}
if (!File.Exists(path)) if (!File.Exists(path))
{ {
return; #if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
} path = "picture/card/" + pic.code.ToString() + ".png";
pic.hashed_data = getCuttedPic(path, pic.pCard,Iam8); if (!File.Exists(path))
softVtype(pic, 0.5f);
pic.k = 1;
//pic.autoMade = true;
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
path = "picture/null.png";
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
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
}
else
{
#if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
BitmapHelper bitmap = new BitmapHelper(path);
int left;
int right;
int up;
int down;
CutTop(bitmap, out left, out right, out up, out down);
up = CutLeft(bitmap, up);
down = CutRight(bitmap, down);
right = CutButton(bitmap, right);
int width = right - left;
int height = down - up;
pic.hashed_data = new float[width, height, 4];
for (int w = 0; w < width; w++)
{
for (int h = 0; h < height; h++)
{ {
System.Drawing.Color color = bitmap.GetPixel(left + w, up + h); path = "picture/card/" + pic.code.ToString() + ".jpg";
pic.hashed_data[w, height - h - 1, 0] = (float)color.R / 255f;
pic.hashed_data[w, height - h - 1, 1] = (float)color.G / 255f;
pic.hashed_data[w, height - h - 1, 2] = (float)color.B / 255f;
pic.hashed_data[w, height - h - 1, 3] = (float)color.A / 255f;
} }
} bool Iam8 = false;
float wholeUNalpha = 0; if (!File.Exists(path))
for (int w = 0; w < width; w++)
{
if (pic.hashed_data[w, 0, 3] > 0.1f)
{ {
wholeUNalpha += ((float)Math.Abs(w - width / 2)) / ((float)(width / 2)); Iam8 = true;
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
} }
if (pic.hashed_data[w, height - 1, 3] > 0.1f) if (!File.Exists(path))
{ {
wholeUNalpha += 1; Iam8 = true;
path = "pics/" + pic.code.ToString() + ".jpg";
} }
} if (!File.Exists(path))
for (int h = 0; h < height; h++) {
{ Iam8 = true;
if (pic.hashed_data[0, h, 3] > 0.1f) path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{ {
wholeUNalpha += 1; path = "textures/unknown.jpg";//YGOMobile Paths
} }
if (pic.hashed_data[width - 1, h, 3] > 0.1f) if (!File.Exists(path))
{ {
wholeUNalpha += 1; path = "picture/null.png";
} }
pic.hashed_data = getCuttedPic(path, pic.pCard, Iam8);
softVtype(pic, 0.5f);
pic.k = 1;
//pic.autoMade = true;
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
path = "picture/null.png";
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
} }
if (wholeUNalpha >= ((width + height) * 0.5f * 0.12f)) else
{ {
softVtype(pic,0.7f); #if UNITY_EDITOR || UNITY_STANDALONE_WIN //编译器、Windows
BitmapHelper bitmap = new BitmapHelper(path);
int left;
int right;
int up;
int down;
CutTop(bitmap, out left, out right, out up, out down);
up = CutLeft(bitmap, up);
down = CutRight(bitmap, down);
right = CutButton(bitmap, right);
int width = right - left;
int height = down - up;
pic.hashed_data = new float[width, height, 4];
for (int w = 0; w < width; w++)
{
for (int h = 0; h < height; h++)
{
System.Drawing.Color color = bitmap.GetPixel(left + w, up + h);
pic.hashed_data[w, height - h - 1, 0] = (float)color.R / 255f;
pic.hashed_data[w, height - h - 1, 1] = (float)color.G / 255f;
pic.hashed_data[w, height - h - 1, 2] = (float)color.B / 255f;
pic.hashed_data[w, height - h - 1, 3] = (float)color.A / 255f;
}
}
float wholeUNalpha = 0;
for (int w = 0; w < width; w++)
{
if (pic.hashed_data[w, 0, 3] > 0.1f)
{
wholeUNalpha += ((float)Math.Abs(w - width / 2)) / ((float)(width / 2));
}
if (pic.hashed_data[w, height - 1, 3] > 0.1f)
{
wholeUNalpha += 1;
}
}
for (int h = 0; h < height; h++)
{
if (pic.hashed_data[0, h, 3] > 0.1f)
{
wholeUNalpha += 1;
}
if (pic.hashed_data[width - 1, h, 3] > 0.1f)
{
wholeUNalpha += 1;
}
}
if (wholeUNalpha >= ((width + height) * 0.5f * 0.12f))
{
softVtype(pic, 0.7f);
}
caculateK(pic);
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
#endif
} }
caculateK(pic);
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
/*
* 以上处理其他平台无法正常使用
* 暂时只能直接贴图,以后再处理
*/
#elif UNITY_ANDROID || UNITY_IPHONE //Android、iPhone
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{ {
file.Seek(0, SeekOrigin.Begin); loadedList.Add(hashPic(pic.code, pic.type), pic);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
} }
pic.data = data;
#endif
} }
catch (Exception e)
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type))) {
Debug.Log("e 3" + e.ToString());
}
finally
{ {
loadedList.Add(hashPic(pic.code, pic.type), pic); _sem.Release();
} }
} }
...@@ -791,64 +783,75 @@ public class GameTextureManager ...@@ -791,64 +783,75 @@ public class GameTextureManager
private static void ProcessingCardPicture(PictureResource pic) private static void ProcessingCardPicture(PictureResource pic)
{ {
string path = "picture/card/" + pic.code.ToString() + ".png"; try
if (!File.Exists(path))
{
path = "picture/card/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
path = "pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
}
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");
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path) && pic.code != 0 && Program.DownloadImage)
{
//先行卡 (177x254)
df.Download("http://download.ygo2019.xyz/ygopro2-data/expansions/pics/" + pic.code.ToString() + ".jpg", "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg");
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
}
if (!File.Exists(path))
{ {
if (pic.code > 0) string path = "picture/card/" + pic.code.ToString() + ".png";
if (!File.Exists(path))
{ {
pic.u_data = unknown; path = "picture/card/" + pic.code.ToString() + ".jpg";
} }
else if (!File.Exists(path))
{ {
pic.u_data = myBack; path = "expansions/pics/" + pic.code.ToString() + ".jpg";
} }
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type))) if (!File.Exists(path))
{ {
loadedList.Add(hashPic(pic.code, pic.type), pic); path = "pics/" + pic.code.ToString() + ".jpg";
} }
} if (!File.Exists(path))
else {
{ path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
byte[] data; }
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read)) if (!File.Exists(path) && pic.code != 0 && Program.DownloadImage)
{ {
file.Seek(0, SeekOrigin.Begin); //YGOMobile (177x254)
data = new byte[file.Length]; df.Download("http://api.ygo2019.xyz/ygopro/pics/" + pic.code.ToString() + ".jpg", "expansions/pics/" + pic.code.ToString() + ".jpg");
file.Read(data, 0, (int)file.Length); path = "expansions/pics/" + pic.code.ToString() + ".jpg";
} }
pic.data = data; if (!File.Exists(path) && pic.code != 0 && Program.DownloadImage)
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{ {
loadedList.Add(hashPic(pic.code, pic.type), pic); //先行卡 (177x254)
df.Download("http://download.ygo2019.xyz/ygopro2-data/expansions/pics/" + pic.code.ToString() + ".jpg", "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg");
path = "picture/cardIn8thEdition/" + pic.code.ToString() + ".jpg";
} }
if (!File.Exists(path))
{
if (pic.code > 0)
{
pic.u_data = unknown;
}
else
{
pic.u_data = myBack;
}
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{
loadedList.Add(hashPic(pic.code, pic.type), pic);
}
}
else
{
byte[] data;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
file.Seek(0, SeekOrigin.Begin);
data = new byte[file.Length];
file.Read(data, 0, (int)file.Length);
}
pic.data = data;
if (!loadedList.ContainsKey(hashPic(pic.code, pic.type)))
{
loadedList.Add(hashPic(pic.code, pic.type), pic);
}
}
}
catch (Exception e)
{
Debug.Log("e 2" + e.ToString());
}
finally
{
_sem.Release();
} }
} }
...@@ -932,7 +935,7 @@ public class GameTextureManager ...@@ -932,7 +935,7 @@ public class GameTextureManager
return ret; return ret;
} }
public static bool uiLoaded=false; public static bool uiLoaded = false;
public static Texture2D get(string name) public static Texture2D get(string name)
{ {
...@@ -1004,9 +1007,9 @@ public class GameTextureManager ...@@ -1004,9 +1007,9 @@ public class GameTextureManager
ts = UIHelper.getTexture2D("textures/duel/phase/ts.png");//YGOMobile Paths ts = UIHelper.getTexture2D("textures/duel/phase/ts.png");//YGOMobile Paths
N = new Texture2D(10,10); N = new Texture2D(10,10);
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
for (int a = 0; a < 10; a++) for (int a = 0; a < 10; a++)
{ {
N.SetPixel(i, a, new UnityEngine.Color(0, 0, 0, 0)); N.SetPixel(i, a, new UnityEngine.Color(0, 0, 0, 0));
} }
...@@ -1016,7 +1019,7 @@ public class GameTextureManager ...@@ -1016,7 +1019,7 @@ public class GameTextureManager
{ {
ColorUtility.TryParseHtmlString(File.ReadAllText("textures/duel/chainColor.txt"), out chainColor);//YGOMobile Paths ColorUtility.TryParseHtmlString(File.ReadAllText("textures/duel/chainColor.txt"), out chainColor);//YGOMobile Paths
} }
catch (Exception) catch (Exception)
{ {
} }
......
...@@ -10,25 +10,36 @@ using UnityEngine; ...@@ -10,25 +10,36 @@ using UnityEngine;
public class HttpDldFile public class HttpDldFile
{ {
private readonly System.Threading.Semaphore semaphore = new System.Threading.Semaphore(6, 6);
public bool Download(string url, string filename) public bool Download(string url, string filename)
{ {
bool flag = false; bool flag = false;
try try
{ {
if(!Directory.Exists(Path.GetDirectoryName(filename))){ if (!Directory.Exists(Path.GetDirectoryName(filename)))
Directory.CreateDirectory(Path.GetDirectoryName(filename)); {
} Directory.CreateDirectory(Path.GetDirectoryName(filename));
}
using (var client = new WebClient())
{ using (var client = new TimeoutWebClient())
ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback; {
//client.Headers.Add(HttpRequestHeader.Authorization, string.Concat("token ", RepoData.GetToken())); ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;
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"); //authorization needed to acces github
client.DownloadFile(new Uri(url), filename+".tmp"); if (Path.GetExtension(filename).Contains("png"))
} {
flag = true; //client.Headers.Add(HttpRequestHeader.Authorization, string.Concat("token ", RepoData.GetToken()));
if(File.Exists(filename)) 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))
{ {
File.Delete(filename); File.Delete(filename);
} }
...@@ -38,6 +49,10 @@ public class HttpDldFile ...@@ -38,6 +49,10 @@ public class HttpDldFile
{ {
flag = false; flag = false;
} }
finally
{
semaphore.Release();
}
return flag; return flag;
} }
public static bool MyRemoteCertificateValidationCallback(System.Object sender, public static bool MyRemoteCertificateValidationCallback(System.Object sender,
...@@ -68,5 +83,25 @@ public class HttpDldFile ...@@ -68,5 +83,25 @@ public class HttpDldFile
} }
return isOk; 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