1876 lines
67 KiB
C#
1876 lines
67 KiB
C#
/*
|
||
********************************************************************************
|
||
*Copyright(C),coolae.net
|
||
*Author: chenbin
|
||
*Version: 2.0
|
||
*Date: 2017-01-09
|
||
*Description: 打包工具
|
||
*Others:
|
||
*History:
|
||
*********************************************************************************
|
||
*/
|
||
using UnityEngine;
|
||
using UnityEditor;
|
||
using System;
|
||
using System.IO;
|
||
using System.Collections;
|
||
using System.IO.Compression;
|
||
using Coolape;
|
||
using System.Collections.Generic;
|
||
using CSObjectWrapEditor;
|
||
using UnityEditor.Callbacks;
|
||
using UnityEditor.Purchasing;
|
||
using UnityEditor.SceneManagement;
|
||
|
||
|
||
/// <summary>
|
||
/// Coolape Publisher .
|
||
/// 库猿编译发布工具
|
||
/// 2013-11-16
|
||
/// create by chenbin
|
||
/// </summary>
|
||
|
||
|
||
public class ECLPublisher : EditorWindow
|
||
{
|
||
public delegate void OnClickCallback();
|
||
|
||
string[] AndroidIconsName = {
|
||
"192x192",
|
||
"144x144",
|
||
"96x96",
|
||
"72x72",
|
||
"48x48",
|
||
"36x36"
|
||
};
|
||
|
||
string[] IosIconsName = {
|
||
"180x180",
|
||
"167x167",
|
||
"152x152",
|
||
"144x144",
|
||
"120x120",
|
||
"114x114",
|
||
"76x76",
|
||
"72x72",
|
||
"57x57",
|
||
"120x120(Spotlight)",
|
||
"80x80(Spotlight)",
|
||
"40x40(Spotlight)",
|
||
"87x87(Settings)",
|
||
"58x58(Settings)",
|
||
"29x29(Settings)",
|
||
"60x60(Notification)",
|
||
"40x40(Notification)",
|
||
"20x20(Notification)",
|
||
"1024x1024(App Store)"
|
||
};
|
||
|
||
string[] standandsIconsName = {
|
||
"1024x1024",
|
||
"512x512",
|
||
"256x256",
|
||
"128x128",
|
||
"64x64",
|
||
"32x32",
|
||
"16x16",
|
||
};
|
||
|
||
const string configFile = ECLProjectManager.FrameData + "/cfg/publishChannel.cfg";
|
||
//渠道列表
|
||
Hashtable channelMap = new Hashtable();
|
||
ArrayList channelEnum = new ArrayList();
|
||
ArrayList channelKey = new ArrayList();
|
||
ArrayList channelAliasEnum = new ArrayList();
|
||
Hashtable channelData = new Hashtable();
|
||
|
||
//配置渠道
|
||
int channelCount = 0;
|
||
int enumCount = 0;
|
||
bool isFinishInit = false;
|
||
string newChlKey = "";
|
||
string newChlName = "";
|
||
string newChlAlias = "";
|
||
string copyChlFromKey = "";
|
||
bool isShowCfgChlDesc = false;
|
||
int currChlIndex = -1;
|
||
bool isComfireDelete = false;
|
||
bool isShowHelpBox = false;
|
||
bool isShowCfgFileDesc = false;
|
||
string currChlKey = "";
|
||
string currChlID = "";
|
||
string currChlAlias = "";
|
||
ChlData currChlData = new ChlData();
|
||
Vector2 scrollPos = Vector2.zero;
|
||
Vector2 scrollPos2 = Vector2.zero;
|
||
bool isShowIcons = false;
|
||
bool isCanEdite = false;
|
||
bool haveModifyChlCfg = false;
|
||
static UnityEngine.Object tmpCopyFolder2PluginObj;
|
||
static bool tmpCopyFolder2PluginUnZip = false;
|
||
|
||
string[] tabs = new string[] { "Channel List", "Channel Config" };
|
||
int tabIndex = 0;
|
||
|
||
void OnLostFocus()
|
||
{
|
||
isFinishInit = false;
|
||
}
|
||
// 防止在 onGUI 中处理点击事件会出现编辑器报错,从而使用 delayCall 的方式来实现点击处理 - by Ken.
|
||
void onClickOK()
|
||
{
|
||
if (onClickCallbak != null)
|
||
{
|
||
onClickCallbak();
|
||
}
|
||
}
|
||
|
||
void OnGUI()
|
||
{
|
||
if (!isFinishInit)
|
||
{
|
||
isFinishInit = true;
|
||
initData();
|
||
}
|
||
|
||
if (!ECLProjectSetting.isProjectExit(ECLProjectManager.self))
|
||
{
|
||
GUIStyle style = new GUIStyle();
|
||
style.fontSize = 20;
|
||
style.normal.textColor = Color.yellow;
|
||
GUILayout.Label("The scene is not ready, create it now?", style);
|
||
if (GUILayout.Button("Show Project Manager"))
|
||
{
|
||
EditorWindow.GetWindow<ECLProjectManager>(false, "CoolapeProject", true);
|
||
}
|
||
return;
|
||
}
|
||
//==========title============
|
||
tabIndex = GUILayout.Toolbar(tabIndex, tabs);
|
||
|
||
//配置渠道
|
||
if (tabIndex == 1)
|
||
{
|
||
scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
|
||
{
|
||
showCfgChannel();
|
||
}
|
||
EditorGUILayout.EndScrollView();
|
||
}
|
||
else
|
||
{
|
||
if (haveModifyChlCfg)
|
||
{
|
||
if (EditorUtility.DisplayDialog("Alert", "You have modified the channel config,do you want to save the data?", "Save", "Cancel"))
|
||
{
|
||
saveData();
|
||
}
|
||
haveModifyChlCfg = false;
|
||
}
|
||
//渠道详细信息
|
||
GUI.color = Color.white;
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
//--------------------left------------------------------------
|
||
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(245));
|
||
{
|
||
ECLEditorUtl.BeginContents();
|
||
{
|
||
//channel list
|
||
GUI.color = Color.white;
|
||
if (channelEnum != null)
|
||
{
|
||
channelCount = channelEnum.Count;
|
||
for (int i = 0; i < channelCount; i++)
|
||
{
|
||
if (i == currChlIndex)
|
||
{
|
||
GUI.color = Color.yellow;
|
||
}
|
||
else
|
||
{
|
||
GUI.color = Color.white;
|
||
}
|
||
if (GUILayout.Button(channelEnum[i].ToString() + " (" + channelAliasEnum[i] + ")"))
|
||
{
|
||
currChlKey = channelKey[i].ToString();
|
||
currChlID = channelEnum[i].ToString();
|
||
currChlAlias = channelAliasEnum[i].ToString();
|
||
isComfireDelete = false;
|
||
isShowHelpBox = false;
|
||
isShowIcons = false;
|
||
currChlIndex = i;
|
||
getChlData(currChlKey, currChlID);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
ECLEditorUtl.EndContents();
|
||
}
|
||
EditorGUILayout.EndScrollView();
|
||
|
||
//========right========
|
||
GUI.color = Color.white;
|
||
GUILayout.BeginVertical();
|
||
{
|
||
if (currChlIndex >= 0 && currChlIndex < channelEnum.Count)
|
||
{
|
||
GUILayout.Space(-5);
|
||
using (new UnityEditorHelper.HighlightBox())
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
if (!isComfireDelete && !isShowHelpBox)
|
||
{
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Save"))
|
||
{
|
||
saveChlBuildSetting();
|
||
}
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Chg4Edit"))
|
||
{
|
||
chgChl4Edit();
|
||
}
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Apply"))
|
||
{
|
||
applySetting();
|
||
}
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Apply&Build"))
|
||
{
|
||
showMsgBox(currChlKey + ":确认各参数是否正确!", MessageType.Warning, applyAndBuild);
|
||
}
|
||
GUI.color = Color.yellow;
|
||
if (GUILayout.Button(isCanEdite ? "Lock Edite" : "Unlock Edite"))
|
||
{
|
||
isCanEdite = !isCanEdite;
|
||
}
|
||
GUI.color = Color.red;
|
||
if (GUILayout.Button("Clean"))
|
||
{
|
||
isComfireDelete = true;
|
||
}
|
||
}
|
||
else if (isComfireDelete)
|
||
{
|
||
GUI.color = Color.white;
|
||
EditorGUILayout.HelpBox("确定要清除所选的渠道的配置信息?", MessageType.Warning);
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Cancel"))
|
||
{
|
||
isComfireDelete = false;
|
||
}
|
||
GUI.color = Color.red;
|
||
if (GUILayout.Button("Clean Now"))
|
||
{
|
||
isComfireDelete = false;
|
||
cleanChlSetting(currChlKey, currChlID);
|
||
}
|
||
}
|
||
else if (isShowHelpBox)
|
||
{
|
||
GUI.color = Color.white;
|
||
EditorGUILayout.HelpBox(msgBoxMsg, msgBoxType);
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Okey"))
|
||
{
|
||
isShowHelpBox = false;
|
||
EditorApplication.delayCall += onClickOK;
|
||
}
|
||
GUI.color = Color.red;
|
||
if (GUILayout.Button("Cancel"))
|
||
{
|
||
isShowHelpBox = false;
|
||
onClickCallbak = null;
|
||
}
|
||
GUI.color = Color.white;
|
||
}
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
GUI.color = Color.white;
|
||
GUILayout.Space(10);
|
||
}
|
||
}
|
||
GUILayout.Space(-11);
|
||
scrollPos2 = EditorGUILayout.BeginScrollView(scrollPos2);
|
||
{
|
||
if (currChlIndex >= 0)
|
||
{
|
||
using (new UnityEditorHelper.HighlightBox())
|
||
{
|
||
GUILayout.Space(10);
|
||
GUI.enabled = isCanEdite;
|
||
channelCell(currChlKey, false);
|
||
GUI.enabled = true;
|
||
GUI.backgroundColor = Color.white;
|
||
}
|
||
}
|
||
}
|
||
EditorGUILayout.EndScrollView();
|
||
}
|
||
GUILayout.EndVertical();
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
}
|
||
|
||
void showCfgChannel()
|
||
{
|
||
ECLEditorUtl.BeginContents();
|
||
{
|
||
using (new UnityEditorHelper.HighlightBox())
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUI.color = Color.white;
|
||
GUILayout.Label("#", GUILayout.Width(20));
|
||
GUILayout.Label("Key", GUILayout.Width(125));
|
||
GUILayout.Label("ID", GUILayout.Width(125));
|
||
GUILayout.Label("Symbols", GUILayout.Width(125));
|
||
GUILayout.Label("Alias", GUILayout.Width(125));
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Save", GUILayout.Width(125)))
|
||
{
|
||
saveData();
|
||
copyChlFromKey = "";
|
||
}
|
||
GUI.color = Color.yellow;
|
||
if (GUILayout.Button("!", GUILayout.Width(20)))
|
||
{
|
||
isShowCfgChlDesc = !isShowCfgChlDesc;
|
||
}
|
||
GUI.color = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
if (isShowCfgChlDesc)
|
||
{
|
||
GUI.color = Color.white;
|
||
EditorGUILayout.HelpBox(
|
||
"以下为渠道定义。注意当定义好渠道后," +
|
||
"可以在对应的渠道代码中加上宏的预编译判断处理渠道特殊的逻辑," +
|
||
"例如小米渠道=“mi”,宏为:“CHL_MI”",
|
||
MessageType.Info);
|
||
}
|
||
showChannelConfigList();
|
||
showNewChannel();
|
||
}
|
||
}
|
||
ECLEditorUtl.EndContents();
|
||
}
|
||
|
||
|
||
public void showChannelConfigList()
|
||
{
|
||
GUI.color = Color.white;
|
||
if (channelEnum != null)
|
||
{
|
||
enumCount = channelEnum.Count;
|
||
for (int i = 0; i < enumCount; i++)
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label((i + 1).ToString(), GUILayout.Width(20));
|
||
channelKey[i] = GUILayout.TextField(channelKey[i].ToString(), GUILayout.Width(125));
|
||
channelEnum[i] = GUILayout.TextField(channelEnum[i].ToString(), GUILayout.Width(125));
|
||
string symbols = "CHL_" + channelEnum[i].ToString().ToUpper();
|
||
GUILayout.TextField(symbols, GUILayout.Width(125));
|
||
if (i >= channelAliasEnum.Count)
|
||
{
|
||
channelAliasEnum.Add("");
|
||
}
|
||
channelAliasEnum[i] = GUILayout.TextField(channelAliasEnum[i] == null ? "" : channelAliasEnum[i].ToString(), GUILayout.Width(125));
|
||
|
||
if (GUILayout.Button("Modify", GUILayout.Width(60f)))
|
||
{
|
||
haveModifyChlCfg = true;
|
||
channelData["channelKey"] = channelKey;
|
||
channelData["channelEnum"] = channelEnum;
|
||
channelData["channelAliasEnum"] = channelAliasEnum;
|
||
return;
|
||
}
|
||
if (GUILayout.Button("Copy", GUILayout.Width(60f)))
|
||
{
|
||
haveModifyChlCfg = true;
|
||
copyChlFromKey = channelKey[i].ToString();
|
||
newChlKey = "Copy " + channelKey[i];
|
||
newChlName = "Copy " + channelEnum[i];
|
||
newChlAlias = "Copy " + channelAliasEnum[i];
|
||
}
|
||
GUI.color = Color.red;
|
||
if (GUILayout.Button("-", GUILayout.Width(20)))
|
||
{
|
||
if (EditorUtility.DisplayDialog("Alert", string.Format("Really want to delete [{0}] Chanel!", channelKey[i]), "Okay", "Cancel"))
|
||
{
|
||
haveModifyChlCfg = true;
|
||
channelKey.RemoveAt(i);
|
||
channelEnum.RemoveAt(i);
|
||
channelAliasEnum.RemoveAt(i);
|
||
channelData["channelKey"] = channelKey;
|
||
channelData["channelEnum"] = channelEnum;
|
||
channelData["channelAliasEnum"] = channelAliasEnum;
|
||
return;
|
||
}
|
||
}
|
||
GUI.color = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
}
|
||
}
|
||
|
||
public void showNewChannel()
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUI.color = Color.cyan;
|
||
GUILayout.Label((enumCount + 1).ToString(), GUILayout.Width(20));
|
||
newChlKey = GUILayout.TextField(newChlKey, GUILayout.Width(125));
|
||
newChlName = GUILayout.TextField(newChlName, GUILayout.Width(125));
|
||
string symbols = "";
|
||
if (!string.IsNullOrEmpty(newChlName))
|
||
{
|
||
symbols = "CHL_" + newChlName.ToUpper();
|
||
}
|
||
GUILayout.TextField(symbols, GUILayout.Width(125));
|
||
newChlAlias = GUILayout.TextField(newChlAlias, GUILayout.Width(125));
|
||
GUI.color = Color.white;
|
||
|
||
GUI.color = Color.green;
|
||
if (GUILayout.Button("Add", GUILayout.Width(60f)))
|
||
{
|
||
if (string.IsNullOrEmpty(newChlKey)
|
||
|| string.IsNullOrEmpty(newChlName))
|
||
{
|
||
EditorUtility.DisplayDialog("Alert", "Channel key || Channel ID is null!", "Okey");
|
||
return;
|
||
}
|
||
if (!string.IsNullOrEmpty(newChlKey) &&
|
||
!string.IsNullOrEmpty(newChlName))
|
||
{
|
||
if (channelMap[newChlKey] != null)
|
||
{
|
||
EditorUtility.DisplayDialog("Alert", string.Format("The key [{0}] is allready exist, Plese given a unique key!", newChlKey), "Okey");
|
||
return;
|
||
}
|
||
channelKey.Add(newChlKey);
|
||
channelEnum.Add(newChlName);
|
||
channelAliasEnum.Add(newChlAlias);
|
||
channelData["channelKey"] = channelKey;
|
||
channelData["channelEnum"] = channelEnum;
|
||
channelData["channelAliasEnum"] = channelAliasEnum;
|
||
|
||
haveModifyChlCfg = true;
|
||
|
||
if (!string.IsNullOrEmpty(copyChlFromKey))
|
||
{
|
||
object tmpData = channelMap[copyChlFromKey];
|
||
ChlData ChlData = tmpData == null ? new ChlData() : ChlData.parse((Hashtable)tmpData);
|
||
ChlData.mChlName = newChlName;
|
||
channelMap[newChlKey] = ChlData.toMap();
|
||
}
|
||
|
||
newChlName = "";
|
||
newChlKey = "";
|
||
newChlAlias = "";
|
||
saveData();
|
||
}
|
||
else
|
||
{
|
||
Debug.LogWarning("Please input the channel name!");
|
||
}
|
||
}
|
||
|
||
GUI.color = Color.yellow;
|
||
if (GUILayout.Button("Clear", GUILayout.Width(60f)))
|
||
{
|
||
newChlName = "";
|
||
newChlKey = "";
|
||
newChlAlias = "";
|
||
}
|
||
GUI.color = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
if (channelMap.ContainsKey(newChlKey))
|
||
{
|
||
GUI.color = Color.white;
|
||
EditorGUILayout.HelpBox(
|
||
string.Format("The key [{0}] is allready exist, Plese given a unique key!", newChlKey),
|
||
MessageType.Error);
|
||
GUI.color = Color.white;
|
||
}
|
||
}
|
||
|
||
string msgBoxMsg = "";
|
||
MessageType msgBoxType = MessageType.None;
|
||
OnClickCallback onClickCallbak;
|
||
|
||
void showMsgBox(string msg, MessageType type, OnClickCallback callbak = null)
|
||
{
|
||
msgBoxMsg = msg;
|
||
msgBoxType = type;
|
||
onClickCallbak = callbak;
|
||
isShowHelpBox = true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Inits the data.
|
||
/// 初始化数据
|
||
/// </summary>
|
||
void initData()
|
||
{
|
||
if (FileEx.FileExists(Application.dataPath + "/" + configFile))
|
||
{
|
||
byte[] buffer = FileEx.ReadAllBytes(Application.dataPath + "/" + configFile);
|
||
if (buffer.Length <= 0)
|
||
{
|
||
return;
|
||
}
|
||
MemoryStream ms = new MemoryStream();
|
||
ms.Write(buffer, 0, buffer.Length);
|
||
ms.Position = 0;
|
||
object obj = B2InputStream.readObject(ms);
|
||
if (obj != null)
|
||
{
|
||
channelData = (Hashtable)obj;
|
||
channelEnum = (ArrayList)(channelData["channelEnum"]);
|
||
channelEnum = channelEnum == null ? new ArrayList() : channelEnum;
|
||
|
||
channelKey = (ArrayList)(channelData["channelKey"]);
|
||
channelKey = channelKey == null ? new ArrayList() : channelKey;
|
||
if (channelEnum.Count > channelKey.Count)
|
||
{
|
||
for (int i = 0; i < channelEnum.Count; i++)
|
||
{
|
||
channelKey.Add("");
|
||
}
|
||
}
|
||
|
||
channelAliasEnum = (ArrayList)(channelData["channelAliasEnum"]);
|
||
channelAliasEnum = channelAliasEnum == null ? new ArrayList() : channelAliasEnum;
|
||
channelMap = (Hashtable)(channelData["channelMap"]);
|
||
channelMap = channelMap == null ? new Hashtable() : channelMap;
|
||
|
||
ArrayList delKeys = new ArrayList();
|
||
foreach (DictionaryEntry item in channelMap)
|
||
{
|
||
if (!channelKey.Contains(item.Key.ToString()))
|
||
{
|
||
delKeys.Add(item.Key.ToString());
|
||
}
|
||
}
|
||
|
||
for (int i = 0; i < delKeys.Count; i++)
|
||
{
|
||
channelMap.Remove(delKeys[i].ToString());
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
channelMap = new Hashtable();
|
||
channelEnum = new ArrayList();
|
||
}
|
||
}
|
||
|
||
void refreshData()
|
||
{
|
||
// isCanEdite = false;
|
||
// copyChlFromKey = "";
|
||
// newChlKey = "";
|
||
// newChlName = "";
|
||
// newChlAlias = "";
|
||
// isFinishInit = false;
|
||
// isFinishInit = false;
|
||
// isShowIcons = false;
|
||
// isShowCfgChlDesc = false;
|
||
// currChlIndex = -1;
|
||
// isComfireDelete = false;
|
||
// isShowHelpBox = false;
|
||
// scrollPos = Vector2.zero;
|
||
// scrollPos2 = Vector2.zero;
|
||
initData();
|
||
}
|
||
|
||
void saveData()
|
||
{
|
||
MemoryStream ms = new MemoryStream();
|
||
B2OutputStream.writeObject(ms, channelData);
|
||
FileEx.WriteAllBytes(Application.dataPath + "/" + configFile, ms.ToArray());
|
||
haveModifyChlCfg = false;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Channels the cell.
|
||
/// 渠道单元
|
||
/// </summary>
|
||
void channelCell(string chlName, bool canEdit)
|
||
{
|
||
if (currChlData == null)
|
||
{
|
||
return;
|
||
}
|
||
int width = 200;
|
||
GUI.color = Color.white;
|
||
//Product Name
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Product Name", GUILayout.Width(width));
|
||
currChlData.mProductName = GUILayout.TextField(currChlData.mProductName);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//Platform ios or android
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Select Platform", GUILayout.Width(width));
|
||
currChlData.mPlatform = (ChlPlatform)EditorGUILayout.EnumPopup("", currChlData.mPlatform);
|
||
if (currChlData.mPlatform == ChlPlatform.ios)
|
||
{
|
||
currChlData.mCreateEclipseProject = false;
|
||
}
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
GUILayout.Label("Md5 of APK Sign Code", GUILayout.Width(width));
|
||
currChlData.md5SignCode = GUILayout.TextField(currChlData.md5SignCode);
|
||
}
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("use Unity IAP plugin", GUILayout.Width(width));
|
||
currChlData.isUseUnityIAP = GUILayout.Toggle(currChlData.isUseUnityIAP, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
// app store
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Target Android Store", GUILayout.Width(width));
|
||
#if USE_UNITYIAP
|
||
currChlData.mTargetAndroidStore = (UnityEngine.Purchasing.AndroidStore)EditorGUILayout.EnumPopup ("", currChlData.mTargetAndroidStore);
|
||
#endif
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
|
||
//Default Icon
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUI.enabled = true;
|
||
if (GUILayout.Button("Icons"))
|
||
{
|
||
isShowIcons = !isShowIcons;
|
||
}
|
||
GUI.enabled = isCanEdite;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
if (isShowIcons)
|
||
{
|
||
using (new UnityEditorHelper.HighlightBox(Color.gray))
|
||
{
|
||
string[] iconsName = { };
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
iconsName = AndroidIconsName;
|
||
}
|
||
else if (currChlData.mPlatform == ChlPlatform.ios)
|
||
{
|
||
iconsName = IosIconsName;
|
||
} else if(currChlData.mPlatform == ChlPlatform.standaloneWIN || currChlData.mPlatform == ChlPlatform.StandaloneOSX) {
|
||
iconsName = standandsIconsName;
|
||
}
|
||
|
||
for (int i = 0; i < iconsName.Length; i++)
|
||
{
|
||
currChlData.mDefaultIcon[iconsName[i]] =
|
||
EditorGUILayout.ObjectField(iconsName[i],
|
||
(Texture2D)(currChlData.mDefaultIcon[iconsName[i]]),
|
||
typeof(Texture2D), false) as Texture2D;
|
||
}
|
||
}
|
||
}
|
||
//Splash Image
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
currChlData.mSplashImage = EditorGUILayout.ObjectField("Splash Image",
|
||
currChlData.mSplashImage,
|
||
typeof(Texture2D), false) as Texture2D;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//Bundle Indentifier
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Bundle Indentifier", GUILayout.Width(width));
|
||
currChlData.mBundleIndentifier = GUILayout.TextField(currChlData.mBundleIndentifier);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//Bundle Version
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Bundle Version", GUILayout.Width(width));
|
||
currChlData.mBundleVersion = GUILayout.TextField(currChlData.mBundleVersion);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//Bundle Version Code
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Bundle Version Code", GUILayout.Width(width));
|
||
currChlData.mBundleVersionCode = EditorGUILayout.IntField(currChlData.mBundleVersionCode);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//Scripting Define Symbols
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Scripting Define Symbols", GUILayout.Width(width));
|
||
GUILayout.Label(currChlData.mScriptingDefineSymbols);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Other Scripting Define Symbols", GUILayout.Width(width));
|
||
currChlData.mOtherScriptingDefineSymbols = GUILayout.TextField(currChlData.mOtherScriptingDefineSymbols);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
// SubChannel
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("SubChannel", GUILayout.Width(width));
|
||
currChlData.mSubChannel = EditorGUILayout.TextField(currChlData.mSubChannel);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("SubChannel2", GUILayout.Width(width));
|
||
currChlData.mCtccChannel = EditorGUILayout.TextField(currChlData.mCtccChannel);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("isThirdExit", GUILayout.Width(width));
|
||
currChlData.isThirdExit = GUILayout.Toggle(currChlData.isThirdExit, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("isMoreGame", GUILayout.Width(width));
|
||
currChlData.isMoreGame = GUILayout.Toggle(currChlData.isMoreGame, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("isSwitchAccount", GUILayout.Width(width));
|
||
currChlData.isSwitchAccount = GUILayout.Toggle(currChlData.isSwitchAccount, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUI.color = Color.yellow;
|
||
GUILayout.Label("isBuildWithLogView", GUILayout.Width(width));
|
||
currChlData.isBuildWithLogView = GUILayout.Toggle(currChlData.isBuildWithLogView, "");
|
||
GUI.color = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
// Create Eclipse Project
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Create Eclipse Project", GUILayout.Width(width));
|
||
currChlData.mCreateEclipseProject = GUILayout.Toggle(currChlData.mCreateEclipseProject, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
|
||
//Build Location
|
||
if (currChlData.mPlatform == ChlPlatform.ios ||
|
||
currChlData.mPlatform == ChlPlatform.webgl ||
|
||
currChlData.mCreateEclipseProject)
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Build Location", GUILayout.Width(width));
|
||
currChlData.mBuildLocation = GUILayout.TextField(currChlData.mBuildLocation);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
GUI.color = Color.yellow;
|
||
GUILayout.Label("***Build Location是相对于工程目录的路径,但是不包括“Assets/”目录!");
|
||
GUI.color = Color.white;
|
||
}
|
||
GUI.color = Color.white;
|
||
//copy files
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Folder Copy to Plugin", GUILayout.Width(width));
|
||
GUI.color = Color.yellow;
|
||
GUILayout.Label("Note: copy to [Assets/Plugins/Android/] or [Assets/Plugins/iOS/]");
|
||
GUI.color = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
for (int i = 0; i < currChlData.mCopyDirPaths.Count; i++)
|
||
{
|
||
Hashtable m = currChlData.mCopyDirPaths[i] as Hashtable;
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("", GUILayout.Width(width));
|
||
//dir:copy路径, unZip:true
|
||
UnityEngine.Object obj = EditorGUILayout.ObjectField(getObjByPath(MapEx.getString(m, "dir")), typeof(UnityEngine.Object));
|
||
if (obj != getObjByPath(MapEx.getString(m, "dir")))
|
||
{
|
||
if (obj == null)
|
||
{
|
||
m["dir"] = "";
|
||
}
|
||
else
|
||
{
|
||
m["dir"] = AssetDatabase.GetAssetPath(obj.GetInstanceID());
|
||
}
|
||
}
|
||
m["unZip"] = GUILayout.Toggle(MapEx.getBool(m, "unZip"), "And UnZip the Zip files");
|
||
currChlData.mCopyDirPaths[i] = m;
|
||
if (GUILayout.Button("-", GUILayout.Width(50)))
|
||
{
|
||
if (EditorUtility.DisplayDialog("Alert", "Really want to remove it?", "Okay", "Cancel"))
|
||
{
|
||
currChlData.mCopyDirPaths.RemoveAt(i);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("", GUILayout.Width(width));
|
||
//dir:copy路径, unZip:true
|
||
tmpCopyFolder2PluginObj = EditorGUILayout.ObjectField(tmpCopyFolder2PluginObj, typeof(UnityEngine.Object));
|
||
tmpCopyFolder2PluginUnZip = GUILayout.Toggle(tmpCopyFolder2PluginUnZip, "And UnZip the Zip files");
|
||
if (GUILayout.Button("+", GUILayout.Width(50)))
|
||
{
|
||
if (tmpCopyFolder2PluginObj != null)
|
||
{
|
||
Hashtable m = new Hashtable();
|
||
m["dir"] = AssetDatabase.GetAssetPath(tmpCopyFolder2PluginObj.GetInstanceID());
|
||
m["unZip"] = tmpCopyFolder2PluginUnZip;
|
||
currChlData.mCopyDirPaths.Add(m);
|
||
tmpCopyFolder2PluginObj = null;
|
||
tmpCopyFolder2PluginUnZip = false;
|
||
}
|
||
}
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
|
||
// GUILayout.BeginHorizontal ();
|
||
// {
|
||
// GUILayout.Label ("Special Folder Copy to Plugin", GUILayout.Width (width));
|
||
// currChlData.mSpecialCopyDir = EditorGUILayout.ObjectField (currChlData.mSpecialCopyDir, typeof(UnityEngine.Object));
|
||
// }
|
||
// GUILayout.EndHorizontal ();
|
||
|
||
GUI.color = Color.white;
|
||
//server
|
||
ECLEditorUtl.BeginContents();
|
||
{
|
||
GUILayout.Label("Server settings", GUILayout.Width(width));
|
||
List<string> toolbarNames = new List<string>();
|
||
for (int i = 0; i < ECLProjectManager.data.hotUpgradeServers.Count; i++)
|
||
{
|
||
HotUpgradeServerInfor dd = ECLProjectManager.data.hotUpgradeServers[i] as HotUpgradeServerInfor;
|
||
toolbarNames.Add(dd.name);
|
||
}
|
||
currChlData.serverIndex = GUILayout.Toolbar(currChlData.serverIndex, toolbarNames.ToArray());
|
||
if (ECLProjectManager.data.hotUpgradeServers.Count > 0)
|
||
{
|
||
HotUpgradeServerInfor selectedServer = ECLProjectManager.data.hotUpgradeServers[currChlData.serverIndex] as HotUpgradeServerInfor;
|
||
currChlData.serverKey = selectedServer.key;
|
||
|
||
//===================================================
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Host 4 entry:", GUILayout.Width(width));
|
||
GUILayout.TextField(selectedServer.host4Entry);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//===================================================
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Port 4 entry:", GUILayout.Width(width));
|
||
GUILayout.TextField(selectedServer.port4Entry.ToString());
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
//===================================================
|
||
}
|
||
}
|
||
ECLEditorUtl.EndContents();
|
||
|
||
//publishing settings
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
GUILayout.Label("Publishing settings", GUILayout.Width(width));
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Use Keystore", GUILayout.Width(width));
|
||
currChlData.mLicenseVerification = GUILayout.Toggle(currChlData.mLicenseVerification, "");
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
if (currChlData.mLicenseVerification)
|
||
{
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Keystore", GUILayout.Width(width));
|
||
currChlData.mKeystoreName = EditorGUILayout.ObjectField(currChlData.mKeystoreName, typeof(UnityEngine.Object));
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Keystore Pass", GUILayout.Width(width));
|
||
currChlData.mKeystorePass = EditorGUILayout.TextField(currChlData.mKeystorePass);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Keyalias Name", GUILayout.Width(width));
|
||
currChlData.mKeyaliasName = EditorGUILayout.TextField(currChlData.mKeyaliasName);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUILayout.Label("Keyalias Pass", GUILayout.Width(width));
|
||
currChlData.mKeyaliasPass = EditorGUILayout.TextField(currChlData.mKeyaliasPass);
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
}
|
||
//Be careful
|
||
GUILayout.BeginHorizontal();
|
||
{
|
||
GUI.color = Color.red;
|
||
GUILayout.Label("Special Instructions", GUILayout.Width(width));
|
||
GUI.color = Color.white;
|
||
GUI.contentColor = Color.yellow;
|
||
currChlData.mAlertDesc = GUILayout.TextArea(currChlData.mAlertDesc, GUILayout.Height(50f));
|
||
GUI.contentColor = Color.white;
|
||
}
|
||
GUILayout.EndHorizontal();
|
||
}
|
||
|
||
void getChlData(string chlKey, string chlID)
|
||
{
|
||
currChlData = new ChlData();
|
||
if (channelMap == null)
|
||
{
|
||
return;
|
||
}
|
||
object tmpData = channelMap[chlKey];
|
||
currChlData = tmpData == null ? new ChlData() : ChlData.parse((Hashtable)tmpData);
|
||
currChlData.mChlName = chlID;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Saves the chl build setting.
|
||
/// 保存渠道打包设置
|
||
/// </summary>
|
||
void saveChlBuildSetting()
|
||
{
|
||
if (currChlData == null)
|
||
{
|
||
return;
|
||
}
|
||
currChlData.refreshData();
|
||
if (channelMap == null)
|
||
{
|
||
channelMap = new Hashtable();
|
||
}
|
||
channelMap[currChlKey] = currChlData.toMap();
|
||
channelData["channelKey"] = channelKey;
|
||
channelData["channelMap"] = channelMap;
|
||
channelData["channelAliasEnum"] = channelAliasEnum;
|
||
saveData();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Cleans the chl setting.
|
||
/// 清空渠道打包设置
|
||
/// </summary>
|
||
/// <param name='chlName'>
|
||
/// Chl name.
|
||
/// </param>
|
||
void cleanChlSetting(string chlName, string chlID)
|
||
{
|
||
channelMap[chlName] = null;
|
||
channelData["channelKey"] = channelKey;
|
||
channelData["channelMap"] = channelMap;
|
||
channelData["channelAliasEnum"] = channelAliasEnum;
|
||
saveData();
|
||
getChlData(chlName, chlID);
|
||
}
|
||
|
||
void chgChl4Edit()
|
||
{
|
||
resetScriptingDefineSymbols();
|
||
|
||
applyIcons();
|
||
}
|
||
|
||
void applyIcons()
|
||
{
|
||
/*
|
||
* Most platforms support viewing icons in multiple sizes so Unity lets
|
||
* you specify multiple icon textures for each platform. The list will only
|
||
* be assigned if it has the same length as the list of icon sizes returned
|
||
* by GetIconSizesForTargetGroup and if the specified platform is supported in this editor.
|
||
*/
|
||
List<Texture2D> icons = new List<Texture2D>();
|
||
// int[] iconSize = PlayerSettings.GetIconSizesForTargetGroup(currChlData.buildTargetGroup);
|
||
// Debug.Log("iconSize==" + iconSize.Length);
|
||
// for (int i = 0; i< iconSize.Length; i++) {
|
||
// }
|
||
|
||
string[] iconNames = null;
|
||
if (currChlData.buildTarget == BuildTarget.Android)
|
||
{
|
||
iconNames = AndroidIconsName;
|
||
#if USE_UNITYIAP
|
||
UnityPurchasingEditor.TargetAndroidStore (currChlData.mTargetAndroidStore);
|
||
#endif
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
}
|
||
else if (currChlData.buildTarget == BuildTarget.iOS)
|
||
{
|
||
#else
|
||
} else if (currChlData.buildTarget == BuildTarget.iPhone) {
|
||
#endif
|
||
|
||
iconNames = IosIconsName;
|
||
}
|
||
else if (currChlData.mPlatform == ChlPlatform.standaloneWIN || currChlData.mPlatform == ChlPlatform.StandaloneOSX)
|
||
{
|
||
iconNames = standandsIconsName;
|
||
}
|
||
|
||
if (CLCfgBase.self != null)
|
||
{
|
||
CLCfgBase.self.singinMd5Code = currChlData.md5SignCode;
|
||
}
|
||
|
||
for (int i = 0; iconNames != null && i < iconNames.Length; i++)
|
||
{
|
||
icons.Add((Texture2D)(currChlData.mDefaultIcon[iconNames[i]]));
|
||
}
|
||
PlayerSettings.SetIconsForTargetGroup(currChlData.buildTargetGroup, icons.ToArray());
|
||
}
|
||
|
||
void resetScriptingDefineSymbols()
|
||
{
|
||
string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(currChlData.buildTargetGroup);
|
||
if (!string.IsNullOrEmpty(symbols))
|
||
{
|
||
string[] symbolsList = symbols.Split(';');
|
||
for (int i = 0; i < symbolsList.Length; i++)
|
||
{
|
||
if (symbolsList[i].StartsWith("CHL_"))
|
||
{
|
||
symbolsList[i] = "";
|
||
}
|
||
else if (symbolsList[i].StartsWith("USE_UNITYIAP"))
|
||
{
|
||
symbolsList[i] = "";
|
||
}
|
||
}
|
||
symbols = "";
|
||
for (int i = 0; i < symbolsList.Length; i++)
|
||
{
|
||
if (!string.IsNullOrEmpty(symbolsList[i]))
|
||
{
|
||
symbols += symbolsList[i] + ";";
|
||
}
|
||
}
|
||
}
|
||
symbols += (";" + currChlData.mScriptingDefineSymbols);
|
||
if (currChlData.isUseUnityIAP)
|
||
{
|
||
symbols += (";USE_UNITYIAP");
|
||
}
|
||
if(!string.IsNullOrEmpty(currChlData.mOtherScriptingDefineSymbols))
|
||
{
|
||
symbols += (";" + currChlData.mOtherScriptingDefineSymbols);
|
||
}
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(currChlData.buildTargetGroup, symbols);
|
||
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, symbols);
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, symbols);
|
||
#else
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.iPhone, symbols);
|
||
#endif
|
||
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, symbols);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Applies the setting.
|
||
/// 应用渠道设置
|
||
/// </summary>
|
||
void applySetting()
|
||
{
|
||
if (currChlData == null)
|
||
{
|
||
return;
|
||
}
|
||
PlayerSettings.productName = currChlData.mProductName;
|
||
//Icons
|
||
applyIcons();
|
||
|
||
//Splash imgae
|
||
PlayerSettings.resolutionDialogBanner = currChlData.mSplashImage;
|
||
//indentifier & version
|
||
|
||
#if UNITY_5_6_OR_NEWER
|
||
PlayerSettings.applicationIdentifier = currChlData.mBundleIndentifier;
|
||
PlayerSettings.SetApplicationIdentifier(currChlData.buildTargetGroup, currChlData.mBundleIndentifier);
|
||
#else
|
||
PlayerSettings.bundleIdentifier = currChlData.mBundleIndentifier;
|
||
#endif
|
||
PlayerSettings.bundleVersion = currChlData.mBundleVersion;
|
||
// modifyCfgFile();
|
||
if (currChlData.buildTargetGroup == BuildTargetGroup.Android)
|
||
{
|
||
PlayerSettings.Android.bundleVersionCode = currChlData.mBundleVersionCode;
|
||
} else if (currChlData.buildTargetGroup == BuildTargetGroup.iOS)
|
||
{
|
||
PlayerSettings.iOS.buildNumber = currChlData.mBundleVersionCode + "";
|
||
}
|
||
|
||
resetScriptingDefineSymbols();
|
||
|
||
// subchannel
|
||
string chlCfgPath = Application.streamingAssetsPath + "/chnCfg.json";
|
||
Hashtable chlMap = null;
|
||
if (File.Exists(chlCfgPath))
|
||
{
|
||
chlMap = JSON.DecodeMap(File.ReadAllText(chlCfgPath));
|
||
}
|
||
else
|
||
{
|
||
chlMap = new Hashtable();
|
||
}
|
||
chlMap["SubChannel"] = currChlData.mSubChannel;
|
||
chlMap["SubChannel2"] = currChlData.mCtccChannel;
|
||
chlMap["chn"] = currChlData.mChlName;
|
||
chlMap["isThirdExit"] = currChlData.isThirdExit;
|
||
chlMap["isMoreGame"] = currChlData.isMoreGame;
|
||
chlMap["IsSwitchAccount"] = currChlData.isSwitchAccount;
|
||
File.WriteAllText(chlCfgPath, JSON.JsonEncode(chlMap));
|
||
|
||
// copy files
|
||
if (currChlData.mCopyDirPaths != null)
|
||
{
|
||
Hashtable m = null;
|
||
for (int i = 0; i < currChlData.mCopyDirPaths.Count; i++)
|
||
{
|
||
m = currChlData.mCopyDirPaths[i] as Hashtable;
|
||
copyFilesToPlugin(MapEx.getString(m, "dir"), MapEx.getBool(m, "unZip"));
|
||
}
|
||
}
|
||
// special copy
|
||
// if (currChlData.mSpecialCopyDir != null) {
|
||
// copyFilesToPlugin (currChlData.mSpecialCopyDirPath);
|
||
// }
|
||
|
||
//
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
//PlayerSettings.Android.useCustomKeystore = currChlData.mLicenseVerification;
|
||
if (currChlData.mLicenseVerification)
|
||
{
|
||
PlayerSettings.Android.keystoreName = currChlData.mKeystoreNamePath;
|
||
PlayerSettings.Android.keystorePass = currChlData.mKeystorePass;
|
||
PlayerSettings.Android.keyaliasName = currChlData.mKeyaliasName;
|
||
PlayerSettings.Android.keyaliasPass = currChlData.mKeyaliasPass;
|
||
}
|
||
else
|
||
{
|
||
PlayerSettings.Android.keystoreName = "";
|
||
PlayerSettings.Android.keystorePass = "";
|
||
PlayerSettings.Android.keyaliasName = "";
|
||
PlayerSettings.Android.keyaliasPass = "";
|
||
}
|
||
}
|
||
|
||
if (currChlData.isBuildWithLogView && ReporterMessageReceiver.self == null)
|
||
{
|
||
ReporterEditor.CreateReporter();
|
||
ReporterModificationProcessor.BuildInfo.addUpdateDelegate();
|
||
}
|
||
if (ECLProjectManager.data.hotUpgradeServers != null &&
|
||
ECLProjectManager.data.hotUpgradeServers.Count > 0)
|
||
{
|
||
HotUpgradeServerInfor serverInfor = ECLProjectManager.data.hotUpgradeServers[currChlData.serverIndex] as HotUpgradeServerInfor;
|
||
CLVerManager.self.baseUrl = serverInfor.hotUpgradeBaseUrl;
|
||
#if !UNITY_WEBGL
|
||
//Net.self.host4Publish = serverInfor.host4Entry;
|
||
//Net.self.gatePort = serverInfor.port4Entry;
|
||
#endif
|
||
}
|
||
}
|
||
|
||
[PostProcessBuildAttribute(1)]
|
||
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
|
||
{
|
||
if (buildTarget == BuildTarget.iOS)
|
||
{
|
||
// string projPath = PBXProject.GetPBXProjectPath(path);
|
||
// PBXProject proj = new PBXProject();
|
||
//
|
||
// proj.ReadFromString(File.ReadAllText(projPath));
|
||
// string target = proj.TargetGuidByName("Unity-iPhone");
|
||
//
|
||
// // システムのフレームワークを追加
|
||
// proj.AddFrameworkToProject(target, "AssetsLibrary.framework", false);
|
||
//
|
||
// // 自前のフレームワークを追加
|
||
// CopyAndReplaceDirectory("Assets/Lib/mylib.framework", Path.Combine(path, "Frameworks/mylib.framework"));
|
||
// proj.AddFileToBuild(target, proj.AddFile("Frameworks/mylib.framework", "Frameworks/mylib.framework", PBXSourceTree.Source));
|
||
//
|
||
// // ファイルを追加
|
||
// var fileName = "my_file.xml";
|
||
// var filePath = Path.Combine("Assets/Lib", fileName);
|
||
// File.Copy(filePath, Path.Combine(path, fileName));
|
||
// proj.AddFileToBuild(target, proj.AddFile(fileName, fileName, PBXSourceTree.Source));
|
||
//
|
||
// // Yosemiteでipaが書き出せないエラーに対応するための設定
|
||
// proj.SetBuildProperty(target, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist");
|
||
//
|
||
// // フレームワークの検索パスを設定・追加
|
||
// proj.SetBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(inherited)");
|
||
// proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks");
|
||
//
|
||
// // 書き出し
|
||
// File.WriteAllText(projPath, proj.WriteToString());
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Applies the and build.
|
||
/// 设置并编译
|
||
/// </summary>
|
||
void applyAndBuild()
|
||
{
|
||
if (currChlData == null)
|
||
{
|
||
return;
|
||
}
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
if (currChlData.buildTarget == BuildTarget.iOS)
|
||
{
|
||
#else
|
||
if (currChlData.buildTarget == BuildTarget.iPhone) {
|
||
#endif
|
||
if (string.IsNullOrEmpty(currChlData.mBuildLocation))
|
||
{
|
||
EditorUtility.DisplayDialog("Alert", "The BuildLocation is empty!", null);
|
||
return;
|
||
}
|
||
}
|
||
|
||
applySetting();
|
||
|
||
if (!File.Exists(GeneratorConfig.common_path + "XLuaGenAutoRegister.cs"))
|
||
{
|
||
if (!EditorUtility.DisplayDialog("Alert", "Code has not been genrated for Xlua!", "Generate Now", "Cancel"))
|
||
{
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
Generator.GenAll();
|
||
}
|
||
}
|
||
|
||
//如果平台不一样,先切到
|
||
if (EditorUserBuildSettings.activeBuildTarget != currChlData.buildTarget)
|
||
{
|
||
// EditorUserBuildSettings.SwitchActiveBuildTarget (currChlData.buildTarget);
|
||
EditorUtility.DisplayDialog("Alert", "The active build target is not the same with current build target!", null);
|
||
return;
|
||
}
|
||
|
||
if (currChlData.mCreateEclipseProject)
|
||
{
|
||
Debug.LogWarning("The channel need Create Eclipse Project!!");
|
||
showMsgBox("The channel need Create Eclipse Project!!", MessageType.Warning);
|
||
return;
|
||
}
|
||
|
||
AssetDatabase.Refresh();
|
||
|
||
string[] levels = null;
|
||
if (EditorSceneManager.sceneCount > 0)
|
||
{
|
||
levels = new string[EditorSceneManager.sceneCount];
|
||
for (int i = 0; i < EditorSceneManager.sceneCount; i++)
|
||
{
|
||
levels[i] = EditorSceneManager.GetSceneAt(i).path;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
levels = new string[1];
|
||
levels[0] = EditorSceneManager.GetActiveScene().path;
|
||
}
|
||
|
||
string locationName = currChlData.mPlatform.ToString() + "_" + currChlData.mChlName + "_" + currChlData.mBundleIndentifier + "_v" + currChlData.mBundleVersion + "_" + DateEx.format(DateEx.fmt_yyyy_MM_dd_HH_mm_ss_fname);
|
||
// string locationName = currChlData.mBundleIndentifier;
|
||
// locationName = locationName.Substring(locationName.LastIndexOf(".")+1);
|
||
// locationName += "_v" + currChlData.mBundleVersion + "_" + DateEx.format (DateEx.fmt_yyyy_MM_dd_HH_mm_ss_fname);
|
||
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
if (!currChlData.mCreateEclipseProject)
|
||
{
|
||
locationName += ".apk";
|
||
}
|
||
else
|
||
{
|
||
locationName = dataPath() + currChlData.mBuildLocation;
|
||
}
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
}
|
||
else if (currChlData.buildTarget == BuildTarget.iOS)
|
||
{
|
||
#else
|
||
} else if (currChlData.buildTarget == BuildTarget.iPhone) {
|
||
#endif
|
||
// EditorUserBuildSettings.appendProject = true;
|
||
locationName = dataPath() + currChlData.mBuildLocation;
|
||
}
|
||
else if (currChlData.buildTarget == BuildTarget.StandaloneWindows64)
|
||
{
|
||
locationName = currChlData.mProductName + ".exe";
|
||
}
|
||
else if (currChlData.buildTarget == BuildTarget.StandaloneOSX)
|
||
{
|
||
locationName = currChlData.mProductName + ".app";
|
||
} else if(currChlData.buildTarget == BuildTarget.WebGL)
|
||
{
|
||
locationName = dataPath() + currChlData.mBuildLocation;
|
||
}
|
||
bool needApend = true;
|
||
if (!string.IsNullOrEmpty(currChlData.mBuildLocation))
|
||
{
|
||
if (!Directory.Exists(locationName))
|
||
{
|
||
needApend = false;
|
||
Directory.CreateDirectory(locationName);
|
||
}
|
||
}
|
||
|
||
Debug.Log("Publish path:" + locationName);
|
||
|
||
if (Reporter.self != null)
|
||
{
|
||
Reporter.self.gameObject.SetActive(false);
|
||
}
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
if (currChlData.buildTarget == BuildTarget.iOS && needApend)
|
||
{
|
||
#else
|
||
if (currChlData.buildTarget == BuildTarget.iPhone && needApend) {
|
||
#endif
|
||
BuildPipeline.BuildPlayer(levels, locationName, currChlData.buildTarget, BuildOptions.AcceptExternalModificationsToPlayer);
|
||
}
|
||
else
|
||
{
|
||
BuildPipeline.BuildPlayer(levels, locationName, currChlData.buildTarget, BuildOptions.None);
|
||
}
|
||
|
||
if (Reporter.self != null)
|
||
{
|
||
SceneAsset.DestroyImmediate(Reporter.self.gameObject);
|
||
ReporterModificationProcessor.BuildInfo.rmUpdateDelegate();
|
||
}
|
||
|
||
string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(currChlData.buildTargetGroup);
|
||
symbols.Replace(";USE_UNITYIAP", "");
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(currChlData.buildTargetGroup, symbols);
|
||
}
|
||
|
||
// void modifyCfgFile()
|
||
// {
|
||
// if (string.IsNullOrEmpty(cfgFilePath)) {
|
||
// return;
|
||
// }
|
||
// string[] buffer = File.ReadAllLines(dataPath() + cfgFilePath);
|
||
// string line = "";
|
||
// bool finishModifyVer = false;
|
||
// bool finishModifyVerCoder = false;
|
||
// for (int i = 0; i < buffer.Length; i++) {
|
||
// line = buffer [i];
|
||
// if (line.IndexOf("public static string version") >= 0) {
|
||
// buffer [i] = " public static string version = \"" + currChlData.mBundleVersion + "\";";
|
||
// finishModifyVer = true;
|
||
// } else if (line.IndexOf("public static int versionCode") >= 0) {
|
||
// buffer [i] = " public static int versionCode = " + currChlData.mBundleVersionCode + ";";
|
||
// finishModifyVerCoder = true;
|
||
// }
|
||
// if (finishModifyVer && finishModifyVerCoder) {
|
||
// break;
|
||
// }
|
||
// }
|
||
// File.WriteAllLines(dataPath() + cfgFilePath, buffer);
|
||
// }
|
||
|
||
/// <summary>
|
||
/// Copies the files to plugin.
|
||
/// 把文件拷贝到Plugin目录
|
||
/// </summary>
|
||
void copyFilesToPlugin(string fromPath, bool unZip)
|
||
{
|
||
string toPath = "";
|
||
if (currChlData.mPlatform == ChlPlatform.android)
|
||
{
|
||
toPath = "Assets/Plugins/Android/";
|
||
}
|
||
else if (currChlData.mPlatform == ChlPlatform.ios)
|
||
{
|
||
toPath = "Assets/Plugins/iOS/";
|
||
}
|
||
Debug.Log(dataPath());
|
||
doCopyFiles(dataPath() + fromPath, dataPath() + toPath, unZip);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Datas the path.
|
||
/// 取得工程路径,不带"/Assets/"
|
||
/// </summary>
|
||
/// <returns>
|
||
/// The path.
|
||
/// </returns>
|
||
string dataPath()
|
||
{
|
||
string tmpPath = Application.dataPath + "/";
|
||
return tmpPath.Replace("/Assets/", "/");
|
||
}
|
||
|
||
void doCopyFiles(string fromPath, string toPath, bool unZip)
|
||
{
|
||
string[] fileEntries = Directory.GetFiles(fromPath);
|
||
string extension = "";
|
||
string fileName = "";
|
||
foreach (string filePath in fileEntries)
|
||
{
|
||
extension = Path.GetExtension(filePath);
|
||
if (ECLEditorUtl.isIgnoreFile(filePath))
|
||
{
|
||
continue;
|
||
}
|
||
fileName = Path.GetFileName(filePath);
|
||
if (unZip && extension.ToLower() == ".zip")
|
||
{
|
||
ZipEx.UnZip(filePath, toPath, 4096);
|
||
}
|
||
else
|
||
{
|
||
if (File.Exists(toPath + fileName))
|
||
{
|
||
File.Delete(toPath + fileName);
|
||
}
|
||
File.Copy(filePath, toPath + fileName);
|
||
}
|
||
}
|
||
string[] dirEntries = Directory.GetDirectories(fromPath);
|
||
string dirName = "";
|
||
string newToPath = "";
|
||
foreach (string dir in dirEntries)
|
||
{
|
||
dirName = Path.GetFileName(dir);
|
||
newToPath = toPath + dirName + "/";
|
||
if (!Directory.Exists(newToPath))
|
||
{
|
||
Directory.CreateDirectory(newToPath);
|
||
}
|
||
doCopyFiles(dir, newToPath, unZip);
|
||
}
|
||
}
|
||
|
||
static Hashtable __objsMap = new Hashtable();
|
||
|
||
public static UnityEngine.Object getObjByPath(string path)
|
||
{
|
||
UnityEngine.Object obj = __objsMap[path] as UnityEngine.Object;
|
||
if (obj == null)
|
||
{
|
||
if (!string.IsNullOrEmpty(path))
|
||
{
|
||
obj = AssetDatabase.LoadAssetAtPath(
|
||
path,
|
||
typeof(UnityEngine.Object));
|
||
}
|
||
}
|
||
__objsMap[path] = obj;
|
||
return obj;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// Chl platform.
|
||
/// 平台
|
||
/// </summary>
|
||
public enum ChlPlatform
|
||
{
|
||
android,
|
||
ios,
|
||
standaloneWIN,
|
||
StandaloneOSX,
|
||
webgl,
|
||
}
|
||
|
||
/// <summary>
|
||
/// Chl data.
|
||
/// 渠道数据
|
||
/// </summary>
|
||
public class ChlData
|
||
{
|
||
public string mChlName = "";
|
||
public string mProductName = "";
|
||
public ChlPlatform mPlatform = ChlPlatform.android;
|
||
public bool isUseUnityIAP = false;
|
||
#if USE_UNITYIAP
|
||
public UnityEngine.Purchasing.AndroidStore mTargetAndroidStore = UnityEngine.Purchasing.AndroidStore.GooglePlay;
|
||
#endif
|
||
|
||
public BuildTargetGroup buildTargetGroup
|
||
{
|
||
get
|
||
{
|
||
switch (mPlatform)
|
||
{
|
||
case ChlPlatform.android:
|
||
return BuildTargetGroup.Android;
|
||
case ChlPlatform.ios:
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
return BuildTargetGroup.iOS;
|
||
#else
|
||
return BuildTargetGroup.iPhone;
|
||
#endif
|
||
case ChlPlatform.standaloneWIN:
|
||
case ChlPlatform.StandaloneOSX:
|
||
return BuildTargetGroup.Standalone;
|
||
case ChlPlatform.webgl:
|
||
return BuildTargetGroup.WebGL;
|
||
}
|
||
return BuildTargetGroup.Android;
|
||
}
|
||
}
|
||
|
||
public BuildTarget buildTarget
|
||
{
|
||
get
|
||
{
|
||
switch (mPlatform)
|
||
{
|
||
case ChlPlatform.android:
|
||
return BuildTarget.Android;
|
||
case ChlPlatform.ios:
|
||
#if UNITY_5 || UNITY_5_3_OR_NEWER
|
||
return BuildTarget.iOS;
|
||
#else
|
||
return BuildTarget.iPhone;
|
||
#endif
|
||
case ChlPlatform.standaloneWIN:
|
||
return BuildTarget.StandaloneWindows64;
|
||
case ChlPlatform.StandaloneOSX:
|
||
return BuildTarget.StandaloneOSX;
|
||
case ChlPlatform.webgl:
|
||
return BuildTarget.WebGL;
|
||
}
|
||
return BuildTarget.StandaloneWindows64;
|
||
}
|
||
}
|
||
|
||
// public BuildTarget
|
||
|
||
Hashtable _DefaultIcon;
|
||
//Texture2D
|
||
Texture2D _SplashImage;
|
||
|
||
public Hashtable mDefaultIcon
|
||
{
|
||
get
|
||
{
|
||
if (_DefaultIcon == null && mDefaultIconPath != null)
|
||
{
|
||
_DefaultIcon = new Hashtable();
|
||
foreach (DictionaryEntry cell in mDefaultIconPath)
|
||
{
|
||
string iconPath = cell.Value.ToString();
|
||
_DefaultIcon[cell.Key] = (Texture2D)(AssetDatabase.LoadAssetAtPath("Assets/" + iconPath, typeof(Texture2D)));
|
||
}
|
||
}
|
||
if (_DefaultIcon == null)
|
||
{
|
||
_DefaultIcon = new Hashtable();
|
||
}
|
||
return _DefaultIcon;
|
||
}
|
||
}
|
||
|
||
public Texture2D mSplashImage
|
||
{
|
||
get
|
||
{
|
||
if (_SplashImage == null && !string.IsNullOrEmpty(mSplashImagePath))
|
||
{
|
||
_SplashImage = (Texture2D)(AssetDatabase.LoadAssetAtPath("Assets/" + mSplashImagePath, typeof(Texture2D)));
|
||
|
||
}
|
||
return _SplashImage;
|
||
}
|
||
set
|
||
{
|
||
_SplashImage = value;
|
||
if (value == null)
|
||
{
|
||
mSplashImagePath = "";
|
||
}
|
||
}
|
||
}
|
||
|
||
public Hashtable mDefaultIconPath = new Hashtable();
|
||
public string mSplashImagePath;
|
||
public string mBundleIndentifier = "";
|
||
public string mBundleVersion = "";
|
||
public int mBundleVersionCode;
|
||
public bool mCreateEclipseProject = false;
|
||
public bool isBuildWithLogView = false;
|
||
public string mBuildLocation = "iosBuild";
|
||
|
||
public string mScriptingDefineSymbols
|
||
{
|
||
get
|
||
{
|
||
return "CHL_" + mChlName.ToUpper();
|
||
}
|
||
}
|
||
public string mOtherScriptingDefineSymbols = "";
|
||
|
||
public string mSubChannel = "";
|
||
public string mCtccChannel = "";
|
||
public bool isThirdExit = false;
|
||
public bool isMoreGame = false;
|
||
public bool isSwitchAccount = false;
|
||
public string mAlertDesc = "";
|
||
public ArrayList mCopyDirPaths = new ArrayList();
|
||
public bool mLicenseVerification;
|
||
public string mKeystoreNamePath = "";
|
||
UnityEngine.Object _KeystoreName;
|
||
|
||
public UnityEngine.Object mKeystoreName
|
||
{
|
||
get
|
||
{
|
||
if (_KeystoreName == null)
|
||
{
|
||
if (!string.IsNullOrEmpty(mKeystoreNamePath))
|
||
{
|
||
_KeystoreName = AssetDatabase.LoadAssetAtPath(
|
||
mKeystoreNamePath,
|
||
typeof(UnityEngine.Object));
|
||
}
|
||
}
|
||
return _KeystoreName;
|
||
}
|
||
set
|
||
{
|
||
_KeystoreName = value;
|
||
if (value == null)
|
||
{
|
||
mKeystoreNamePath = "";
|
||
}
|
||
else
|
||
{
|
||
mKeystoreNamePath = AssetDatabase.GetAssetPath(_KeystoreName.GetInstanceID());
|
||
}
|
||
}
|
||
}
|
||
|
||
public string mKeystorePass;
|
||
public string mKeyaliasName;
|
||
public string mKeyaliasPass;
|
||
public string md5SignCode = "";
|
||
|
||
public string serverKey = "";
|
||
public int serverIndex = 0;
|
||
|
||
public Hashtable toMap()
|
||
{
|
||
Hashtable r = new Hashtable();
|
||
r["mChlNmae"] = mChlName;
|
||
r["mProductName"] = mProductName;
|
||
r["mPlatform"] = mPlatform.ToString();
|
||
r["isUseUnityIAP"] = isUseUnityIAP;
|
||
#if USE_UNITYIAP
|
||
r ["mTargetAndroidStore"] = (int)mTargetAndroidStore; //UnityEngine.Purchasing.AndroidStore
|
||
#endif
|
||
r["mDefaultIconPath"] = mDefaultIconPath;
|
||
r["mSplashImagePath"] = mSplashImagePath;
|
||
r["mBundleIndentifier"] = mBundleIndentifier;
|
||
r["mBundleVersion"] = mBundleVersion;
|
||
r["mBundleVersionCode"] = mBundleVersionCode;
|
||
r["mCreateEclipseProject"] = mCreateEclipseProject;
|
||
r["mBuildLocation"] = mBuildLocation;
|
||
r["mOtherScriptingDefineSymbols"] = mOtherScriptingDefineSymbols;
|
||
r["mAlertDesc"] = mAlertDesc;
|
||
r["mCopyDirPaths"] = mCopyDirPaths;
|
||
// r ["mSpecialCopyDir"] = mSpecialCopyDirPath;
|
||
// r ["mUnZip"] = mUnZip;
|
||
r["mSubChannel"] = mSubChannel;
|
||
r["mCtccChannel"] = mCtccChannel;
|
||
|
||
r["mLicenseVerification"] = mLicenseVerification;
|
||
r["mKeystoreNamePath"] = mKeystoreNamePath;
|
||
r["mKeystorePass"] = mKeystorePass;
|
||
r["mKeyaliasName"] = mKeyaliasName;
|
||
r["mKeyaliasPass"] = mKeyaliasPass;
|
||
|
||
r["isThirdExit"] = isThirdExit;
|
||
r["isMoreGame"] = isMoreGame;
|
||
r["isSwitchAccount"] = isSwitchAccount;
|
||
r["isBuildWithLogView"] = isBuildWithLogView;
|
||
r["md5SignCode"] = md5SignCode;
|
||
r["serverKey"] = serverKey;
|
||
return r;
|
||
}
|
||
|
||
public void refreshData()
|
||
{
|
||
if (_DefaultIcon != null)
|
||
{
|
||
foreach (DictionaryEntry cell in _DefaultIcon)
|
||
{
|
||
Texture2D icon = cell.Value == null ? null : (Texture2D)(cell.Value);
|
||
if (icon == null)
|
||
continue;
|
||
string tmpPath = AssetDatabase.GetAssetPath(icon.GetInstanceID());
|
||
int startPos = 0;
|
||
startPos = tmpPath.IndexOf("Assets/");
|
||
startPos += 7;
|
||
tmpPath = tmpPath.Substring(startPos, tmpPath.Length - startPos);
|
||
if (mDefaultIconPath == null)
|
||
{
|
||
mDefaultIconPath = new Hashtable();
|
||
}
|
||
mDefaultIconPath[cell.Key] = tmpPath;
|
||
}
|
||
}
|
||
if (_SplashImage != null)
|
||
{
|
||
string tmpPath = AssetDatabase.GetAssetPath(_SplashImage.GetInstanceID());
|
||
int startPos = 0;
|
||
startPos = tmpPath.IndexOf("Assets/");
|
||
startPos += 7;
|
||
tmpPath = tmpPath.Substring(startPos, tmpPath.Length - startPos);
|
||
mSplashImagePath = tmpPath;
|
||
}
|
||
}
|
||
|
||
public static ChlData parse(Hashtable map)
|
||
{
|
||
if (map == null)
|
||
{
|
||
return null;
|
||
}
|
||
ChlData r = new ChlData();
|
||
r.mChlName = MapEx.getString(map, "mChlNmae");
|
||
r.mProductName = MapEx.getString(map, "mProductName");
|
||
r.mDefaultIconPath = MapEx.getMap(map, "mDefaultIconPath");
|
||
r.mSplashImagePath = MapEx.getString(map, "mSplashImagePath");
|
||
r.mBundleIndentifier = MapEx.getString(map, "mBundleIndentifier");
|
||
r.mBundleVersion = MapEx.getString(map, "mBundleVersion");
|
||
r.mBundleVersionCode = MapEx.getInt(map, "mBundleVersionCode");
|
||
string platform = MapEx.getString(map, "mPlatform");
|
||
switch (platform)
|
||
{
|
||
case "android":
|
||
r.mPlatform = ChlPlatform.android;
|
||
break;
|
||
case "ios":
|
||
r.mPlatform = ChlPlatform.ios;
|
||
break;
|
||
case "standaloneWIN":
|
||
r.mPlatform = ChlPlatform.standaloneWIN;
|
||
break;
|
||
case "StandaloneOSX":
|
||
r.mPlatform = ChlPlatform.StandaloneOSX;
|
||
break;
|
||
case "webgl":
|
||
r.mPlatform = ChlPlatform.webgl;
|
||
break;
|
||
}
|
||
r.isUseUnityIAP = MapEx.getBool(map, "isUseUnityIAP");
|
||
#if USE_UNITYIAP
|
||
r.mTargetAndroidStore = (UnityEngine.Purchasing.AndroidStore)(Enum.ToObject (typeof(UnityEngine.Purchasing.AndroidStore), MapEx.getInt (map, "mTargetAndroidStore")));
|
||
#endif
|
||
r.mCreateEclipseProject = MapEx.getBool(map, "mCreateEclipseProject");
|
||
r.mBuildLocation = MapEx.getString(map, "mBuildLocation");
|
||
r.mOtherScriptingDefineSymbols = MapEx.getString(map, "mOtherScriptingDefineSymbols");
|
||
r.mAlertDesc = MapEx.getString(map, "mAlertDesc");
|
||
r.mAlertDesc = r.mAlertDesc == null ? "" : r.mAlertDesc;
|
||
r.mCopyDirPaths = MapEx.getList(map, "mCopyDirPaths");
|
||
// r.mSpecialCopyDirPath = MapEx.getString (map, "mSpecialCopyDir");
|
||
// r.mUnZip = MapEx.getBool (map, "mUnZip");
|
||
r.mLicenseVerification = MapEx.getBool(map, "mLicenseVerification");
|
||
r.mKeystoreNamePath = MapEx.getString(map, "mKeystoreNamePath");
|
||
r.mKeystorePass = MapEx.getString(map, "mKeystorePass");
|
||
r.mKeyaliasName = MapEx.getString(map, "mKeyaliasName");
|
||
r.mKeyaliasPass = MapEx.getString(map, "mKeyaliasPass");
|
||
r.mSubChannel = MapEx.getString(map, "mSubChannel");
|
||
r.mCtccChannel = MapEx.getString(map, "mCtccChannel");
|
||
r.isThirdExit = MapEx.getBool(map, "isThirdExit");
|
||
r.isMoreGame = MapEx.getBool(map, "isMoreGame");
|
||
r.isSwitchAccount = MapEx.getBool(map, "isSwitchAccount");
|
||
r.isBuildWithLogView = MapEx.getBool(map, "isBuildWithLogView");
|
||
r.md5SignCode = MapEx.getString(map, "md5SignCode");
|
||
r.serverKey = MapEx.getString(map, "serverKey");
|
||
r.serverIndex = getServerIndex(r.serverKey);
|
||
return r;
|
||
}
|
||
|
||
static int getServerIndex(string serverKey)
|
||
{
|
||
for (int i = 0; i < ECLProjectManager.data.hotUpgradeServers.Count; i++)
|
||
{
|
||
HotUpgradeServerInfor dd = ECLProjectManager.data.hotUpgradeServers[i] as HotUpgradeServerInfor;
|
||
if (dd.key.Equals(serverKey))
|
||
{
|
||
return i;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
}
|