diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj
index 35fea36..0ef1135 100644
--- a/Assembly-CSharp.csproj
+++ b/Assembly-CSharp.csproj
@@ -53,9 +53,11 @@
+
+
@@ -96,6 +98,7 @@
+
@@ -118,6 +121,7 @@
+
diff --git a/Assets/Prefabs/Blacksmith.prefab b/Assets/Prefabs/Blacksmith.prefab
index a72eb3b..84c7222 100644
--- a/Assets/Prefabs/Blacksmith.prefab
+++ b/Assets/Prefabs/Blacksmith.prefab
@@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 5854748735229546762}
- component: {fileID: 4404305322825062480}
- component: {fileID: 8736618315465008189}
+ - component: {fileID: 3088394590933577447}
m_Layer: 0
m_Name: Blacksmith
m_TagString: Untagged
@@ -80,6 +81,19 @@ MonoBehaviour:
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
+--- !u!114 &3088394590933577447
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3769411674882976201}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 39d108eb3babe48409cc4dfc803dbbe4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Blacksmith
+ _upgradePopupPrefab: {fileID: 2939937666831822298, guid: 534816991b3afe149b9a117e920d83eb, type: 3}
--- !u!1001 &6017823276457359066
PrefabInstance:
m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Data.meta b/Assets/Resources/Data.meta
new file mode 100644
index 0000000..fdb2134
--- /dev/null
+++ b/Assets/Resources/Data.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 633be28f04d3950499d3ebbf2758e23b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects.meta b/Assets/Resources/Data/ScriptableObjects.meta
new file mode 100644
index 0000000..19414d8
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 693a55ca03fd43a418616dd59ef601c9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade.meta
new file mode 100644
index 0000000..66b232c
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ec21abff735922741a51d7fbbb56aae2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset
new file mode 100644
index 0000000..c011f19
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade1
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 1
+ memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.1"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 200
+ requireUpgradeId:
+ effectStatList:
+ - player_max_hp
+ effectOpList:
+ - add
+ effectValueList:
+ - 50
+ sortOrder: 1
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset.meta
new file mode 100644
index 0000000..1c7ba28
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade1.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44903308c714f6947914cbe297fbdfb7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset
new file mode 100644
index 0000000..3b8bc18
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade10
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 10
+ memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.1"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 200
+ requireUpgradeId:
+ effectStatList:
+ - player_manpower
+ effectOpList:
+ - add
+ effectValueList:
+ - 5
+ sortOrder: 10
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset.meta
new file mode 100644
index 0000000..64d97a9
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade10.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c4380276ab4a025499ac49c28afc5fe6
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset
new file mode 100644
index 0000000..b4ad9e7
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade11
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 11
+ memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.2"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 300
+ requireUpgradeId: 0a000000
+ effectStatList:
+ - player_manpower
+ effectOpList:
+ - add
+ effectValueList:
+ - 10
+ sortOrder: 11
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset.meta
new file mode 100644
index 0000000..b427aa0
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade11.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cf5af8525b9d7c34da291f64cd18cc5a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset
new file mode 100644
index 0000000..f395916
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade12
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 12
+ memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.3"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 400
+ requireUpgradeId: 070000000a000000
+ effectStatList:
+ - player_manpower
+ effectOpList:
+ - add
+ effectValueList:
+ - 20
+ sortOrder: 12
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset.meta
new file mode 100644
index 0000000..cb3f54f
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade12.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4e85b0527bc16124ba251da975a08b7d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset
new file mode 100644
index 0000000..55adf2c
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade13
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 13
+ memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.1"
+ upgradeCategory: scout
+ upgradeTarget: person
+ mana: 200
+ requireUpgradeId:
+ effectStatList:
+ - player_move_speed
+ effectOpList:
+ - mul
+ effectValueList:
+ - 1.1
+ sortOrder: 13
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset.meta
new file mode 100644
index 0000000..968928e
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade13.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b97eb48c01c4c5b449497d8f3657921e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset
new file mode 100644
index 0000000..82869a7
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade14
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 14
+ memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.2"
+ upgradeCategory: scout
+ upgradeTarget: person
+ mana: 300
+ requireUpgradeId: 0d000000
+ effectStatList:
+ - player_move_speed
+ effectOpList:
+ - mul
+ effectValueList:
+ - 1.2
+ sortOrder: 14
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset.meta
new file mode 100644
index 0000000..74cffd3
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade14.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e19c880ad7090f2459ce181137ae0d52
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset
new file mode 100644
index 0000000..c8cd64a
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade15
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 15
+ memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.3"
+ upgradeCategory: scout
+ upgradeTarget: person
+ mana: 400
+ requireUpgradeId: 0e000000
+ effectStatList:
+ - player_move_speed
+ effectOpList:
+ - mul
+ effectValueList:
+ - 1.3
+ sortOrder: 15
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset.meta
new file mode 100644
index 0000000..75d88cb
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade15.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e70470dae56a6324485c325baa2a09cd
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset
new file mode 100644
index 0000000..588194a
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade2
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 2
+ memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.2"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 300
+ requireUpgradeId: 01000000
+ effectStatList:
+ - player_max_hp
+ effectOpList:
+ - add
+ effectValueList:
+ - 100
+ sortOrder: 2
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset.meta
new file mode 100644
index 0000000..6e3f78b
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade2.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b6c266c42e14ff843b601a91f2329bea
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset
new file mode 100644
index 0000000..05c2369
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade3
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 3
+ memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.3"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 400
+ requireUpgradeId: 0200000005000000
+ effectStatList:
+ - player_max_hp
+ effectOpList:
+ - add
+ effectValueList:
+ - 150
+ sortOrder: 3
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset.meta
new file mode 100644
index 0000000..658ca8a
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade3.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 19d1eec49f4c40b4983579b5153e6d17
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset
new file mode 100644
index 0000000..cba912e
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade4
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 4
+ memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.1"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 200
+ requireUpgradeId:
+ effectStatList:
+ - player_atk_damage
+ effectOpList:
+ - add
+ effectValueList:
+ - 5
+ sortOrder: 4
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset.meta
new file mode 100644
index 0000000..54a1c7f
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade4.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 753e2ab2fa8922841be9a8d1b10947b7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset
new file mode 100644
index 0000000..724c4a8
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade5
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 5
+ memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.2"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 300
+ requireUpgradeId: 04000000
+ effectStatList:
+ - player_atk_damage
+ effectOpList:
+ - add
+ effectValueList:
+ - 10
+ sortOrder: 5
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset.meta
new file mode 100644
index 0000000..6926132
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade5.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a6714280457a76540a7be17859d22d2d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset
new file mode 100644
index 0000000..d4c158b
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade6
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 6
+ memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.3"
+ upgradeCategory: combat
+ upgradeTarget: person
+ mana: 400
+ requireUpgradeId: 0200000005000000
+ effectStatList:
+ - player_atk_damage
+ effectOpList:
+ - add
+ effectValueList:
+ - 15
+ sortOrder: 6
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset.meta
new file mode 100644
index 0000000..c074f33
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade6.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 88112bf6f5fac2b48b232ccbfba2db39
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset
new file mode 100644
index 0000000..906e07a
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade7
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 7
+ memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.1"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 200
+ requireUpgradeId:
+ effectStatList:
+ - player_capacity
+ effectOpList:
+ - add
+ effectValueList:
+ - 20
+ sortOrder: 7
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset.meta
new file mode 100644
index 0000000..251199d
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade7.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4ab81608eee38814fbf6aa212e1be77f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset
new file mode 100644
index 0000000..95284dd
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade8
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 8
+ memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.2"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 300
+ requireUpgradeId: 07000000
+ effectStatList:
+ - player_capacity
+ effectOpList:
+ - add
+ effectValueList:
+ - 50
+ sortOrder: 8
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset.meta
new file mode 100644
index 0000000..38232bd
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade8.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2d2e1368141991b4094242daed1d2214
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset
new file mode 100644
index 0000000..6062d88
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset
@@ -0,0 +1,27 @@
+%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
+ m_Name: Upgrade9
+ m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
+ id: 9
+ memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.3"
+ upgradeCategory: harvest
+ upgradeTarget: person
+ mana: 400
+ requireUpgradeId: 070000000a000000
+ effectStatList:
+ - player_capacity
+ effectOpList:
+ - add
+ effectValueList:
+ - 100
+ sortOrder: 9
diff --git a/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset.meta b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset.meta
new file mode 100644
index 0000000..ceb31da
--- /dev/null
+++ b/Assets/Resources/Data/ScriptableObjects/Upgrade/Upgrade9.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 07d8f3587bbbbb74e983ee9d0a175e49
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/GameMain.unity b/Assets/Scenes/GameMain.unity
index a8d30b3..ee95fdd 100644
--- a/Assets/Scenes/GameMain.unity
+++ b/Assets/Scenes/GameMain.unity
@@ -2069,7 +2069,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 12780dc9ee390c742b6cbd405e59a916, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.UpgradeDatabase
- _upgradeDataList: []
--- !u!224 &1282800775 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 8873176760615364646, guid: a470599cc0481164ab487ecf39b1ebd0, type: 3}
@@ -3042,6 +3041,10 @@ PrefabInstance:
propertyPath: m_Name
value: Blacksmith
objectReference: {fileID: 0}
+ - target: {fileID: 3769411674882976201, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
+ propertyPath: m_Layer
+ value: 7
+ objectReference: {fileID: 0}
- target: {fileID: 5854748735229546762, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: m_LocalPosition.x
value: 20
@@ -3082,14 +3085,14 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 6864316733236988811, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
+ propertyPath: m_Layer
+ value: 7
+ objectReference: {fileID: 0}
- target: {fileID: 8736618315465008189, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: GlobalObjectIdHash
value: 1738409839
objectReference: {fileID: 0}
- - target: {fileID: 9130994837512732106, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
- propertyPath: m_Convex
- value: 1
- objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
diff --git a/Assets/Scripts/Buildings.meta b/Assets/Scripts/Buildings.meta
new file mode 100644
index 0000000..a222e90
--- /dev/null
+++ b/Assets/Scripts/Buildings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3cdca32e565bc4942912b9bc2233349e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Buildings/Blacksmith.cs b/Assets/Scripts/Buildings/Blacksmith.cs
new file mode 100644
index 0000000..c6397af
--- /dev/null
+++ b/Assets/Scripts/Buildings/Blacksmith.cs
@@ -0,0 +1,126 @@
+using UnityEngine;
+using Unity.Netcode;
+
+namespace Northbound
+{
+ ///
+ /// 블랙스미스 건물 - 업그레이드 구매 가능
+ ///
+ public class Blacksmith : MonoBehaviour, IInteractable
+ {
+ [Header("UI Reference")]
+ [SerializeField] private GameObject _upgradePopupPrefab;
+
+ private GameObject _popupInstance;
+ private UpgradeListPopup _upgradePopup;
+
+ private void Awake()
+ {
+ // 프리팹이 없으면 Resources에서 로드
+ if (_upgradePopupPrefab == null)
+ {
+ _upgradePopupPrefab = Resources.Load("UI/Upgrade/UpgradeListPopup");
+ }
+ }
+
+ #region IInteractable Implementation
+
+ public bool CanInteract(ulong playerId)
+ {
+ return true;
+ }
+
+ public void Interact(ulong playerId)
+ {
+ OpenUpgradePopup(playerId);
+ }
+
+ public string GetInteractionPrompt()
+ {
+ return "[F] 업그레이드";
+ }
+
+ public string GetInteractionAnimation()
+ {
+ return "";
+ }
+
+ public EquipmentData GetEquipmentData()
+ {
+ return null;
+ }
+
+ public Transform GetTransform()
+ {
+ return transform;
+ }
+
+
+
+
+ #endregion
+
+ private void OpenUpgradePopup(ulong playerId)
+ {
+ // 플레이어의 UpgradeManager와 Stats 찾기
+ var playerObj = GetPlayerObject(playerId);
+ if (playerObj == null)
+ {
+ Debug.LogWarning($"[Blacksmith] 플레이어 {playerId}를 찾을 수 없습니다.");
+ return;
+ }
+
+ var upgradeManager = playerObj.GetComponent();
+ var playerStats = playerObj.GetComponent();
+
+ if (upgradeManager == null || playerStats == null)
+ {
+ Debug.LogWarning("[Blacksmith] PlayerUpgradeManager 또는 PlayerStats가 없습니다.");
+ return;
+ }
+
+ // 팝업 생성
+ if (_popupInstance == null && _upgradePopupPrefab != null)
+ {
+ _popupInstance = Instantiate(_upgradePopupPrefab);
+ _upgradePopup = _popupInstance.GetComponent();
+
+ if (_upgradePopup == null)
+ {
+ _upgradePopup = _popupInstance.AddComponent();
+ }
+ }
+
+ // 팝업 초기화 및 열기
+ if (_upgradePopup != null)
+ {
+ _upgradePopup.Initialize(upgradeManager, playerStats);
+ }
+ }
+
+ private GameObject GetPlayerObject(ulong playerId)
+ {
+ if (NetworkManager.Singleton == null) return null;
+
+ // NetworkManager에서 플레이어 오브젝트 찾기
+ foreach (var netObj in NetworkManager.Singleton.SpawnManager.SpawnedObjects.Values)
+ {
+ var controller = netObj.GetComponent();
+ if (controller != null && controller.OwnerPlayerId == playerId)
+ {
+ return netObj.gameObject;
+ }
+ }
+
+ return null;
+ }
+
+ private void OnDestroy()
+ {
+ if (_popupInstance != null)
+ {
+ Destroy(_popupInstance);
+ }
+ }
+ }
+}
diff --git a/Assets/Scripts/Buildings/Blacksmith.cs.meta b/Assets/Scripts/Buildings/Blacksmith.cs.meta
new file mode 100644
index 0000000..8bf32dc
--- /dev/null
+++ b/Assets/Scripts/Buildings/Blacksmith.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 39d108eb3babe48409cc4dfc803dbbe4
\ No newline at end of file
diff --git a/Assets/Scripts/PlayerStats.cs b/Assets/Scripts/PlayerStats.cs
index 9b4b358..2e354a5 100644
--- a/Assets/Scripts/PlayerStats.cs
+++ b/Assets/Scripts/PlayerStats.cs
@@ -140,5 +140,26 @@ namespace Northbound
public void SetBaseAttackRange(float value) => baseAttackRange = value;
#endregion
+
+ ///
+ /// 현재 스탯 정보 출력 (디버그용)
+ ///
+ public void PrintCurrentStats()
+ {
+ Debug.Log($"[PlayerStats] 현재 스탯:\n" +
+ $" Max HP: {GetMaxHp()} (기본: {baseMaxHp})\n" +
+ $" Damage: {GetDamage()} (기본: {baseDamage})\n" +
+ $" Capacity: {GetCapacity()} (기본: {baseCapacity})\n" +
+ $" Manpower: {GetManpower()} (기본: {baseManpower})\n" +
+ $" Move Speed: {GetMoveSpeed()} (기본: {baseMoveSpeed})\n" +
+ $" Sight: {GetSight()} (기본: {baseSight})\n" +
+ $" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})");
+
+ if (_upgradeManager != null)
+ {
+ var ownedIds = _upgradeManager.GetOwnedUpgradeIdList();
+ Debug.Log($"[PlayerStats] 보유 업그레이드 수: {ownedIds.Count}");
+ }
+ }
}
}
diff --git a/Assets/Scripts/PlayerUpgradeManager.cs b/Assets/Scripts/PlayerUpgradeManager.cs
index df42eee..cda84ca 100644
--- a/Assets/Scripts/PlayerUpgradeManager.cs
+++ b/Assets/Scripts/PlayerUpgradeManager.cs
@@ -143,6 +143,10 @@ namespace Northbound
Debug.Log($"[PlayerUpgradeManager] 업그레이드 '{upgrade.memo}' 구매 완료! (ID: {upgradeId})");
+ // 스탯 변경 확인
+ var playerStats = GetComponent();
+ playerStats?.PrintCurrentStats();
+
// 이벤트 발생
OnUpgradePurchased?.Invoke(upgradeId);
}
diff --git a/Assets/Scripts/UI.meta b/Assets/Scripts/UI.meta
new file mode 100644
index 0000000..80901ec
--- /dev/null
+++ b/Assets/Scripts/UI.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 00eb5c70ed6dd1840841026ff5a16805
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/UI/UpgradeListItem.cs b/Assets/Scripts/UI/UpgradeListItem.cs
new file mode 100644
index 0000000..543f386
--- /dev/null
+++ b/Assets/Scripts/UI/UpgradeListItem.cs
@@ -0,0 +1,228 @@
+using System.Collections.Generic;
+using TMPro;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using UnityEngine.UI;
+using Northbound.Data;
+
+namespace Northbound
+{
+ ///
+ /// 업그레이드 리스트 아이템 UI
+ ///
+ public class UpgradeListItem : MonoBehaviour, IPointerClickHandler
+ {
+ [Header("UI References")]
+ [SerializeField] private TextMeshProUGUI _nameText;
+ [SerializeField] private TextMeshProUGUI _costText;
+ [SerializeField] private Transform _effectRowsParent;
+ [SerializeField] private Transform _reqChipsParent;
+ [SerializeField] private Button _purchaseButton;
+ [SerializeField] private GameObject _purchasedOverlay;
+ [SerializeField] private Image _backgroundImage;
+
+ private UpgradeData _upgradeData;
+ private bool _isOwned;
+ private bool _canPurchase;
+ private UpgradeListPopup _parentPopup;
+
+ private Color _normalColor = new Color(1f, 1f, 1f, 0.44f); // 기본 배경색
+ private Color _disabledColor = new Color(0.5f, 0.5f, 0.5f, 0.6f); // 회색
+
+ private void Awake()
+ {
+ if (_purchaseButton == null)
+ {
+ _purchaseButton = GetComponent