A game about forced loneliness, made by TACStudios
1using System;
2
3using UnityEngine;
4
5using Codice.CM.Common;
6using PlasticGui.WorkspaceWindow.Merge;
7
8namespace Unity.PlasticSCM.Editor.Views.Merge.Developer
9{
10 [Serializable]
11 internal class SerializableMergeTabState
12 {
13 internal RepositorySpec RepSpec { get; private set; }
14 internal EnumMergeType MergeType { get; private set; }
15 internal ShowIncomingChangesFrom From { get; private set; }
16 internal bool IsIncomingMerge { get; private set; }
17 internal bool IsMergeFinished { get; set; }
18
19 internal bool IsInitialized { get; private set; }
20
21 internal SerializableMergeTabState(
22 RepositorySpec repSpec,
23 ObjectInfo objectInfo,
24 ObjectInfo ancestorObjectInfo,
25 EnumMergeType mergeType,
26 ShowIncomingChangesFrom from,
27 bool isIncomingMerge,
28 bool isMergeFinished)
29 {
30 RepSpec = repSpec;
31
32 SetObjectInfo(objectInfo);
33 SetAncestorObjectInfo(ancestorObjectInfo);
34
35 MergeType = mergeType;
36 From = from;
37 IsIncomingMerge = isIncomingMerge;
38 IsMergeFinished = isMergeFinished;
39
40 IsInitialized = true;
41 }
42
43 internal ObjectInfo GetObjectInfo()
44 {
45 if (mBranchInfo != null && mBranchInfo.Id != -1)
46 return mBranchInfo;
47
48 if (mChangesetInfo != null && mChangesetInfo.Id != -1)
49 return mChangesetInfo;
50
51 if (mLabelInfo != null && mLabelInfo.Id != -1)
52 return mLabelInfo;
53
54 return null;
55 }
56
57 internal ObjectInfo GetAncestorObjectInfo()
58 {
59 if (mAncestorBranchInfo != null && mAncestorBranchInfo.Id != -1)
60 return mAncestorBranchInfo;
61
62 if (mAncestorChangesetInfo != null && mAncestorChangesetInfo.Id != -1)
63 return mAncestorChangesetInfo;
64
65 if (mAncestorLabelInfo != null && mAncestorLabelInfo.Id != -1)
66 return mAncestorLabelInfo;
67
68 return null;
69 }
70
71 void SetObjectInfo(ObjectInfo objectInfo)
72 {
73 if (objectInfo is BranchInfo)
74 {
75 mBranchInfo = (BranchInfo)objectInfo;
76 return;
77 }
78
79 if (objectInfo is ChangesetInfo)
80 {
81 mChangesetInfo = (ChangesetInfo)objectInfo;
82 return;
83 }
84
85 if (objectInfo is MarkerInfo)
86 {
87 mLabelInfo = (MarkerInfo)objectInfo;
88 return;
89 }
90 }
91
92 void SetAncestorObjectInfo(ObjectInfo objectInfo)
93 {
94 if (objectInfo is BranchInfo)
95 {
96 mAncestorBranchInfo = (BranchInfo)objectInfo;
97 return;
98 }
99
100 if (objectInfo is ChangesetInfo)
101 {
102 mAncestorChangesetInfo = (ChangesetInfo)objectInfo;
103 return;
104 }
105
106 if (objectInfo is MarkerInfo)
107 {
108 mAncestorLabelInfo = (MarkerInfo)objectInfo;
109 return;
110 }
111 }
112
113 [SerializeField]
114 BranchInfo mBranchInfo;
115 [SerializeField]
116 ChangesetInfo mChangesetInfo;
117 [SerializeField]
118 MarkerInfo mLabelInfo;
119
120 [SerializeField]
121 BranchInfo mAncestorBranchInfo;
122 [SerializeField]
123 ChangesetInfo mAncestorChangesetInfo;
124 [SerializeField]
125 MarkerInfo mAncestorLabelInfo;
126 }
127}