コード例 #1
0
    public void OpenWindow(Dictionary <int, ActionFileData> conflictData)
    {
        // State
        titleStyle                  = new GUIStyle();
        titleStyle.fontSize         = 20;
        titleStyle.normal.textColor = Color.white;
        m_Instance.minSize          = new Vector2(WINDOW_MIN_WIDTH, WINDOW_MIN_HIEGHT);
        // Remote Data
        m_mapRemoteData = conflictData;
        m_mapCheckInfo  = new Dictionary <int, bool>();
        foreach (int key in m_mapRemoteData.Keys)
        {
            m_mapCheckInfo.Add(key, false);
        }
        // Local Data
        m_mapLocalData = new Dictionary <int, ActionFileData>();
        ActionFileDataArray filedatalist = ActionHelper.GetActionEditFileList();

        if (filedatalist != null && filedatalist.DataList != null)
        {
            foreach (ActionFileData value in filedatalist.DataList)
            {
                if (!m_mapLocalData.ContainsKey(value.ID) && m_mapRemoteData.ContainsKey(value.ID))
                {
                    m_mapLocalData.Add(value.ID, value);
                }
            }
        }
        Repaint();
    }
コード例 #2
0
    public static void DeleteActionEditFile(ActionFileDataArray filedatalist, ActionFileData fileData)
    {
        if (null == filedatalist)
        {
            filedatalist = new ActionFileDataArray();
        }

        if (null == filedatalist.DataList)
        {
            filedatalist.DataList = new List <ActionFileData>();
        }

        for (int i = 0; i < filedatalist.DataList.Count; ++i)
        {
            if (filedatalist.DataList[i].ID == fileData.ID)
            {
                filedatalist.DataList[i] = fileData;
                filedatalist.DataList.RemoveAt(i);
                break;
            }
        }

        byte[] data = ThriftSerialize.Serialize(filedatalist);
        FileUtils.WriteByteFile(GetActionFileDataPath(), data);
    }
コード例 #3
0
    public static ActionFileDataArray GetActionEditFileList()
    {
        ActionFileDataArray m_FileDataList = new ActionFileDataArray();

        ResourceManager.DecodePersonalDataTemplate(GetActionFileDataPath(), ref m_FileDataList);
        return(m_FileDataList);
    }
コード例 #4
0
    public static bool CombineActionEditFileList(ActionFileDataArray filedatalist)
    {
        Dictionary <int, ActionFileData> tmp;

        CombineActionEditFileList(filedatalist, out tmp);
        return(false);
    }
コード例 #5
0
    public static void SaveActionEditFileList(ActionFileDataArray filedatalist, ActionFileData fileData)
    {
        if (null == filedatalist)
        {
            filedatalist = new ActionFileDataArray();
        }

        if (null == filedatalist.DataList)
        {
            filedatalist.DataList = new List <ActionFileData>();
        }

        fileData.TimeStamp = GetTimeStamp();
        bool bIsNeedAddNew = true;

        for (int i = 0; i < filedatalist.DataList.Count; ++i)
        {
            if (filedatalist.DataList[i].ID == fileData.ID)
            {
                filedatalist.DataList[i] = fileData;
                bIsNeedAddNew            = false;
                break;
            }
        }
        if (bIsNeedAddNew)
        {
            filedatalist.DataList.Add(fileData);
        }

        byte[] data = ThriftSerialize.Serialize(filedatalist);
        FileUtils.WriteByteFile(GetActionFileDataPath(), data);
    }
コード例 #6
0
    // whether have conflict
    public static bool CombineActionEditFileList(ActionFileDataArray filedatalist, out Dictionary <int, ActionFileData> conflictDataMap)
    {
        // Get Local Data
        Dictionary <int, ActionFileData> localDataMap = new Dictionary <int, ActionFileData>();

        // Conflict Value
        conflictDataMap = new Dictionary <int, ActionFileData>();
        if (filedatalist != null && filedatalist.DataList != null)
        {
            foreach (ActionFileData value in filedatalist.DataList)
            {
                if (!localDataMap.ContainsKey(value.ID))
                {
                    localDataMap.Add(value.ID, value);
                }
                else
                {
                    Debug.LogWarning("本地Action ID 有冲突!");
                }
            }
        }
        // Get Remote Data
        ActionFileDataArray downloadData = ConfigManager.Instance.GetActionFileDataArray();

        if (downloadData != null && downloadData.DataList != null)
        {
            foreach (ActionFileData value in downloadData.DataList)
            {
                if (!localDataMap.ContainsKey(value.ID))
                {
                    localDataMap.Add(value.ID, value);
                }
                else
                {
                    if (CheckConflcit(localDataMap[value.ID], value))
                    {
                        conflictDataMap.Add(value.ID, value);
                    }
                }
            }
        }
        // Sycn Data to Local
        if (localDataMap.Count > 0)
        {
            filedatalist          = new ActionFileDataArray();
            filedatalist.DataList = new List <ActionFileData>(localDataMap.Values);
            filedatalist.DataList.Sort(SortFileByID);
            byte[] data = ThriftSerialize.Serialize(filedatalist);
            FileUtils.WriteByteFile(GetActionFileDataPath(), data);
        }
        // return
        if (conflictDataMap.Count > 0)
        {
            return(true);
        }
        return(false);
    }
コード例 #7
0
    public ActionFileDataArray GetActionFileDataArray()
    {
        ActionFileDataArray config = TryGetConfig <ActionFileDataArray>(ConfigPath_ActionConfig);

        if (config == null || config.DataList == null)
        {
            Debuger.LogWarning("can't find Action File DataArray");
        }
        return(config);
    }
コード例 #8
0
    private void OnReplaceFile()
    {
        var option = EditorUtility.DisplayDialog("警告!!!", "取代方案将彻底覆盖本地数据", "确定", "取消");

        if (option)
        {
            m_FileDataList = ActionHelper.GetActionEditFileList();
            ActionHelper.ReplaceEditFileList(m_FileDataList);
        }
    }
コード例 #9
0
    public static void BackupEditFileList(string path)
    {
        ActionFileDataArray filedatalist = ConfigManager.Instance.GetActionFileDataArray();

        if (filedatalist != null && filedatalist.DataList != null)
        {
            filedatalist.DataList.Sort(SortFileByID);
            byte[] data = ThriftSerialize.Serialize(filedatalist);
            FileUtils.WriteByteFile(path + "actionConfig_txtpkg.bytes", data);
        }
    }
コード例 #10
0
 public static void ReplaceEditFileList(ActionFileDataArray filedatalist)
 {
     filedatalist = ConfigManager.Instance.GetActionFileDataArray();
     if (filedatalist != null && filedatalist.DataList != null)
     {
         Debug.LogWarning("本地所有文件被掩盖");
         filedatalist.DataList.Sort(SortFileByID);
         byte[] data = ThriftSerialize.Serialize(filedatalist);
         FileUtils.WriteByteFile(GetActionFileDataPath(), data);
     }
 }
コード例 #11
0
    public static void SyncActionEditFileList(ActionFileDataArray filedatalist)
    {
        // Get Local Data
        Dictionary <int, ActionFileData> localDataMap = new Dictionary <int, ActionFileData>();

        if (filedatalist != null && filedatalist.DataList != null)
        {
            foreach (ActionFileData value in filedatalist.DataList)
            {
                if (!localDataMap.ContainsKey(value.ID))
                {
                    localDataMap.Add(value.ID, value);
                }
                else
                {
                    Debug.LogWarning("本地Action ID 有冲突!");
                }
            }
        }
        // Get Remote Data
        ActionFileDataArray downloadData = ConfigManager.Instance.GetActionFileDataArray();

        if (downloadData != null && downloadData.DataList != null)
        {
            foreach (ActionFileData value in downloadData.DataList)
            {
                if (!localDataMap.ContainsKey(value.ID))
                {
                    localDataMap.Add(value.ID, value);
                }
                else
                {
                    if (CheckConflcit(localDataMap[value.ID], value))
                    {
                        localDataMap.Remove(value.ID);
                        localDataMap.Add(value.ID, value);
                        Debug.LogWarning("远程的ActionFile与本地有冲突,本地文件已被覆盖!");
                    }
                }
            }
        }
        // Sycn Data to Local
        if (localDataMap.Count > 0)
        {
            filedatalist          = new ActionFileDataArray();
            filedatalist.DataList = new List <ActionFileData>(localDataMap.Values);
            filedatalist.DataList.Sort(SortFileByID);
            byte[] data = ThriftSerialize.Serialize(filedatalist);
            FileUtils.WriteByteFile(GetActionFileDataPath(), data);
        }
    }
コード例 #12
0
    private void OnSyncFile()
    {
        var option = EditorUtility.DisplayDialog("警告!!!", "同步方案将覆盖本地数据", "确定", "取消");

        if (option)
        {
            m_FileDataList = ActionHelper.GetActionEditFileList();
            if (m_FileData != null)
            {
                ActionHelper.SaveActionEditFileList(m_FileDataList, m_FileData);
            }
            ActionHelper.SyncActionEditFileList(m_FileDataList);
        }
    }
コード例 #13
0
    private void OnSave()
    {
        //Action Data
        if (m_FileData == null)
        {
            m_FileData = new ActionFileData();
        }
        m_FileData.ID         = m_CurrentEditiongMapId;
        m_FileData.Duration   = (double)m_fActionDuration;
        m_FileData.MapResName = m_CurrentMapName;
        m_FileData.FileName   = m_CurrentActionName;
        //m_FileData.FrameDatalist = ActionHelper.ConvertActionFrameData(m_KeyFrameData);

        m_FileDataList = ActionHelper.GetActionEditFileList();
        ActionHelper.SaveActionEditFileList(m_FileDataList, m_FileData);
        ActionHelper.CombineActionEditFileList(m_FileDataList);
        EditorUtility.DisplayDialog("保存成功", "保存成功", "确定");
    }
コード例 #14
0
    private void OnMergeFile()
    {
        m_FileDataList = ActionHelper.GetActionEditFileList();
        if (m_FileData != null)
        {
            ActionHelper.SaveActionEditFileList(m_FileDataList, m_FileData);
        }
        Dictionary <int, ActionFileData> conflictData;

        if (ActionHelper.CombineActionEditFileList(m_FileDataList, out conflictData))
        {
            Debug.LogWarning("<color=orange> Conflict Occurred !</color>");
            ConflictSolveWindow.Instance.OpenWindow(conflictData);
        }
        else
        {
            EditorUtility.DisplayDialog("合并成功", "合并成功", "确定");
        }
    }
コード例 #15
0
    public static void MergeActionEditFileList(ActionFileDataArray filedatalist, Dictionary <int, ActionFileData> conflictDataMap)
    {
        // Get Local Data
        Dictionary <int, ActionFileData> localDataMap = new Dictionary <int, ActionFileData>();

        if (filedatalist != null && filedatalist.DataList != null)
        {
            foreach (ActionFileData value in filedatalist.DataList)
            {
                if (!localDataMap.ContainsKey(value.ID))
                {
                    localDataMap.Add(value.ID, value);
                }
                else
                {
                    Debug.LogWarning("本地Action ID 有冲突!");
                }
            }
        }
        // Merge Data
        if (conflictDataMap != null)
        {
            foreach (int key in conflictDataMap.Keys)
            {
                if (localDataMap.ContainsKey(key))
                {
                    localDataMap.Remove(key);
                    localDataMap.Add(key, conflictDataMap[key]);
                    Debug.LogWarning("冲突解决,本地文件 : " + key.ToString() + " 已被覆盖!");
                }
            }
        }
        // Sycn Data to Local
        if (localDataMap.Count > 0)
        {
            filedatalist          = new ActionFileDataArray();
            filedatalist.DataList = new List <ActionFileData>(localDataMap.Values);
            filedatalist.DataList.Sort(SortFileByID);
            byte[] data = ThriftSerialize.Serialize(filedatalist);
            FileUtils.WriteByteFile(GetActionFileDataPath(), data);
        }
    }
コード例 #16
0
    public ActionFileData GetActionFileData(int id)
    {
        ActionFileDataArray config = TryGetConfig <ActionFileDataArray>(ConfigPath_ActionConfig);

        if (config == null || config.DataList == null)
        {
            Debuger.LogWarning("can't find Action File DataArray");
        }
        ActionFileData res = null;

        foreach (ActionFileData data in config.DataList)
        {
            if (data.ID == id)
            {
                res = data;
            }
        }
        if (res == null)
        {
            Debuger.LogWarning("can't find Action File");
        }
        return(res);
    }
コード例 #17
0
    private void Copy(ActionFileData data)
    {
        int max = 0;

        for (int i = 0; i < m_DataList.DataList.Count; ++i)
        {
            if (m_DataList.DataList[i].ID > max)
            {
                max = m_DataList.DataList[i].ID;
            }
        }
        ++max;
        ActionFileData elem = new ActionFileData();

        elem.ID            = max;
        elem.FileName      = data.FileName;
        elem.MapResName    = data.MapResName;
        elem.Duration      = data.Duration;
        elem.FrameDatalist = data.FrameDatalist;
        m_DataList         = ActionHelper.GetActionEditFileList();
        ActionHelper.SaveActionEditFileList(m_DataList, elem);
        ActionHelper.CombineActionEditFileList(m_DataList);
        Repaint();
    }
コード例 #18
0
    private void Init()
    {
        // Check Game Root
        GameObject RootObj = GameObject.Find("ActionEditorRoot");

        m_ObjSceneRoot = GameObject.Find("SceneRoot");
        if (null == RootObj || null == m_ObjSceneRoot)
        {
            Debug.LogError("wrong scene");
        }
        // SetUp Window
        m_MainWnd.minSize           = new Vector2(WINDOW_MIN_WIDTH, WINDOW_MIN_HIEGHT);
        m_MainWnd.maxSize           = new Vector2(WINDOW_MAX_WIDTH, WINDOW_MAX_HIEGHT);
        titleStyle                  = new GUIStyle();
        titleStyle.fontSize         = WINDOW_TITLE_FONTSIZE;
        titleStyle.normal.textColor = Color.white;
        m_KeyframeTexRed            = ActionHelper.LoadEditorKeyframeTexRed();
        m_KeyframeTexBlue           = ActionHelper.LoadEditorKeyframeTexBlue();
        m_FileDataList              = ActionHelper.GetActionEditFileList();
        // Init Frame Names
        InitFrameName();
        m_szActionFrameName = new string[m_mapActionFrameNameDict.Count];
        foreach (KeyValuePair <EActionFrameType, string> pair in m_mapActionFrameNameDict)
        {
            if (m_szActionFrameName[(int)pair.Key] == null)
            {
                m_szActionFrameName[(int)pair.Key] = pair.Value;
            }
            else
            {
                Debuger.LogError(pair.Key.ToString() + "Has Same Values !!!!");
            }
        }
        // Init Data
        m_RuntimeParam = new AERuntimeParam();
    }
コード例 #19
0
 public void OpenWindow()
 {
     m_DataList = ActionHelper.GetActionEditFileList();
     Repaint();
 }