feat: 패시브 트리 레이아웃 자동화 및 UI 정리
- 패시브 트리 노드 배치를 삼각형 기반 자동 배치 구조로 전환하고 축 및 브릿지 반경을 재정리\n- 패시브 UI 프리팹과 런타임 렌더링을 수정해 노드 겹침, 링크 관통, 상태별 간격 변화, 하단 여백 문제를 정리\n- 프로토타입 패시브 노드, 트리, 프리셋 자산을 재생성해 최신 레이아웃과 확장 노드 구성을 반영
This commit is contained in:
@@ -6053,6 +6053,7 @@ MonoBehaviour:
|
|||||||
manaBar: {fileID: 1237841695}
|
manaBar: {fileID: 1237841695}
|
||||||
abnormalitySummaryText: {fileID: 0}
|
abnormalitySummaryText: {fileID: 0}
|
||||||
autoCreateAbnormalitySummary: 1
|
autoCreateAbnormalitySummary: 1
|
||||||
|
autoCreatePassiveTreeUi: 1
|
||||||
autoFindPlayer: 1
|
autoFindPlayer: 1
|
||||||
--- !u!4 &1171449866 stripped
|
--- !u!4 &1171449866 stripped
|
||||||
Transform:
|
Transform:
|
||||||
@@ -10868,15 +10869,15 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
value: 0.2
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMin.x
|
propertyPath: m_AnchorMin.x
|
||||||
value: 0.2
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5468776293638745500, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 5468776293638745500, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_sharedMaterial
|
propertyPath: m_sharedMaterial
|
||||||
@@ -10884,15 +10885,15 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
||||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
value: 0.2
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_AnchorMin.x
|
propertyPath: m_AnchorMin.x
|
||||||
value: 0.2
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6042451605894433948, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 6042451605894433948, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_SizeDelta.y
|
propertyPath: m_SizeDelta.y
|
||||||
@@ -10914,6 +10915,14 @@ PrefabInstance:
|
|||||||
propertyPath: m_sharedMaterial
|
propertyPath: m_sharedMaterial
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
||||||
|
- target: {fileID: 7013584622031137981, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
|
propertyPath: graphCenterYOffset
|
||||||
|
value: -76
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7013584622031137981, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
|
propertyPath: openOnStartInPlayMode
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8128918834687467434, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
- target: {fileID: 8128918834687467434, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||||
propertyPath: m_Pivot.x
|
propertyPath: m_Pivot.x
|
||||||
value: 0
|
value: 0
|
||||||
|
|||||||
@@ -14,19 +14,28 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveTreeData
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveTreeData
|
||||||
treeId: player_prototype_tree
|
treeId: player_prototype_tree
|
||||||
treeName: "\uD50C\uB808\uC774\uC5B4 \uD328\uC2DC\uBE0C \uD504\uB85C\uD1A0\uD0C0\uC785"
|
treeName: "\uD50C\uB808\uC774\uC5B4 \uD328\uC2DC\uBE0C \uD504\uB85C\uD1A0\uD0C0\uC785"
|
||||||
description: "\uACF5\uACA9 / \uBC29\uC5B4 / \uC9C0\uC6D0 3\uCD95\uACFC \uBE0C\uB9BF\uC9C0
|
description: "\uACF5\uACA9 / \uBC29\uC5B4 / \uC9C0\uC6D0 3\uCD95\uC5D0 \uB2E4\uC218\uC758
|
||||||
\uB178\uB4DC\uB85C \uAD6C\uC131\uB41C \uB4DC\uB85C\uADF8\uC804 \uBC38\uB7F0\uC2F1
|
\uC2A4\uD0EF \uB178\uB4DC\uC640 \uC5F0\uACB0 \uB178\uB4DC\uB97C \uBC30\uCE58\uD55C
|
||||||
\uAC80\uC99D\uC6A9 \uD2B8\uB9AC\uC785\uB2C8\uB2E4."
|
\uB4DC\uB85C\uADF8\uC804 \uBC38\uB7F0\uC2F1 \uAC80\uC99D\uC6A9 \uD2B8\uB9AC\uC785\uB2C8\uB2E4."
|
||||||
initialPoints: 8
|
initialPoints: 12
|
||||||
nodes:
|
nodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||||
|
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||||
|
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||||
|
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||||
|
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||||
|
|||||||
@@ -15,28 +15,26 @@ MonoBehaviour:
|
|||||||
nodeId: attack_defense_bridge
|
nodeId: attack_defense_bridge
|
||||||
displayName: "\uC555\uBC15 \uBC29\uBCBD"
|
displayName: "\uC555\uBC15 \uBC29\uBCBD"
|
||||||
description: "\uACF5\uACA9\uACFC \uBC29\uC5B4\uB97C \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
description: "\uACF5\uACA9\uACFC \uBC29\uC5B4\uB97C \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||||
\uC555\uBC15 \uC720\uC9C0\uB825\uACFC \uC804\uD22C \uC548\uC815\uC131\uC744 \uD568\uAED8
|
\uD798\uACFC \uD65C\uB825\uC744 \uD568\uAED8 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||||
\uCC59\uAE41\uB2C8\uB2E4."
|
|
||||||
branch: 4
|
branch: 4
|
||||||
nodeKind: 2
|
nodeKind: 2
|
||||||
axisMask: 3
|
axisMask: 3
|
||||||
tier: 2
|
tier: 2
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: -0.24, y: 0.14}
|
layoutPosition: {x: -0.6062178, y: 0.34999996}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 1
|
- effectType: 0
|
||||||
statType: 3
|
statType: 0
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.06
|
value: 3
|
||||||
skillRoleMask: 1
|
skillRoleMask: 7
|
||||||
- effectType: 6
|
- effectType: 0
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 0.95
|
value: 3
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -15,27 +15,26 @@ MonoBehaviour:
|
|||||||
nodeId: defense_support_bridge
|
nodeId: defense_support_bridge
|
||||||
displayName: "\uC218\uD638 \uC21C\uD658"
|
displayName: "\uC218\uD638 \uC21C\uD658"
|
||||||
description: "\uBC29\uC5B4\uC640 \uC9C0\uC6D0\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
description: "\uBC29\uC5B4\uC640 \uC9C0\uC6D0\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||||
\uBCF4\uD638\uB9C9\uACFC \uD68C\uBCF5 \uAE30\uC5EC\uB97C \uD568\uAED8 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
\uD65C\uB825\uACFC \uC9C0\uD61C\uB97C \uD568\uAED8 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
||||||
branch: 4
|
branch: 4
|
||||||
nodeKind: 2
|
nodeKind: 2
|
||||||
axisMask: 6
|
axisMask: 6
|
||||||
tier: 2
|
tier: 2
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0, y: -0.28}
|
layoutPosition: {x: 0.00000006119594, y: -0.7}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 4
|
- effectType: 0
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.1
|
value: 3
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
- effectType: 2
|
- effectType: 0
|
||||||
statType: 3
|
statType: 4
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.08
|
value: 3
|
||||||
skillRoleMask: 4
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Dps_Arcana
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: attack_arcana
|
||||||
|
displayName: "\uC9C0\uB2A5 \uC608\uC5F4"
|
||||||
|
description: "\uACF5\uC138 \uCD95\uC5D0\uC11C\uB3C4 \uC8FC\uBB38 \uACC4\uC5F4 \uD654\uB825\uC744
|
||||||
|
\uD3EC\uAE30\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC9C0\uB2A5 \uAE30\uBC18\uC744 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||||
|
branch: 1
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 1
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: 0.32, y: 0.88}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 2
|
||||||
|
modType: 0
|
||||||
|
value: 4
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f46931d762ecda34b95a94fcdfdaec24
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -19,9 +19,9 @@ MonoBehaviour:
|
|||||||
branch: 1
|
branch: 1
|
||||||
nodeKind: 3
|
nodeKind: 3
|
||||||
axisMask: 1
|
axisMask: 1
|
||||||
tier: 3
|
tier: 4
|
||||||
cost: 2
|
cost: 2
|
||||||
layoutPosition: {x: 0, y: 0.84}
|
layoutPosition: {x: 0, y: 1}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
@@ -30,10 +30,10 @@ MonoBehaviour:
|
|||||||
- effectType: 1
|
- effectType: 1
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.1
|
value: 1.08
|
||||||
skillRoleMask: 1
|
skillRoleMask: 1
|
||||||
- effectType: 7
|
- effectType: 7
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 0.9
|
value: 0.92
|
||||||
skillRoleMask: 1
|
skillRoleMask: 1
|
||||||
|
|||||||
@@ -19,17 +19,22 @@ MonoBehaviour:
|
|||||||
branch: 1
|
branch: 1
|
||||||
nodeKind: 1
|
nodeKind: 1
|
||||||
axisMask: 1
|
axisMask: 1
|
||||||
tier: 2
|
tier: 3
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0, y: 0.6}
|
layoutPosition: {x: 0, y: 0.56}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||||
|
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||||
|
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 1
|
- effectType: 1
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.12
|
value: 1.1
|
||||||
skillRoleMask: 1
|
skillRoleMask: 1
|
||||||
|
|||||||
@@ -21,27 +21,25 @@ MonoBehaviour:
|
|||||||
axisMask: 1
|
axisMask: 1
|
||||||
tier: 1
|
tier: 1
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0, y: 0.34}
|
layoutPosition: {x: 0, y: 0.24}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
|
||||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
|
||||||
effects:
|
effects:
|
||||||
- effectType: 0
|
- effectType: 0
|
||||||
statType: 0
|
statType: 0
|
||||||
modType: 1
|
modType: 1
|
||||||
value: 0.1
|
value: 0.05
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
- effectType: 0
|
- effectType: 0
|
||||||
statType: 1
|
statType: 1
|
||||||
modType: 1
|
modType: 1
|
||||||
value: 0.1
|
value: 0.05
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
- effectType: 0
|
- effectType: 0
|
||||||
statType: 2
|
statType: 2
|
||||||
modType: 1
|
modType: 1
|
||||||
value: 0.1
|
value: 0.05
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Dps_Precision
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: attack_precision
|
||||||
|
displayName: "\uBBFC\uCCA9 \uC5F0\uB9C8"
|
||||||
|
description: "\uC815\uD655\uD55C \uC6C0\uC9C1\uC784\uACFC \uD0C0\uACA9 \uBE48\uB3C4\uB97C
|
||||||
|
\uC704\uD574 \uBBFC\uCCA9\uC744 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
||||||
|
branch: 1
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 1
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: 0, y: 0.78}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 1
|
||||||
|
modType: 0
|
||||||
|
value: 4
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3c450c4008727964b828b2677a7c43ee
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Dps_Strength
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: attack_strength
|
||||||
|
displayName: "\uADFC\uB825 \uB2E8\uB828"
|
||||||
|
description: "\uC9C1\uC811\uC801\uC778 \uBB34\uAE30 \uD654\uB825\uC744 \uB192\uC774\uAE30
|
||||||
|
\uC704\uD55C \uD798\uC758 \uAE30\uBC18\uC744 \uB2E4\uC9D1\uB2C8\uB2E4."
|
||||||
|
branch: 1
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 1
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: -0.32, y: 0.88}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 0
|
||||||
|
modType: 0
|
||||||
|
value: 4
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7d28864e0cf3bf5468aafce96b69dd92
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -13,8 +13,8 @@ MonoBehaviour:
|
|||||||
m_Name: Data_PassiveNode_Player_Hub
|
m_Name: Data_PassiveNode_Player_Hub
|
||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
nodeId: hub
|
nodeId: hub
|
||||||
displayName: "\uC911\uC2EC \uD5C8\uBE0C"
|
displayName:
|
||||||
description: "\uD328\uC2DC\uBE0C \uD2B8\uB9AC\uC758 \uC2DC\uC791\uC810\uC785\uB2C8\uB2E4."
|
description:
|
||||||
branch: 0
|
branch: 0
|
||||||
nodeKind: 0
|
nodeKind: 0
|
||||||
axisMask: 0
|
axisMask: 0
|
||||||
|
|||||||
@@ -15,27 +15,26 @@ MonoBehaviour:
|
|||||||
nodeId: support_attack_bridge
|
nodeId: support_attack_bridge
|
||||||
displayName: "\uC804\uC220 \uC99D\uD3ED"
|
displayName: "\uC804\uC220 \uC99D\uD3ED"
|
||||||
description: "\uC9C0\uC6D0\uACFC \uACF5\uACA9\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
description: "\uC9C0\uC6D0\uACFC \uACF5\uACA9\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||||
\uD654\uB825\uACFC \uC720\uC9C0 \uD6A8\uC728\uC744 \uD568\uAED8 \uBCF4\uC870\uD569\uB2C8\uB2E4."
|
\uC9C0\uD61C\uC640 \uC9C0\uB2A5 \uAE30\uBC18\uC744 \uD568\uAED8 \uB192\uC785\uB2C8\uB2E4."
|
||||||
branch: 4
|
branch: 4
|
||||||
nodeKind: 2
|
nodeKind: 2
|
||||||
axisMask: 5
|
axisMask: 5
|
||||||
tier: 2
|
tier: 2
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0.24, y: 0.14}
|
layoutPosition: {x: 0.6062178, y: 0.34999996}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 1
|
- effectType: 0
|
||||||
statType: 3
|
statType: 4
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.06
|
value: 3
|
||||||
skillRoleMask: 1
|
skillRoleMask: 7
|
||||||
- effectType: 7
|
- effectType: 0
|
||||||
statType: 3
|
statType: 2
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 0.95
|
value: 3
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -19,21 +19,21 @@ MonoBehaviour:
|
|||||||
branch: 3
|
branch: 3
|
||||||
nodeKind: 3
|
nodeKind: 3
|
||||||
axisMask: 4
|
axisMask: 4
|
||||||
tier: 3
|
tier: 4
|
||||||
cost: 2
|
cost: 2
|
||||||
layoutPosition: {x: 0.82, y: -0.58}
|
layoutPosition: {x: 0.8660254, y: -0.50000006}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 0
|
|
||||||
statType: 5
|
|
||||||
modType: 1
|
|
||||||
value: 0.2
|
|
||||||
skillRoleMask: 7
|
|
||||||
- effectType: 7
|
- effectType: 7
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 0.85
|
value: 0.88
|
||||||
|
skillRoleMask: 4
|
||||||
|
- effectType: 3
|
||||||
|
statType: 3
|
||||||
|
modType: 0
|
||||||
|
value: 1.08
|
||||||
skillRoleMask: 4
|
skillRoleMask: 4
|
||||||
|
|||||||
@@ -19,22 +19,27 @@ MonoBehaviour:
|
|||||||
branch: 3
|
branch: 3
|
||||||
nodeKind: 1
|
nodeKind: 1
|
||||||
axisMask: 4
|
axisMask: 4
|
||||||
tier: 2
|
tier: 3
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0.58, y: -0.34}
|
layoutPosition: {x: 0.4849742, y: -0.28000003}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||||
|
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||||
|
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 2
|
- effectType: 2
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.15
|
value: 1.12
|
||||||
skillRoleMask: 4
|
skillRoleMask: 4
|
||||||
- effectType: 3
|
- effectType: 3
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.15
|
value: 1.12
|
||||||
skillRoleMask: 4
|
skillRoleMask: 4
|
||||||
|
|||||||
@@ -21,17 +21,15 @@ MonoBehaviour:
|
|||||||
axisMask: 4
|
axisMask: 4
|
||||||
tier: 1
|
tier: 1
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: 0.34, y: -0.1}
|
layoutPosition: {x: 0.20784609, y: -0.12000001}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
|
||||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
|
||||||
effects:
|
effects:
|
||||||
- effectType: 0
|
- effectType: 0
|
||||||
statType: 4
|
statType: 4
|
||||||
modType: 1
|
modType: 1
|
||||||
value: 0.2
|
value: 0.1
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Support_Focus
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: support_focus
|
||||||
|
displayName: "\uC9D1\uC911 \uC21C\uD658"
|
||||||
|
description: "\uC9C0\uC18D\uC801\uC778 \uBCF4\uC870\uB97C \uC704\uD574 \uC815\uC2E0\uC744
|
||||||
|
\uBE44\uC728\uB85C \uD655\uC7A5\uD569\uB2C8\uB2E4."
|
||||||
|
branch: 3
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 4
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: 0.60210234, y: -0.71712816}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 5
|
||||||
|
modType: 1
|
||||||
|
value: 0.12
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5eb74fef73fbd88418bb4dd6150c46b9
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Support_Insight
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: support_insight
|
||||||
|
displayName: "\uC9C0\uD61C \uC751\uCD95"
|
||||||
|
description: "\uD68C\uBCF5\uB7C9\uC758 \uAE30\uCD08\uAC00 \uB418\uB294 \uC9C0\uD61C\uB97C
|
||||||
|
\uC9C1\uC811 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||||
|
branch: 3
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 4
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: 0.9221024, y: -0.16287193}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 4
|
||||||
|
modType: 0
|
||||||
|
value: 4
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 291c1539d7ff6f7409fea7e6b1537916
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Support_Well
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: support_well
|
||||||
|
displayName: "\uC815\uC2E0 \uC0D8"
|
||||||
|
description: "\uC9C0\uC6D0 \uCD95 \uC6B4\uC6A9\uC744 \uC704\uD574 \uB9C8\uB098
|
||||||
|
\uAE30\uBC18\uC744 \uB2E8\uB2E8\uD788 \uD569\uB2C8\uB2E4."
|
||||||
|
branch: 3
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 4
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: 0.6754998, y: -0.39000005}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 5
|
||||||
|
modType: 0
|
||||||
|
value: 6
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c82a0153c8de0644e808edfd55ab6b10
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -19,9 +19,9 @@ MonoBehaviour:
|
|||||||
branch: 2
|
branch: 2
|
||||||
nodeKind: 3
|
nodeKind: 3
|
||||||
axisMask: 2
|
axisMask: 2
|
||||||
tier: 3
|
tier: 4
|
||||||
cost: 2
|
cost: 2
|
||||||
layoutPosition: {x: -0.82, y: -0.58}
|
layoutPosition: {x: -0.8660254, y: -0.50000006}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
@@ -30,5 +30,5 @@ MonoBehaviour:
|
|||||||
- effectType: 6
|
- effectType: 6
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 0.88
|
value: 0.9
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -19,22 +19,27 @@ MonoBehaviour:
|
|||||||
branch: 2
|
branch: 2
|
||||||
nodeKind: 1
|
nodeKind: 1
|
||||||
axisMask: 2
|
axisMask: 2
|
||||||
tier: 2
|
tier: 3
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: -0.58, y: -0.34}
|
layoutPosition: {x: -0.4849742, y: -0.28000003}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||||
|
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||||
|
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||||
effects:
|
effects:
|
||||||
- effectType: 5
|
- effectType: 5
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.3
|
value: 1.25
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
- effectType: 4
|
- effectType: 4
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 0
|
modType: 0
|
||||||
value: 1.15
|
value: 1.1
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -21,17 +21,15 @@ MonoBehaviour:
|
|||||||
axisMask: 2
|
axisMask: 2
|
||||||
tier: 1
|
tier: 1
|
||||||
cost: 1
|
cost: 1
|
||||||
layoutPosition: {x: -0.34, y: -0.1}
|
layoutPosition: {x: -0.20784609, y: -0.12000001}
|
||||||
prerequisiteNodes:
|
prerequisiteNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
connectedNodes:
|
connectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
|
||||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
|
||||||
effects:
|
effects:
|
||||||
- effectType: 0
|
- effectType: 0
|
||||||
statType: 3
|
statType: 3
|
||||||
modType: 1
|
modType: 1
|
||||||
value: 0.2
|
value: 0.1
|
||||||
skillRoleMask: 7
|
skillRoleMask: 7
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Tank_Frame
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: defense_frame
|
||||||
|
displayName: "\uD65C\uB825 \uCD95\uC801"
|
||||||
|
description: "\uBC29\uC5B4 \uCD95\uC758 \uAE30\uBCF8 \uCCB4\uB825\uC744 \uB450\uD141\uAC8C
|
||||||
|
\uD655\uBCF4\uD569\uB2C8\uB2E4."
|
||||||
|
branch: 2
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 2
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: -0.60210234, y: -0.71712816}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 3
|
||||||
|
modType: 0
|
||||||
|
value: 6
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6721e28dab9025343b4c7ed2b1f847b3
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Tank_Guard
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: defense_guard
|
||||||
|
displayName: "\uAD73\uC13C \uC721\uCCB4"
|
||||||
|
description: "\uAE30\uBCF8 \uD65C\uB825\uC744 \uBE44\uC728\uB85C \uC99D\uD3ED\uD574
|
||||||
|
\uC804\uD22C \uC9C0\uC18D\uB825\uC744 \uB192\uC785\uB2C8\uB2E4."
|
||||||
|
branch: 2
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 2
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: -0.9221024, y: -0.16287193}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 3
|
||||||
|
modType: 1
|
||||||
|
value: 0.12
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d27dc2a5f86f772408a3ef0e115af79b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||||
|
m_Name: Data_PassiveNode_Player_Tank_Resolve
|
||||||
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||||
|
nodeId: defense_resolve
|
||||||
|
displayName: "\uC804\uD22C \uD638\uD761"
|
||||||
|
description: "\uC804\uC5F4\uC5D0\uC11C \uC2A4\uD0AC\uC744 \uAD74\uB9B4 \uC5EC\uC720\uB97C
|
||||||
|
\uC704\uD574 \uC815\uC2E0\uC744 \uD568\uAED8 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||||
|
branch: 2
|
||||||
|
nodeKind: 1
|
||||||
|
axisMask: 2
|
||||||
|
tier: 2
|
||||||
|
cost: 1
|
||||||
|
layoutPosition: {x: -0.6754998, y: -0.39000005}
|
||||||
|
prerequisiteNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
connectedNodes:
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
effects:
|
||||||
|
- effectType: 0
|
||||||
|
statType: 5
|
||||||
|
modType: 0
|
||||||
|
value: 4
|
||||||
|
skillRoleMask: 7
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a661c34923e6e534daaa263641e73d6e
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
|||||||
m_Name: Data_PassivePreset_Player_Dps
|
m_Name: Data_PassivePreset_Player_Dps
|
||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||||
presetName: "\uACF5\uACA9\uD615 \uD328\uC2DC\uBE0C"
|
presetName: "\uACF5\uACA9\uD615 \uD328\uC2DC\uBE0C"
|
||||||
description: "\uACF5\uACA9 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uBC29\uC5B4/\uC9C0\uC6D0
|
description: "\uACF5\uACA9 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uD654\uB825
|
||||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
\uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||||
selectedNodes:
|
selectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||||
|
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
|||||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
|||||||
m_Name: Data_PassivePreset_Player_Support
|
m_Name: Data_PassivePreset_Player_Support
|
||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||||
presetName: "\uC9C0\uC6D0\uD615 \uD328\uC2DC\uBE0C"
|
presetName: "\uC9C0\uC6D0\uD615 \uD328\uC2DC\uBE0C"
|
||||||
description: "\uC9C0\uC6D0 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uACF5\uACA9/\uBC29\uC5B4
|
description: "\uC9C0\uC6D0 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uC720\uC9C0
|
||||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
\uD6A8\uC728 \uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||||
selectedNodes:
|
selectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||||
|
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
|
|||||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
|||||||
m_Name: Data_PassivePreset_Player_Tank
|
m_Name: Data_PassivePreset_Player_Tank
|
||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||||
presetName: "\uBC29\uC5B4\uD615 \uD328\uC2DC\uBE0C"
|
presetName: "\uBC29\uC5B4\uD615 \uD328\uC2DC\uBE0C"
|
||||||
description: "\uBC29\uC5B4 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uACF5\uACA9/\uC9C0\uC6D0
|
description: "\uBC29\uC5B4 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uD575\uC2EC
|
||||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
\uC720\uC9C0 \uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||||
selectedNodes:
|
selectedNodes:
|
||||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||||
|
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||||
|
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -33,13 +33,14 @@ RectTransform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
|
- {fileID: 2962551817550131226}
|
||||||
- {fileID: 3875000767313047181}
|
- {fileID: 3875000767313047181}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 70, y: 70}
|
m_SizeDelta: {x: 62, y: 62}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &8268640799320570731
|
--- !u!222 &8268640799320570731
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@@ -152,6 +153,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.UI.PassiveTreeNodeView
|
m_EditorClassIdentifier: Colosseum.Game::Colosseum.UI.PassiveTreeNodeView
|
||||||
rootRect: {fileID: 6261231552513207993}
|
rootRect: {fileID: 6261231552513207993}
|
||||||
backgroundImage: {fileID: 448894188463328570}
|
backgroundImage: {fileID: 448894188463328570}
|
||||||
|
fillImage: {fileID: 1375332608636340320}
|
||||||
innerImage: {fileID: 3476538439727275718}
|
innerImage: {fileID: 3476538439727275718}
|
||||||
button: {fileID: 2832153398621926819}
|
button: {fileID: 2832153398621926819}
|
||||||
outline: {fileID: 7672961496650835067}
|
outline: {fileID: 7672961496650835067}
|
||||||
@@ -190,7 +192,7 @@ RectTransform:
|
|||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: -20, y: -20}
|
m_SizeDelta: {x: -18, y: -18}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6261820943415329823
|
--- !u!222 &6261820943415329823
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@@ -230,3 +232,78 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &7621270954760017220
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2962551817550131226}
|
||||||
|
- component: {fileID: 4702726639153553071}
|
||||||
|
- component: {fileID: 1375332608636340320}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Fill
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2962551817550131226
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7621270954760017220}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 6261231552513207993}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: -34, y: -34}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4702726639153553071
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7621270954760017220}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1375332608636340320
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7621270954760017220}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 0.08, g: 0.08, b: 0.1, a: 0.98}
|
||||||
|
m_RaycastTarget: 0
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1343,6 +1343,7 @@ MonoBehaviour:
|
|||||||
statusErrorColor: {r: 1, g: 0.52, b: 0.45, a: 1}
|
statusErrorColor: {r: 1, g: 0.52, b: 0.45, a: 1}
|
||||||
lineColor: {r: 0.72, g: 0.67, b: 0.53, a: 0.4}
|
lineColor: {r: 0.72, g: 0.67, b: 0.53, a: 0.4}
|
||||||
activeLineColor: {r: 0.98, g: 0.9, b: 0.7, a: 0.92}
|
activeLineColor: {r: 0.98, g: 0.9, b: 0.7, a: 0.92}
|
||||||
|
graphCenterYOffset: -76
|
||||||
--- !u!1 &7094235100059026060
|
--- !u!1 &7094235100059026060
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ namespace Colosseum.Editor
|
|||||||
private static readonly Color ButtonColor = new(0.20f, 0.20f, 0.24f, 0.96f);
|
private static readonly Color ButtonColor = new(0.20f, 0.20f, 0.24f, 0.96f);
|
||||||
private static readonly Color TextColor = new(0.90f, 0.88f, 0.82f, 1f);
|
private static readonly Color TextColor = new(0.90f, 0.88f, 0.82f, 1f);
|
||||||
private static readonly Color NodeColor = new(0.16f, 0.16f, 0.18f, 0.98f);
|
private static readonly Color NodeColor = new(0.16f, 0.16f, 0.18f, 0.98f);
|
||||||
|
private static readonly Color NodeFillColor = new(0.08f, 0.08f, 0.10f, 0.98f);
|
||||||
private static readonly Color NodeOutlineColor = new(0f, 0f, 0f, 0.45f);
|
private static readonly Color NodeOutlineColor = new(0f, 0f, 0f, 0.45f);
|
||||||
|
|
||||||
[MenuItem("Tools/Colosseum/Passives/Rebuild Passive UI Prefabs")]
|
[MenuItem("Tools/Colosseum/Passives/Rebuild Passive UI Prefabs")]
|
||||||
@@ -71,7 +72,7 @@ namespace Colosseum.Editor
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
RectTransform rect = root.GetComponent<RectTransform>();
|
RectTransform rect = root.GetComponent<RectTransform>();
|
||||||
rect.sizeDelta = new Vector2(70f, 70f);
|
rect.sizeDelta = new Vector2(62f, 62f);
|
||||||
|
|
||||||
Image background = root.GetComponent<Image>();
|
Image background = root.GetComponent<Image>();
|
||||||
background.sprite = LoadPassiveNodeSprite(false);
|
background.sprite = LoadPassiveNodeSprite(false);
|
||||||
@@ -86,11 +87,23 @@ namespace Colosseum.Editor
|
|||||||
Button button = root.GetComponent<Button>();
|
Button button = root.GetComponent<Button>();
|
||||||
button.targetGraphic = background;
|
button.targetGraphic = background;
|
||||||
|
|
||||||
|
GameObject fillObject = CreateUiObject("Fill", root.transform, typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
||||||
|
RectTransform fillRect = fillObject.GetComponent<RectTransform>();
|
||||||
|
StretchRect(fillRect);
|
||||||
|
fillRect.offsetMin = new Vector2(17f, 17f);
|
||||||
|
fillRect.offsetMax = new Vector2(-17f, -17f);
|
||||||
|
|
||||||
|
Image fillImage = fillObject.GetComponent<Image>();
|
||||||
|
fillImage.sprite = GetBuiltinSprite();
|
||||||
|
fillImage.type = Image.Type.Sliced;
|
||||||
|
fillImage.color = NodeFillColor;
|
||||||
|
fillImage.raycastTarget = false;
|
||||||
|
|
||||||
GameObject innerObject = CreateUiObject("InnerIcon", root.transform, typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
GameObject innerObject = CreateUiObject("InnerIcon", root.transform, typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
||||||
RectTransform innerRect = innerObject.GetComponent<RectTransform>();
|
RectTransform innerRect = innerObject.GetComponent<RectTransform>();
|
||||||
StretchRect(innerRect);
|
StretchRect(innerRect);
|
||||||
innerRect.offsetMin = new Vector2(10f, 10f);
|
innerRect.offsetMin = new Vector2(9f, 9f);
|
||||||
innerRect.offsetMax = new Vector2(-10f, -10f);
|
innerRect.offsetMax = new Vector2(-9f, -9f);
|
||||||
|
|
||||||
Image innerImage = innerObject.GetComponent<Image>();
|
Image innerImage = innerObject.GetComponent<Image>();
|
||||||
innerImage.sprite = LoadPassiveNodeSprite(false);
|
innerImage.sprite = LoadPassiveNodeSprite(false);
|
||||||
@@ -102,6 +115,7 @@ namespace Colosseum.Editor
|
|||||||
PassiveTreeNodeView references = root.GetComponent<PassiveTreeNodeView>();
|
PassiveTreeNodeView references = root.GetComponent<PassiveTreeNodeView>();
|
||||||
SetSerializedReference(references, "rootRect", rect);
|
SetSerializedReference(references, "rootRect", rect);
|
||||||
SetSerializedReference(references, "backgroundImage", background);
|
SetSerializedReference(references, "backgroundImage", background);
|
||||||
|
SetSerializedReference(references, "fillImage", fillImage);
|
||||||
SetSerializedReference(references, "innerImage", innerImage);
|
SetSerializedReference(references, "innerImage", innerImage);
|
||||||
SetSerializedReference(references, "button", button);
|
SetSerializedReference(references, "button", button);
|
||||||
SetSerializedReference(references, "outline", outline);
|
SetSerializedReference(references, "outline", outline);
|
||||||
@@ -143,7 +157,7 @@ namespace Colosseum.Editor
|
|||||||
panelRect.anchorMin = new Vector2(0.5f, 0.5f);
|
panelRect.anchorMin = new Vector2(0.5f, 0.5f);
|
||||||
panelRect.anchorMax = new Vector2(0.5f, 0.5f);
|
panelRect.anchorMax = new Vector2(0.5f, 0.5f);
|
||||||
panelRect.pivot = new Vector2(0.5f, 0.5f);
|
panelRect.pivot = new Vector2(0.5f, 0.5f);
|
||||||
panelRect.sizeDelta = new Vector2(1380f, 820f);
|
panelRect.sizeDelta = new Vector2(1440f, 900f);
|
||||||
|
|
||||||
Image panelImage = panelObject.GetComponent<Image>();
|
Image panelImage = panelObject.GetComponent<Image>();
|
||||||
panelImage.sprite = GetBuiltinSprite();
|
panelImage.sprite = GetBuiltinSprite();
|
||||||
@@ -308,14 +322,14 @@ namespace Colosseum.Editor
|
|||||||
|
|
||||||
RectTransform graphSection = CreateSectionRoot(bodyObject.transform, "Section_Graph", 0f);
|
RectTransform graphSection = CreateSectionRoot(bodyObject.transform, "Section_Graph", 0f);
|
||||||
graphSection.GetComponent<LayoutElement>().flexibleWidth = 1f;
|
graphSection.GetComponent<LayoutElement>().flexibleWidth = 1f;
|
||||||
graphSection.GetComponent<LayoutElement>().minWidth = 760f;
|
graphSection.GetComponent<LayoutElement>().minWidth = 820f;
|
||||||
CreateSectionTitle(graphSection, "트리 그래프");
|
CreateSectionTitle(graphSection, "트리 그래프");
|
||||||
|
|
||||||
GameObject graphSurface = CreateUiObject("GraphSurface", graphSection, typeof(RectTransform), typeof(LayoutElement), typeof(Image));
|
GameObject graphSurface = CreateUiObject("GraphSurface", graphSection, typeof(RectTransform), typeof(LayoutElement), typeof(Image));
|
||||||
graphRect = graphSurface.GetComponent<RectTransform>();
|
graphRect = graphSurface.GetComponent<RectTransform>();
|
||||||
LayoutElement graphLayout = graphSurface.GetComponent<LayoutElement>();
|
LayoutElement graphLayout = graphSurface.GetComponent<LayoutElement>();
|
||||||
graphLayout.flexibleHeight = 1f;
|
graphLayout.flexibleHeight = 1f;
|
||||||
graphLayout.minHeight = 560f;
|
graphLayout.minHeight = 640f;
|
||||||
|
|
||||||
Image graphImage = graphSurface.GetComponent<Image>();
|
Image graphImage = graphSurface.GetComponent<Image>();
|
||||||
graphImage.sprite = GetBuiltinSprite();
|
graphImage.sprite = GetBuiltinSprite();
|
||||||
@@ -385,7 +399,7 @@ namespace Colosseum.Editor
|
|||||||
statusText.text = string.Empty;
|
statusText.text = string.Empty;
|
||||||
statusText.textWrappingMode = TextWrappingModes.NoWrap;
|
statusText.textWrappingMode = TextWrappingModes.NoWrap;
|
||||||
statusText.overflowMode = TextOverflowModes.Ellipsis;
|
statusText.overflowMode = TextOverflowModes.Ellipsis;
|
||||||
footerObject.SetActive(false);
|
footerObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static RectTransform CreateSectionRoot(Transform parent, string name, float preferredWidth)
|
private static RectTransform CreateSectionRoot(Transform parent, string name, float preferredWidth)
|
||||||
|
|||||||
@@ -32,18 +32,35 @@ namespace Colosseum.Editor
|
|||||||
|
|
||||||
private const string HubNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Hub.asset";
|
private const string HubNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Hub.asset";
|
||||||
private const string DefenseEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Entry.asset";
|
private const string DefenseEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Entry.asset";
|
||||||
|
private const string DefenseFrameNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Frame.asset";
|
||||||
|
private const string DefenseGuardNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Guard.asset";
|
||||||
|
private const string DefenseResolveNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Resolve.asset";
|
||||||
private const string DefenseCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Core.asset";
|
private const string DefenseCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Core.asset";
|
||||||
private const string DefenseCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Capstone.asset";
|
private const string DefenseCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Capstone.asset";
|
||||||
private const string SupportEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Entry.asset";
|
private const string SupportEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Entry.asset";
|
||||||
|
private const string SupportInsightNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Insight.asset";
|
||||||
|
private const string SupportWellNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Well.asset";
|
||||||
|
private const string SupportFocusNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Focus.asset";
|
||||||
private const string SupportCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Core.asset";
|
private const string SupportCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Core.asset";
|
||||||
private const string SupportCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Capstone.asset";
|
private const string SupportCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Capstone.asset";
|
||||||
private const string AttackEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Entry.asset";
|
private const string AttackEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Entry.asset";
|
||||||
|
private const string AttackStrengthNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Strength.asset";
|
||||||
|
private const string AttackPrecisionNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Precision.asset";
|
||||||
|
private const string AttackArcanaNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Arcana.asset";
|
||||||
private const string AttackCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Core.asset";
|
private const string AttackCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Core.asset";
|
||||||
private const string AttackCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Capstone.asset";
|
private const string AttackCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Capstone.asset";
|
||||||
private const string AttackDefenseBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_AttackDefense_Bridge.asset";
|
private const string AttackDefenseBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_AttackDefense_Bridge.asset";
|
||||||
private const string DefenseSupportBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_DefenseSupport_Bridge.asset";
|
private const string DefenseSupportBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_DefenseSupport_Bridge.asset";
|
||||||
private const string SupportAttackBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_SupportAttack_Bridge.asset";
|
private const string SupportAttackBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_SupportAttack_Bridge.asset";
|
||||||
|
|
||||||
|
private const float AxisEntryRadius = 0.24f;
|
||||||
|
private const float AxisCoreRadius = 0.56f;
|
||||||
|
private const float AxisOuterStatRadius = 0.88f;
|
||||||
|
private const float AxisCenterStatRadius = 0.78f;
|
||||||
|
private const float AxisCapstoneRadius = 1.0f;
|
||||||
|
private const float AxisStatSideOffset = 0.32f;
|
||||||
|
private const float BridgeRadius = 0.70f;
|
||||||
|
|
||||||
[MenuItem("Tools/Colosseum/Debug/Passive/Bootstrap Prototype Assets")]
|
[MenuItem("Tools/Colosseum/Debug/Passive/Bootstrap Prototype Assets")]
|
||||||
private static void BootstrapPrototypeAssets()
|
private static void BootstrapPrototypeAssets()
|
||||||
{
|
{
|
||||||
@@ -54,23 +71,61 @@ namespace Colosseum.Editor
|
|||||||
|
|
||||||
PassiveNodeData hubNode = CreateOrLoadNode(HubNodeAssetPath);
|
PassiveNodeData hubNode = CreateOrLoadNode(HubNodeAssetPath);
|
||||||
PassiveNodeData defenseEntryNode = CreateOrLoadNode(DefenseEntryNodeAssetPath);
|
PassiveNodeData defenseEntryNode = CreateOrLoadNode(DefenseEntryNodeAssetPath);
|
||||||
|
PassiveNodeData defenseFrameNode = CreateOrLoadNode(DefenseFrameNodeAssetPath);
|
||||||
|
PassiveNodeData defenseGuardNode = CreateOrLoadNode(DefenseGuardNodeAssetPath);
|
||||||
|
PassiveNodeData defenseResolveNode = CreateOrLoadNode(DefenseResolveNodeAssetPath);
|
||||||
PassiveNodeData defenseCoreNode = CreateOrLoadNode(DefenseCoreNodeAssetPath);
|
PassiveNodeData defenseCoreNode = CreateOrLoadNode(DefenseCoreNodeAssetPath);
|
||||||
PassiveNodeData defenseCapstoneNode = CreateOrLoadNode(DefenseCapstoneNodeAssetPath);
|
PassiveNodeData defenseCapstoneNode = CreateOrLoadNode(DefenseCapstoneNodeAssetPath);
|
||||||
PassiveNodeData supportEntryNode = CreateOrLoadNode(SupportEntryNodeAssetPath);
|
PassiveNodeData supportEntryNode = CreateOrLoadNode(SupportEntryNodeAssetPath);
|
||||||
|
PassiveNodeData supportInsightNode = CreateOrLoadNode(SupportInsightNodeAssetPath);
|
||||||
|
PassiveNodeData supportWellNode = CreateOrLoadNode(SupportWellNodeAssetPath);
|
||||||
|
PassiveNodeData supportFocusNode = CreateOrLoadNode(SupportFocusNodeAssetPath);
|
||||||
PassiveNodeData supportCoreNode = CreateOrLoadNode(SupportCoreNodeAssetPath);
|
PassiveNodeData supportCoreNode = CreateOrLoadNode(SupportCoreNodeAssetPath);
|
||||||
PassiveNodeData supportCapstoneNode = CreateOrLoadNode(SupportCapstoneNodeAssetPath);
|
PassiveNodeData supportCapstoneNode = CreateOrLoadNode(SupportCapstoneNodeAssetPath);
|
||||||
PassiveNodeData attackEntryNode = CreateOrLoadNode(AttackEntryNodeAssetPath);
|
PassiveNodeData attackEntryNode = CreateOrLoadNode(AttackEntryNodeAssetPath);
|
||||||
|
PassiveNodeData attackStrengthNode = CreateOrLoadNode(AttackStrengthNodeAssetPath);
|
||||||
|
PassiveNodeData attackPrecisionNode = CreateOrLoadNode(AttackPrecisionNodeAssetPath);
|
||||||
|
PassiveNodeData attackArcanaNode = CreateOrLoadNode(AttackArcanaNodeAssetPath);
|
||||||
PassiveNodeData attackCoreNode = CreateOrLoadNode(AttackCoreNodeAssetPath);
|
PassiveNodeData attackCoreNode = CreateOrLoadNode(AttackCoreNodeAssetPath);
|
||||||
PassiveNodeData attackCapstoneNode = CreateOrLoadNode(AttackCapstoneNodeAssetPath);
|
PassiveNodeData attackCapstoneNode = CreateOrLoadNode(AttackCapstoneNodeAssetPath);
|
||||||
PassiveNodeData attackDefenseBridgeNode = CreateOrLoadNode(AttackDefenseBridgeNodeAssetPath);
|
PassiveNodeData attackDefenseBridgeNode = CreateOrLoadNode(AttackDefenseBridgeNodeAssetPath);
|
||||||
PassiveNodeData defenseSupportBridgeNode = CreateOrLoadNode(DefenseSupportBridgeNodeAssetPath);
|
PassiveNodeData defenseSupportBridgeNode = CreateOrLoadNode(DefenseSupportBridgeNodeAssetPath);
|
||||||
PassiveNodeData supportAttackBridgeNode = CreateOrLoadNode(SupportAttackBridgeNodeAssetPath);
|
PassiveNodeData supportAttackBridgeNode = CreateOrLoadNode(SupportAttackBridgeNodeAssetPath);
|
||||||
|
|
||||||
|
Vector2 attackDirection = Vector2.up;
|
||||||
|
Vector2 defenseDirection = RotateLayout(Vector2.up, 120f);
|
||||||
|
Vector2 supportDirection = RotateLayout(Vector2.up, -120f);
|
||||||
|
|
||||||
|
Vector2 attackEntryPosition = BuildAxisLayoutPosition(attackDirection, AxisEntryRadius);
|
||||||
|
Vector2 attackCorePosition = BuildAxisLayoutPosition(attackDirection, AxisCoreRadius);
|
||||||
|
Vector2 attackStrengthPosition = BuildAxisLayoutPosition(attackDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||||
|
Vector2 attackPrecisionPosition = BuildAxisLayoutPosition(attackDirection, AxisCenterStatRadius);
|
||||||
|
Vector2 attackArcanaPosition = BuildAxisLayoutPosition(attackDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||||
|
Vector2 attackCapstonePosition = BuildAxisLayoutPosition(attackDirection, AxisCapstoneRadius);
|
||||||
|
|
||||||
|
Vector2 defenseEntryPosition = BuildAxisLayoutPosition(defenseDirection, AxisEntryRadius);
|
||||||
|
Vector2 defenseCorePosition = BuildAxisLayoutPosition(defenseDirection, AxisCoreRadius);
|
||||||
|
Vector2 defenseFramePosition = BuildAxisLayoutPosition(defenseDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||||
|
Vector2 defenseResolvePosition = BuildAxisLayoutPosition(defenseDirection, AxisCenterStatRadius);
|
||||||
|
Vector2 defenseGuardPosition = BuildAxisLayoutPosition(defenseDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||||
|
Vector2 defenseCapstonePosition = BuildAxisLayoutPosition(defenseDirection, AxisCapstoneRadius);
|
||||||
|
|
||||||
|
Vector2 supportEntryPosition = BuildAxisLayoutPosition(supportDirection, AxisEntryRadius);
|
||||||
|
Vector2 supportCorePosition = BuildAxisLayoutPosition(supportDirection, AxisCoreRadius);
|
||||||
|
Vector2 supportInsightPosition = BuildAxisLayoutPosition(supportDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||||
|
Vector2 supportWellPosition = BuildAxisLayoutPosition(supportDirection, AxisCenterStatRadius);
|
||||||
|
Vector2 supportFocusPosition = BuildAxisLayoutPosition(supportDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||||
|
Vector2 supportCapstonePosition = BuildAxisLayoutPosition(supportDirection, AxisCapstoneRadius);
|
||||||
|
|
||||||
|
Vector2 attackDefenseBridgePosition = RotateLayout(Vector2.up * BridgeRadius, 60f);
|
||||||
|
Vector2 defenseSupportBridgePosition = RotateLayout(Vector2.up * BridgeRadius, 180f);
|
||||||
|
Vector2 supportAttackBridgePosition = RotateLayout(Vector2.up * BridgeRadius, -60f);
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
hubNode,
|
hubNode,
|
||||||
"hub",
|
"hub",
|
||||||
"중심 허브",
|
string.Empty,
|
||||||
"패시브 트리의 시작점입니다.",
|
string.Empty,
|
||||||
PassiveNodeBranch.Common,
|
PassiveNodeBranch.Common,
|
||||||
PassiveNodeKind.Hub,
|
PassiveNodeKind.Hub,
|
||||||
PassiveAxisMask.None,
|
PassiveAxisMask.None,
|
||||||
@@ -91,14 +146,68 @@ namespace Colosseum.Editor
|
|||||||
PassiveAxisMask.Attack,
|
PassiveAxisMask.Attack,
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
new Vector2(0f, 0.34f),
|
attackEntryPosition,
|
||||||
new[] { hubNode },
|
new[] { hubNode },
|
||||||
new[] { hubNode, attackCoreNode, attackDefenseBridgeNode, supportAttackBridgeNode },
|
new[] { hubNode, attackCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.PercentAdd, 0.1f),
|
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.PercentAdd, 0.05f),
|
||||||
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.PercentAdd, 0.1f),
|
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.PercentAdd, 0.05f),
|
||||||
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.PercentAdd, 0.1f),
|
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.PercentAdd, 0.05f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
attackStrengthNode,
|
||||||
|
"attack_strength",
|
||||||
|
"근력 단련",
|
||||||
|
"직접적인 무기 화력을 높이기 위한 힘의 기반을 다집니다.",
|
||||||
|
PassiveNodeBranch.Attack,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Attack,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
attackStrengthPosition,
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.Flat, 4f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
attackPrecisionNode,
|
||||||
|
"attack_precision",
|
||||||
|
"민첩 연마",
|
||||||
|
"정확한 움직임과 타격 빈도를 위해 민첩을 끌어올립니다.",
|
||||||
|
PassiveNodeBranch.Attack,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Attack,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
attackPrecisionPosition,
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.Flat, 4f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
attackArcanaNode,
|
||||||
|
"attack_arcana",
|
||||||
|
"지능 예열",
|
||||||
|
"공세 축에서도 주문 계열 화력을 포기하지 않도록 지능 기반을 보강합니다.",
|
||||||
|
PassiveNodeBranch.Attack,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Attack,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
attackArcanaPosition,
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[] { attackCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.Flat, 4f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -109,14 +218,14 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Attack,
|
PassiveNodeBranch.Attack,
|
||||||
PassiveNodeKind.Axis,
|
PassiveNodeKind.Axis,
|
||||||
PassiveAxisMask.Attack,
|
PassiveAxisMask.Attack,
|
||||||
2,
|
3,
|
||||||
1,
|
1,
|
||||||
new Vector2(0f, 0.6f),
|
attackCorePosition,
|
||||||
new[] { attackEntryNode },
|
new[] { attackEntryNode },
|
||||||
new[] { attackEntryNode, attackCapstoneNode },
|
new[] { attackEntryNode, attackStrengthNode, attackPrecisionNode, attackArcanaNode, attackCapstoneNode, attackDefenseBridgeNode, supportAttackBridgeNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.12f, SkillRoleType.Attack),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.10f, SkillRoleType.Attack),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -127,15 +236,15 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Attack,
|
PassiveNodeBranch.Attack,
|
||||||
PassiveNodeKind.Capstone,
|
PassiveNodeKind.Capstone,
|
||||||
PassiveAxisMask.Attack,
|
PassiveAxisMask.Attack,
|
||||||
3,
|
4,
|
||||||
2,
|
2,
|
||||||
new Vector2(0f, 0.84f),
|
attackCapstonePosition,
|
||||||
new[] { attackCoreNode },
|
new[] { attackCoreNode },
|
||||||
new[] { attackCoreNode },
|
new[] { attackCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.10f, SkillRoleType.Attack),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.08f, SkillRoleType.Attack),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.90f, SkillRoleType.Attack),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.92f, SkillRoleType.Attack),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -148,12 +257,66 @@ namespace Colosseum.Editor
|
|||||||
PassiveAxisMask.Defense,
|
PassiveAxisMask.Defense,
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
new Vector2(-0.34f, -0.1f),
|
defenseEntryPosition,
|
||||||
new[] { hubNode },
|
new[] { hubNode },
|
||||||
new[] { hubNode, defenseCoreNode, attackDefenseBridgeNode, defenseSupportBridgeNode },
|
new[] { hubNode, defenseCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.2f),
|
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.10f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
defenseFrameNode,
|
||||||
|
"defense_frame",
|
||||||
|
"활력 축적",
|
||||||
|
"방어 축의 기본 체력을 두텁게 확보합니다.",
|
||||||
|
PassiveNodeBranch.Defense,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Defense,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
defenseFramePosition,
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 6f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
defenseGuardNode,
|
||||||
|
"defense_guard",
|
||||||
|
"굳센 육체",
|
||||||
|
"기본 활력을 비율로 증폭해 전투 지속력을 높입니다.",
|
||||||
|
PassiveNodeBranch.Defense,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Defense,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
defenseGuardPosition,
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.12f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
defenseResolveNode,
|
||||||
|
"defense_resolve",
|
||||||
|
"전투 호흡",
|
||||||
|
"전열에서 스킬을 굴릴 여유를 위해 정신을 함께 보강합니다.",
|
||||||
|
PassiveNodeBranch.Defense,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Defense,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
defenseResolvePosition,
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[] { defenseCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.Flat, 4f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -164,15 +327,15 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Defense,
|
PassiveNodeBranch.Defense,
|
||||||
PassiveNodeKind.Axis,
|
PassiveNodeKind.Axis,
|
||||||
PassiveAxisMask.Defense,
|
PassiveAxisMask.Defense,
|
||||||
2,
|
3,
|
||||||
1,
|
1,
|
||||||
new Vector2(-0.58f, -0.34f),
|
defenseCorePosition,
|
||||||
new[] { defenseEntryNode },
|
new[] { defenseEntryNode },
|
||||||
new[] { defenseEntryNode, defenseCapstoneNode },
|
new[] { defenseEntryNode, defenseFrameNode, defenseGuardNode, defenseResolveNode, defenseCapstoneNode, attackDefenseBridgeNode, defenseSupportBridgeNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ThreatGeneratedMultiplier, 1.30f),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ThreatGeneratedMultiplier, 1.25f),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.15f),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.10f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -183,14 +346,14 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Defense,
|
PassiveNodeBranch.Defense,
|
||||||
PassiveNodeKind.Capstone,
|
PassiveNodeKind.Capstone,
|
||||||
PassiveAxisMask.Defense,
|
PassiveAxisMask.Defense,
|
||||||
3,
|
4,
|
||||||
2,
|
2,
|
||||||
new Vector2(-0.82f, -0.58f),
|
defenseCapstonePosition,
|
||||||
new[] { defenseCoreNode },
|
new[] { defenseCoreNode },
|
||||||
new[] { defenseCoreNode },
|
new[] { defenseCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.88f),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.90f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -203,12 +366,66 @@ namespace Colosseum.Editor
|
|||||||
PassiveAxisMask.Support,
|
PassiveAxisMask.Support,
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
new Vector2(0.34f, -0.1f),
|
supportEntryPosition,
|
||||||
new[] { hubNode },
|
new[] { hubNode },
|
||||||
new[] { hubNode, supportCoreNode, defenseSupportBridgeNode, supportAttackBridgeNode },
|
new[] { hubNode, supportCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.PercentAdd, 0.2f),
|
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.PercentAdd, 0.10f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
supportInsightNode,
|
||||||
|
"support_insight",
|
||||||
|
"지혜 응축",
|
||||||
|
"회복량의 기초가 되는 지혜를 직접 보강합니다.",
|
||||||
|
PassiveNodeBranch.Support,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Support,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
supportInsightPosition,
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 4f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
supportWellNode,
|
||||||
|
"support_well",
|
||||||
|
"정신 샘",
|
||||||
|
"지원 축 운용을 위해 마나 기반을 단단히 합니다.",
|
||||||
|
PassiveNodeBranch.Support,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Support,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
supportWellPosition,
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.Flat, 6f),
|
||||||
|
});
|
||||||
|
|
||||||
|
ConfigureNode(
|
||||||
|
supportFocusNode,
|
||||||
|
"support_focus",
|
||||||
|
"집중 순환",
|
||||||
|
"지속적인 보조를 위해 정신을 비율로 확장합니다.",
|
||||||
|
PassiveNodeBranch.Support,
|
||||||
|
PassiveNodeKind.Axis,
|
||||||
|
PassiveAxisMask.Support,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
supportFocusPosition,
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[] { supportCoreNode },
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.PercentAdd, 0.12f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -219,15 +436,15 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Support,
|
PassiveNodeBranch.Support,
|
||||||
PassiveNodeKind.Axis,
|
PassiveNodeKind.Axis,
|
||||||
PassiveAxisMask.Support,
|
PassiveAxisMask.Support,
|
||||||
2,
|
3,
|
||||||
1,
|
1,
|
||||||
new Vector2(0.58f, -0.34f),
|
supportCorePosition,
|
||||||
new[] { supportEntryNode },
|
new[] { supportEntryNode },
|
||||||
new[] { supportEntryNode, supportCapstoneNode },
|
new[] { supportEntryNode, supportInsightNode, supportWellNode, supportFocusNode, supportCapstoneNode, defenseSupportBridgeNode, supportAttackBridgeNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.15f, SkillRoleType.Support),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.12f, SkillRoleType.Support),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.15f, SkillRoleType.Support),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.12f, SkillRoleType.Support),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
@@ -238,72 +455,72 @@ namespace Colosseum.Editor
|
|||||||
PassiveNodeBranch.Support,
|
PassiveNodeBranch.Support,
|
||||||
PassiveNodeKind.Capstone,
|
PassiveNodeKind.Capstone,
|
||||||
PassiveAxisMask.Support,
|
PassiveAxisMask.Support,
|
||||||
3,
|
4,
|
||||||
2,
|
2,
|
||||||
new Vector2(0.82f, -0.58f),
|
supportCapstonePosition,
|
||||||
new[] { supportCoreNode },
|
new[] { supportCoreNode },
|
||||||
new[] { supportCoreNode },
|
new[] { supportCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.PercentAdd, 0.2f),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.88f, SkillRoleType.Support),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.85f, SkillRoleType.Support),
|
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.08f, SkillRoleType.Support),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
attackDefenseBridgeNode,
|
attackDefenseBridgeNode,
|
||||||
"attack_defense_bridge",
|
"attack_defense_bridge",
|
||||||
"압박 방벽",
|
"압박 방벽",
|
||||||
"공격과 방어를 연결하는 브릿지로, 압박 유지력과 전투 안정성을 함께 챙깁니다.",
|
"공격과 방어를 연결하는 브릿지로, 힘과 활력을 함께 보강합니다.",
|
||||||
PassiveNodeBranch.Bridge,
|
PassiveNodeBranch.Bridge,
|
||||||
PassiveNodeKind.Bridge,
|
PassiveNodeKind.Bridge,
|
||||||
PassiveAxisMask.Attack | PassiveAxisMask.Defense,
|
PassiveAxisMask.Attack | PassiveAxisMask.Defense,
|
||||||
2,
|
2,
|
||||||
1,
|
1,
|
||||||
new Vector2(-0.24f, 0.14f),
|
attackDefenseBridgePosition,
|
||||||
new[] { attackEntryNode, defenseEntryNode },
|
new[] { attackCoreNode },
|
||||||
new[] { attackEntryNode, defenseEntryNode },
|
new[] { attackCoreNode, defenseCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.06f, SkillRoleType.Attack),
|
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.Flat, 3f),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.95f),
|
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 3f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
defenseSupportBridgeNode,
|
defenseSupportBridgeNode,
|
||||||
"defense_support_bridge",
|
"defense_support_bridge",
|
||||||
"수호 순환",
|
"수호 순환",
|
||||||
"방어와 지원을 연결하는 브릿지로, 보호막과 회복 기여를 함께 끌어올립니다.",
|
"방어와 지원을 연결하는 브릿지로, 활력과 지혜를 함께 끌어올립니다.",
|
||||||
PassiveNodeBranch.Bridge,
|
PassiveNodeBranch.Bridge,
|
||||||
PassiveNodeKind.Bridge,
|
PassiveNodeKind.Bridge,
|
||||||
PassiveAxisMask.Defense | PassiveAxisMask.Support,
|
PassiveAxisMask.Defense | PassiveAxisMask.Support,
|
||||||
2,
|
2,
|
||||||
1,
|
1,
|
||||||
new Vector2(0f, -0.28f),
|
defenseSupportBridgePosition,
|
||||||
new[] { defenseEntryNode, supportEntryNode },
|
new[] { defenseCoreNode },
|
||||||
new[] { defenseEntryNode, supportEntryNode },
|
new[] { defenseCoreNode, supportCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.10f),
|
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 3f),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.08f, SkillRoleType.Support),
|
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 3f),
|
||||||
});
|
});
|
||||||
|
|
||||||
ConfigureNode(
|
ConfigureNode(
|
||||||
supportAttackBridgeNode,
|
supportAttackBridgeNode,
|
||||||
"support_attack_bridge",
|
"support_attack_bridge",
|
||||||
"전술 증폭",
|
"전술 증폭",
|
||||||
"지원과 공격을 연결하는 브릿지로, 화력과 유지 효율을 함께 보조합니다.",
|
"지원과 공격을 연결하는 브릿지로, 지혜와 지능 기반을 함께 높입니다.",
|
||||||
PassiveNodeBranch.Bridge,
|
PassiveNodeBranch.Bridge,
|
||||||
PassiveNodeKind.Bridge,
|
PassiveNodeKind.Bridge,
|
||||||
PassiveAxisMask.Support | PassiveAxisMask.Attack,
|
PassiveAxisMask.Support | PassiveAxisMask.Attack,
|
||||||
2,
|
2,
|
||||||
1,
|
1,
|
||||||
new Vector2(0.24f, 0.14f),
|
supportAttackBridgePosition,
|
||||||
new[] { supportEntryNode, attackEntryNode },
|
new[] { supportCoreNode },
|
||||||
new[] { supportEntryNode, attackEntryNode },
|
new[] { supportCoreNode, attackCoreNode },
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.06f, SkillRoleType.Attack),
|
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 3f),
|
||||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.95f),
|
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.Flat, 3f),
|
||||||
});
|
});
|
||||||
|
|
||||||
PassiveTreeData tree = CreateOrLoadTree();
|
PassiveTreeData tree = CreateOrLoadTree();
|
||||||
@@ -311,18 +528,27 @@ namespace Colosseum.Editor
|
|||||||
tree,
|
tree,
|
||||||
"player_prototype_tree",
|
"player_prototype_tree",
|
||||||
"플레이어 패시브 프로토타입",
|
"플레이어 패시브 프로토타입",
|
||||||
"공격 / 방어 / 지원 3축과 브릿지 노드로 구성된 드로그전 밸런싱 검증용 트리입니다.",
|
"공격 / 방어 / 지원 3축에 다수의 스탯 노드와 연결 노드를 배치한 드로그전 밸런싱 검증용 트리입니다.",
|
||||||
8,
|
12,
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
hubNode,
|
hubNode,
|
||||||
attackEntryNode,
|
attackEntryNode,
|
||||||
|
attackStrengthNode,
|
||||||
|
attackPrecisionNode,
|
||||||
|
attackArcanaNode,
|
||||||
attackCoreNode,
|
attackCoreNode,
|
||||||
attackCapstoneNode,
|
attackCapstoneNode,
|
||||||
defenseEntryNode,
|
defenseEntryNode,
|
||||||
|
defenseFrameNode,
|
||||||
|
defenseGuardNode,
|
||||||
|
defenseResolveNode,
|
||||||
defenseCoreNode,
|
defenseCoreNode,
|
||||||
defenseCapstoneNode,
|
defenseCapstoneNode,
|
||||||
supportEntryNode,
|
supportEntryNode,
|
||||||
|
supportInsightNode,
|
||||||
|
supportWellNode,
|
||||||
|
supportFocusNode,
|
||||||
supportCoreNode,
|
supportCoreNode,
|
||||||
supportCapstoneNode,
|
supportCapstoneNode,
|
||||||
attackDefenseBridgeNode,
|
attackDefenseBridgeNode,
|
||||||
@@ -340,52 +566,64 @@ namespace Colosseum.Editor
|
|||||||
CreateOrUpdatePreset(
|
CreateOrUpdatePreset(
|
||||||
DefensePresetAssetPath,
|
DefensePresetAssetPath,
|
||||||
"방어형 패시브",
|
"방어형 패시브",
|
||||||
"방어 축 완성과 함께 공격/지원 브릿지를 가볍게 여는 프리셋입니다.",
|
"방어 축의 스탯 노드와 핵심 유지 노드를 우선 확보하는 프리셋입니다.",
|
||||||
tree,
|
tree,
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
hubNode,
|
hubNode,
|
||||||
defenseEntryNode,
|
defenseEntryNode,
|
||||||
defenseCoreNode,
|
defenseCoreNode,
|
||||||
|
defenseFrameNode,
|
||||||
|
defenseGuardNode,
|
||||||
|
defenseResolveNode,
|
||||||
defenseCapstoneNode,
|
defenseCapstoneNode,
|
||||||
attackEntryNode,
|
attackEntryNode,
|
||||||
|
attackCoreNode,
|
||||||
supportEntryNode,
|
supportEntryNode,
|
||||||
attackDefenseBridgeNode,
|
attackDefenseBridgeNode,
|
||||||
defenseSupportBridgeNode,
|
supportCoreNode,
|
||||||
});
|
});
|
||||||
|
|
||||||
CreateOrUpdatePreset(
|
CreateOrUpdatePreset(
|
||||||
SupportPresetAssetPath,
|
SupportPresetAssetPath,
|
||||||
"지원형 패시브",
|
"지원형 패시브",
|
||||||
"지원 축 완성과 함께 공격/방어 브릿지를 가볍게 여는 프리셋입니다.",
|
"지원 축의 스탯 노드와 유지 효율 노드를 우선 확보하는 프리셋입니다.",
|
||||||
tree,
|
tree,
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
hubNode,
|
hubNode,
|
||||||
supportEntryNode,
|
supportEntryNode,
|
||||||
supportCoreNode,
|
supportCoreNode,
|
||||||
|
supportInsightNode,
|
||||||
|
supportWellNode,
|
||||||
|
supportFocusNode,
|
||||||
supportCapstoneNode,
|
supportCapstoneNode,
|
||||||
defenseEntryNode,
|
defenseEntryNode,
|
||||||
|
defenseCoreNode,
|
||||||
attackEntryNode,
|
attackEntryNode,
|
||||||
defenseSupportBridgeNode,
|
defenseSupportBridgeNode,
|
||||||
supportAttackBridgeNode,
|
attackCoreNode,
|
||||||
});
|
});
|
||||||
|
|
||||||
CreateOrUpdatePreset(
|
CreateOrUpdatePreset(
|
||||||
AttackPresetAssetPath,
|
AttackPresetAssetPath,
|
||||||
"공격형 패시브",
|
"공격형 패시브",
|
||||||
"공격 축 완성과 함께 방어/지원 브릿지를 가볍게 여는 프리셋입니다.",
|
"공격 축의 스탯 노드와 화력 노드를 우선 확보하는 프리셋입니다.",
|
||||||
tree,
|
tree,
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
hubNode,
|
hubNode,
|
||||||
attackEntryNode,
|
attackEntryNode,
|
||||||
attackCoreNode,
|
attackCoreNode,
|
||||||
|
attackStrengthNode,
|
||||||
|
attackPrecisionNode,
|
||||||
|
attackArcanaNode,
|
||||||
attackCapstoneNode,
|
attackCapstoneNode,
|
||||||
defenseEntryNode,
|
defenseEntryNode,
|
||||||
|
defenseCoreNode,
|
||||||
supportEntryNode,
|
supportEntryNode,
|
||||||
attackDefenseBridgeNode,
|
attackDefenseBridgeNode,
|
||||||
supportAttackBridgeNode,
|
supportCoreNode,
|
||||||
});
|
});
|
||||||
|
|
||||||
PassivePrototypeCatalogData catalog = CreateOrLoadCatalog();
|
PassivePrototypeCatalogData catalog = CreateOrLoadCatalog();
|
||||||
@@ -643,6 +881,29 @@ namespace Colosseum.Editor
|
|||||||
EditorUtility.SetDirty(node);
|
EditorUtility.SetDirty(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 기준 축 템플릿 좌표를 실제 축 방향으로 회전합니다.
|
||||||
|
/// </summary>
|
||||||
|
private static Vector2 BuildAxisLayoutPosition(Vector2 axisDirection, float radialDistance, float lateralOffset = 0f)
|
||||||
|
{
|
||||||
|
Vector2 normalizedDirection = axisDirection.normalized;
|
||||||
|
Vector2 perpendicularDirection = new Vector2(-normalizedDirection.y, normalizedDirection.x);
|
||||||
|
return normalizedDirection * radialDistance + perpendicularDirection * lateralOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2D 평면 좌표를 각도 기준으로 회전합니다.
|
||||||
|
/// </summary>
|
||||||
|
private static Vector2 RotateLayout(Vector2 value, float degrees)
|
||||||
|
{
|
||||||
|
float radians = degrees * Mathf.Deg2Rad;
|
||||||
|
float cosine = Mathf.Cos(radians);
|
||||||
|
float sine = Mathf.Sin(radians);
|
||||||
|
return new Vector2(
|
||||||
|
value.x * cosine - value.y * sine,
|
||||||
|
value.x * sine + value.y * cosine);
|
||||||
|
}
|
||||||
|
|
||||||
private static void CreateOrUpdatePreset(
|
private static void CreateOrUpdatePreset(
|
||||||
string assetPath,
|
string assetPath,
|
||||||
string presetName,
|
string presetName,
|
||||||
|
|||||||
@@ -10,12 +10,14 @@ namespace Colosseum.UI
|
|||||||
{
|
{
|
||||||
[SerializeField] private RectTransform rootRect;
|
[SerializeField] private RectTransform rootRect;
|
||||||
[SerializeField] private Image backgroundImage;
|
[SerializeField] private Image backgroundImage;
|
||||||
|
[SerializeField] private Image fillImage;
|
||||||
[SerializeField] private Image innerImage;
|
[SerializeField] private Image innerImage;
|
||||||
[SerializeField] private Button button;
|
[SerializeField] private Button button;
|
||||||
[SerializeField] private Outline outline;
|
[SerializeField] private Outline outline;
|
||||||
|
|
||||||
public RectTransform RootRect => rootRect;
|
public RectTransform RootRect => rootRect;
|
||||||
public Image BackgroundImage => backgroundImage;
|
public Image BackgroundImage => backgroundImage;
|
||||||
|
public Image FillImage => fillImage;
|
||||||
public Image InnerImage => innerImage;
|
public Image InnerImage => innerImage;
|
||||||
public Button Button => button;
|
public Button Button => button;
|
||||||
public Outline Outline => outline;
|
public Outline Outline => outline;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace Colosseum.UI
|
|||||||
public RectTransform RectTransform;
|
public RectTransform RectTransform;
|
||||||
public Button Button;
|
public Button Button;
|
||||||
public Image Image;
|
public Image Image;
|
||||||
|
public Image FillImage;
|
||||||
public Image InnerImage;
|
public Image InnerImage;
|
||||||
public Outline Outline;
|
public Outline Outline;
|
||||||
}
|
}
|
||||||
@@ -69,9 +70,10 @@ namespace Colosseum.UI
|
|||||||
[SerializeField] private Color statusErrorColor = new Color(1f, 0.52f, 0.45f, 1f);
|
[SerializeField] private Color statusErrorColor = new Color(1f, 0.52f, 0.45f, 1f);
|
||||||
[SerializeField] private Color lineColor = new Color(0.72f, 0.67f, 0.53f, 0.4f);
|
[SerializeField] private Color lineColor = new Color(0.72f, 0.67f, 0.53f, 0.4f);
|
||||||
[SerializeField] private Color activeLineColor = new Color(0.98f, 0.9f, 0.7f, 0.92f);
|
[SerializeField] private Color activeLineColor = new Color(0.98f, 0.9f, 0.7f, 0.92f);
|
||||||
|
[SerializeField] private float graphCenterYOffset = -118f;
|
||||||
private const float LeftPanelWidth = 292f;
|
private const float LeftPanelWidth = 292f;
|
||||||
private const float RightPanelWidth = 308f;
|
private const float RightPanelWidth = 308f;
|
||||||
private const float GraphPadding = 52f;
|
private const float GraphPadding = 24f;
|
||||||
private const float ConnectionThickness = 7f;
|
private const float ConnectionThickness = 7f;
|
||||||
|
|
||||||
private readonly Dictionary<PassiveNodeData, NodeVisual> nodeVisuals = new();
|
private readonly Dictionary<PassiveNodeData, NodeVisual> nodeVisuals = new();
|
||||||
@@ -399,8 +401,8 @@ namespace Colosseum.UI
|
|||||||
|
|
||||||
Rect canvasRect = canvasRectTransform.rect;
|
Rect canvasRect = canvasRectTransform.rect;
|
||||||
panelRectTransform.sizeDelta = new Vector2(
|
panelRectTransform.sizeDelta = new Vector2(
|
||||||
Mathf.Max(1120f, canvasRect.width - 48f),
|
Mathf.Max(1160f, canvasRect.width - 24f),
|
||||||
Mathf.Max(680f, canvasRect.height - 48f));
|
Mathf.Max(720f, canvasRect.height - 24f));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateToggleButton()
|
private void CreateToggleButton()
|
||||||
@@ -884,6 +886,11 @@ namespace Colosseum.UI
|
|||||||
image.sprite = GetNodeSprite(node);
|
image.sprite = GetNodeSprite(node);
|
||||||
image.type = Image.Type.Simple;
|
image.type = Image.Type.Simple;
|
||||||
image.preserveAspect = true;
|
image.preserveAspect = true;
|
||||||
|
Image fillImage = nodeView.FillImage;
|
||||||
|
if (fillImage != null)
|
||||||
|
{
|
||||||
|
fillImage.type = Image.Type.Sliced;
|
||||||
|
}
|
||||||
Image innerImage = nodeView.InnerImage;
|
Image innerImage = nodeView.InnerImage;
|
||||||
if (innerImage != null)
|
if (innerImage != null)
|
||||||
{
|
{
|
||||||
@@ -913,6 +920,7 @@ namespace Colosseum.UI
|
|||||||
RectTransform = rectTransform,
|
RectTransform = rectTransform,
|
||||||
Button = button,
|
Button = button,
|
||||||
Image = image,
|
Image = image,
|
||||||
|
FillImage = fillImage,
|
||||||
InnerImage = innerImage,
|
InnerImage = innerImage,
|
||||||
Outline = nodeView.Outline != null ? nodeView.Outline : button.GetComponent<Outline>(),
|
Outline = nodeView.Outline != null ? nodeView.Outline : button.GetComponent<Outline>(),
|
||||||
};
|
};
|
||||||
@@ -943,7 +951,11 @@ namespace Colosseum.UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.AppendLine($"<size=30><b>{focusedNode.DisplayName}</b></size>");
|
if (!string.IsNullOrWhiteSpace(focusedNode.DisplayName))
|
||||||
|
{
|
||||||
|
builder.AppendLine($"<size=30><b>{focusedNode.DisplayName}</b></size>");
|
||||||
|
}
|
||||||
|
|
||||||
builder.AppendLine($"<size=18>{PassivePresentationUtility.GetBranchLabel(focusedNode.Branch)} | {PassivePresentationUtility.GetNodeKindLabel(focusedNode.NodeKind)} | 축 {PassivePresentationUtility.GetAxisSummary(focusedNode.AxisMask)}</size>");
|
builder.AppendLine($"<size=18>{PassivePresentationUtility.GetBranchLabel(focusedNode.Branch)} | {PassivePresentationUtility.GetNodeKindLabel(focusedNode.NodeKind)} | 축 {PassivePresentationUtility.GetAxisSummary(focusedNode.AxisMask)}</size>");
|
||||||
builder.AppendLine($"<size=18>비용 {focusedNode.Cost}</size>");
|
builder.AppendLine($"<size=18>비용 {focusedNode.Cost}</size>");
|
||||||
|
|
||||||
@@ -1091,12 +1103,16 @@ namespace Colosseum.UI
|
|||||||
visual.Button.interactable = true;
|
visual.Button.interactable = true;
|
||||||
visual.Image.sprite = GetNodeSprite(node);
|
visual.Image.sprite = GetNodeSprite(node);
|
||||||
visual.Image.color = fillColor;
|
visual.Image.color = fillColor;
|
||||||
|
if (visual.FillImage != null)
|
||||||
|
{
|
||||||
|
visual.FillImage.color = GetNodeFillColor(selected, selectable, focused);
|
||||||
|
}
|
||||||
if (visual.InnerImage != null)
|
if (visual.InnerImage != null)
|
||||||
{
|
{
|
||||||
visual.InnerImage.sprite = GetInnerNodeSprite();
|
visual.InnerImage.sprite = GetInnerNodeSprite();
|
||||||
visual.InnerImage.color = GetInnerNodeColor(selected, selectable, focused);
|
visual.InnerImage.color = GetInnerNodeColor(selected, selectable, focused);
|
||||||
}
|
}
|
||||||
visual.RectTransform.localScale = selected ? new Vector3(1.05f, 1.05f, 1f) : focused ? new Vector3(1.03f, 1.03f, 1f) : Vector3.one;
|
visual.RectTransform.localScale = Vector3.one;
|
||||||
|
|
||||||
Outline outline = visual.Outline != null ? visual.Outline : visual.Button.GetComponent<Outline>();
|
Outline outline = visual.Outline != null ? visual.Outline : visual.Button.GetComponent<Outline>();
|
||||||
if (outline == null)
|
if (outline == null)
|
||||||
@@ -1125,12 +1141,11 @@ namespace Colosseum.UI
|
|||||||
private Vector2 GetGraphAnchoredPosition(Vector2 layoutPosition)
|
private Vector2 GetGraphAnchoredPosition(Vector2 layoutPosition)
|
||||||
{
|
{
|
||||||
Rect rect = graphRectTransform != null ? graphRectTransform.rect : new Rect(0f, 0f, 640f, 480f);
|
Rect rect = graphRectTransform != null ? graphRectTransform.rect : new Rect(0f, 0f, 640f, 480f);
|
||||||
float halfWidth = Mathf.Max(0f, rect.width * 0.5f - GraphPadding);
|
float halfExtent = Mathf.Max(0f, Mathf.Min(rect.width, rect.height) * 0.5f - GraphPadding);
|
||||||
float halfHeight = Mathf.Max(0f, rect.height * 0.5f - GraphPadding);
|
|
||||||
|
|
||||||
return new Vector2(
|
return new Vector2(
|
||||||
Mathf.Clamp(layoutPosition.x, -1f, 1f) * halfWidth,
|
Mathf.Clamp(layoutPosition.x, -1f, 1f) * halfExtent,
|
||||||
Mathf.Clamp(layoutPosition.y, -1f, 1f) * halfHeight);
|
Mathf.Clamp(layoutPosition.y, -1f, 1f) * halfExtent + graphCenterYOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string BuildConnectionKey(PassiveNodeData leftNode, PassiveNodeData rightNode)
|
private static string BuildConnectionKey(PassiveNodeData leftNode, PassiveNodeData rightNode)
|
||||||
@@ -1142,7 +1157,7 @@ namespace Colosseum.UI
|
|||||||
|
|
||||||
private Sprite GetNodeSprite(PassiveNodeData node)
|
private Sprite GetNodeSprite(PassiveNodeData node)
|
||||||
{
|
{
|
||||||
bool useSpecialSprite = node != null && (node.NodeKind == PassiveNodeKind.Hub || node.NodeKind == PassiveNodeKind.Bridge || node.NodeKind == PassiveNodeKind.Capstone);
|
bool useSpecialSprite = node != null && (node.NodeKind == PassiveNodeKind.Bridge || node.NodeKind == PassiveNodeKind.Capstone);
|
||||||
Sprite fallbackSprite = useSpecialSprite ? normalNodeSprite : specialNodeSprite;
|
Sprite fallbackSprite = useSpecialSprite ? normalNodeSprite : specialNodeSprite;
|
||||||
Sprite preferredSprite = useSpecialSprite ? specialNodeSprite : normalNodeSprite;
|
Sprite preferredSprite = useSpecialSprite ? specialNodeSprite : normalNodeSprite;
|
||||||
return preferredSprite != null ? preferredSprite : fallbackSprite;
|
return preferredSprite != null ? preferredSprite : fallbackSprite;
|
||||||
@@ -1170,6 +1185,20 @@ namespace Colosseum.UI
|
|||||||
return new Color(0.3f, 0.3f, 0.32f, 0.34f);
|
return new Color(0.3f, 0.3f, 0.32f, 0.34f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Color GetNodeFillColor(bool selected, bool selectable, bool focused)
|
||||||
|
{
|
||||||
|
if (selected)
|
||||||
|
return new Color(0.09f, 0.09f, 0.11f, 0.96f);
|
||||||
|
|
||||||
|
if (focused)
|
||||||
|
return new Color(0.08f, 0.08f, 0.10f, 0.94f);
|
||||||
|
|
||||||
|
if (selectable)
|
||||||
|
return new Color(0.07f, 0.07f, 0.09f, 0.92f);
|
||||||
|
|
||||||
|
return new Color(0.06f, 0.06f, 0.08f, 0.90f);
|
||||||
|
}
|
||||||
|
|
||||||
private Color GetNodeBaseColor(PassiveNodeData node)
|
private Color GetNodeBaseColor(PassiveNodeData node)
|
||||||
{
|
{
|
||||||
if (node.Branch == PassiveNodeBranch.Bridge)
|
if (node.Branch == PassiveNodeBranch.Bridge)
|
||||||
@@ -1198,19 +1227,21 @@ namespace Colosseum.UI
|
|||||||
{
|
{
|
||||||
return node.NodeKind switch
|
return node.NodeKind switch
|
||||||
{
|
{
|
||||||
PassiveNodeKind.Hub => new Vector2(88f, 88f),
|
PassiveNodeKind.Hub => new Vector2(78f, 78f),
|
||||||
PassiveNodeKind.Capstone => new Vector2(78f, 78f),
|
PassiveNodeKind.Capstone => new Vector2(70f, 70f),
|
||||||
PassiveNodeKind.Bridge => new Vector2(64f, 64f),
|
PassiveNodeKind.Bridge => new Vector2(56f, 56f),
|
||||||
_ => new Vector2(70f, 70f),
|
_ => new Vector2(62f, 62f),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static float GetConnectionInset(PassiveNodeData node)
|
private static float GetConnectionInset(PassiveNodeData node)
|
||||||
{
|
{
|
||||||
Vector2 size = GetNodeSize(node);
|
Vector2 size = GetNodeSize(node);
|
||||||
float radius = Mathf.Min(size.x, size.y) * 0.42f;
|
float radius = Mathf.Min(size.x, size.y) * 0.5f + ConnectionThickness * 0.5f + 2f;
|
||||||
if (node != null && node.NodeKind == PassiveNodeKind.Bridge)
|
if (node != null && node.NodeKind == PassiveNodeKind.Bridge)
|
||||||
radius += 3f;
|
radius += 4f;
|
||||||
|
else if (node != null && (node.NodeKind == PassiveNodeKind.Hub || node.NodeKind == PassiveNodeKind.Capstone))
|
||||||
|
radius += 2f;
|
||||||
|
|
||||||
return radius;
|
return radius;
|
||||||
}
|
}
|
||||||
@@ -1380,7 +1411,13 @@ namespace Colosseum.UI
|
|||||||
Transform footerTransform = statusText.transform.parent;
|
Transform footerTransform = statusText.transform.parent;
|
||||||
if (footerTransform != null)
|
if (footerTransform != null)
|
||||||
{
|
{
|
||||||
footerTransform.gameObject.SetActive(hasMessage);
|
Image footerImage = footerTransform.GetComponent<Image>();
|
||||||
|
if (footerImage != null)
|
||||||
|
{
|
||||||
|
Color color = sectionBackgroundColor;
|
||||||
|
color.a = hasMessage ? sectionBackgroundColor.a : 0f;
|
||||||
|
footerImage.color = color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
statusText.text = hasMessage ? lastStatusMessage : string.Empty;
|
statusText.text = hasMessage ? lastStatusMessage : string.Empty;
|
||||||
|
|||||||
Reference in New Issue
Block a user