diff --git a/Assets/GWConquest/Prefabs/UI/TransportUI/ItemIcon.prefab b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemIcon.prefab index cbbefe6..4a7047f 100644 --- a/Assets/GWConquest/Prefabs/UI/TransportUI/ItemIcon.prefab +++ b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemIcon.prefab @@ -171,8 +171,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b2d51b1b7888cf746a92268bf10b8826, type: 3} m_Name: m_EditorClassIdentifier: + MoveTooltipPrefab: {fileID: 5885765285174699514, guid: c693e51d87d6ee54c821bda6af9f17fe, + type: 3} Icon: {fileID: 6815987390313110545} Amount: {fileID: 6815987389502116016} + CanBeDragged: 0 + ParentUI: {fileID: 0} --- !u!1 &6815987390313110547 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab new file mode 100644 index 0000000..97d4534 --- /dev/null +++ b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab @@ -0,0 +1,1023 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3150862178130180120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3150862178130180123} + - component: {fileID: 3150862178130180101} + - component: {fileID: 3150862178130180122} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3150862178130180123 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3150862178130180120} + 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_Children: [] + m_Father: {fileID: 1147534548431359118} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 9.5, y: 0} + m_SizeDelta: {x: 35, y: 35} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &3150862178130180101 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3150862178130180120} + m_CullTransparentMesh: 0 +--- !u!114 &3150862178130180122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3150862178130180120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 461b4d80f47ed85478b3c190ac7bd4ce, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4563571309134323658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4676743893733563343} + - component: {fileID: 7803059385801980071} + - component: {fileID: 4400483703130240466} + - component: {fileID: 4631521444647384216} + m_Layer: 5 + m_Name: CancelButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4676743893733563343 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4563571309134323658} + 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_Children: [] + m_Father: {fileID: 1147534548431359118} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 183, y: 0} + m_SizeDelta: {x: 22, y: 22} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7803059385801980071 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4563571309134323658} + m_CullTransparentMesh: 0 +--- !u!114 &4400483703130240466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4563571309134323658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ae7fba60423d334b9f1016660fbc2c2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4631521444647384216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4563571309134323658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.83137256, g: 0.83137256, b: 0.83137256, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4400483703130240466} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7503179759056852055} + m_MethodName: Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &6215472106130426624 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3715607954842777930} + - component: {fileID: 7623094209704195385} + - component: {fileID: 5335782987429903609} + - component: {fileID: 6988619373869353424} + m_Layer: 5 + m_Name: ConfirmButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3715607954842777930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6215472106130426624} + 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_Children: [] + m_Father: {fileID: 1147534548431359118} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 150, y: 0} + m_SizeDelta: {x: 26.699219, y: 26.699219} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7623094209704195385 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6215472106130426624} + m_CullTransparentMesh: 0 +--- !u!114 &5335782987429903609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6215472106130426624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a8d34d67f7b157e4480126232bb6931e, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6988619373869353424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6215472106130426624} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.83137256, g: 0.83137256, b: 0.83137256, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5335782987429903609} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7503179759056852055} + m_MethodName: Confirm + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &6223992086677758394 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1453600219530823075} + - component: {fileID: 7807020422118682485} + - component: {fileID: 1373311728473721314} + - component: {fileID: 118477141858192403} + m_Layer: 5 + m_Name: DownArrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1453600219530823075 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6223992086677758394} + m_LocalRotation: {x: -0, y: -0, z: -1, w: 0.0000009536743} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1147534548431359118} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -180.00002} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 120.999985, y: -7.5} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7807020422118682485 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6223992086677758394} + m_CullTransparentMesh: 0 +--- !u!114 &1373311728473721314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6223992086677758394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 69b225ba56c7a7748999b6991955b4d1, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &118477141858192403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6223992086677758394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.83137256, g: 0.83137256, b: 0.83137256, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1373311728473721314} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7503179759056852055} + m_MethodName: ClickArrow + m_Mode: 3 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: -1 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &6316673432709998313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3558998319877859004} + - component: {fileID: 690256172853973856} + - component: {fileID: 1395576920954268865} + - component: {fileID: 7911490503574776888} + m_Layer: 5 + m_Name: UpArrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3558998319877859004 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6316673432709998313} + 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_Children: [] + m_Father: {fileID: 1147534548431359118} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 120.999985, y: 7.5} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &690256172853973856 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6316673432709998313} + m_CullTransparentMesh: 0 +--- !u!114 &1395576920954268865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6316673432709998313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 69b225ba56c7a7748999b6991955b4d1, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7911490503574776888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6316673432709998313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.83137256, g: 0.83137256, b: 0.83137256, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1395576920954268865} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7503179759056852055} + m_MethodName: ClickArrow + m_Mode: 3 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 1 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &7503179759056852055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5885765285174699514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a59da9e4f26fd4498f026a53accf6c5, type: 3} + m_Name: + m_EditorClassIdentifier: + ItemImage: {fileID: 3150862178130180122} + AmountField: {fileID: 8872051988711173649} +--- !u!1001 &2801289546050208766 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1147534548431359118} + m_Modifications: + - target: {fileID: 6773398751726029866, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 6773398751726029866, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751726029866, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 6773398751726029866, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6773398751726029867, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SizeDelta.y + value: -4 + objectReference: {fileID: 0} + - target: {fileID: 6773398751726029867, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751741966316, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751741966322, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SizeDelta.x + value: 56.214027 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SizeDelta.y + value: -26 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 80.5 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747756, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747757, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Name + value: InputField + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Placeholder + value: + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_CharacterLimit + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SelectionColor.b + value: 0.461 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SelectionColor.g + value: 0.461 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_SelectionColor.r + value: 0.461 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_Navigation.m_Mode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 7503179759056852055} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnValueChanged + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 7503179759056852055} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnValueChanged + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnEndEdit.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + propertyPath: m_OnValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7753330027a692f4ea43e0e57ab3dfc0, type: 3} +--- !u!114 &8872051988711173649 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6773398751860747759, guid: 7753330027a692f4ea43e0e57ab3dfc0, + type: 3} + m_PrefabInstance: {fileID: 2801289546050208766} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &7121472750076369627 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3709556431398436641, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_Name + value: ItemMoveTooltip + objectReference: {fileID: 0} + - target: {fileID: 6066937026882375993, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_Color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_SizeDelta.x + value: 209.64856 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_SizeDelta.y + value: 56 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 260.82 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 44.68 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, type: 3} +--- !u!1 &5885765285174699514 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3709556431398436641, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + m_PrefabInstance: {fileID: 7121472750076369627} + m_PrefabAsset: {fileID: 0} +--- !u!224 &1147534548431359118 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7870129596896663125, guid: 8b0edf9c7ac699a4da4b06f9b352ff47, + type: 3} + m_PrefabInstance: {fileID: 7121472750076369627} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab.meta b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab.meta new file mode 100644 index 0000000..468548c --- /dev/null +++ b/Assets/GWConquest/Prefabs/UI/TransportUI/ItemMoveTooltip.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c693e51d87d6ee54c821bda6af9f17fe +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GWConquest/Prefabs/UI/UnitInfoPanel/InfoPanel.prefab b/Assets/GWConquest/Prefabs/UI/UnitInfoPanel/InfoPanel.prefab index 82dec0c..f619eab 100644 --- a/Assets/GWConquest/Prefabs/UI/UnitInfoPanel/InfoPanel.prefab +++ b/Assets/GWConquest/Prefabs/UI/UnitInfoPanel/InfoPanel.prefab @@ -3022,7 +3022,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &254456684739317276 RectTransform: m_ObjectHideFlags: 0 @@ -3252,7 +3252,7 @@ GameObject: - component: {fileID: 5721716189640782176} - component: {fileID: 3212379484969327377} m_Layer: 5 - m_Name: SuppliesBarPanel + m_Name: FoodBarPanel m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -3737,7 +3737,7 @@ GameObject: - component: {fileID: 7983451911964343991} - component: {fileID: 7710110990975033073} m_Layer: 5 - m_Name: SuppliesBarPanel + m_Name: FuelBarPanel m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4495,7 +4495,7 @@ GameObject: - component: {fileID: 4252897667148605541} - component: {fileID: 8071686238484062919} m_Layer: 5 - m_Name: SuppliesBar + m_Name: FuelBar m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4947,7 +4947,7 @@ GameObject: - component: {fileID: 2648349951139574813} - component: {fileID: 6363806673150807071} m_Layer: 5 - m_Name: SuppliesButton + m_Name: FuelButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5099,7 +5099,7 @@ GameObject: - component: {fileID: 7845435055257312141} - component: {fileID: 8707620671798900726} m_Layer: 5 - m_Name: SuppliesIcon + m_Name: FoodIcon m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5247,7 +5247,7 @@ GameObject: - component: {fileID: 2332433110252633176} - component: {fileID: 4611590753942732807} m_Layer: 5 - m_Name: SuppliesIcon + m_Name: FuelIcon m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5364,6 +5364,10 @@ MonoBehaviour: FormationUnitsTransform: {fileID: 1050217559578958967} FormationUnitsPrefab: {fileID: 6815987390155653563, guid: cfeb7d67ef99a7a48950d76159c22b10, type: 3} + FormationFuelBar: {fileID: 8071686238484062919} + FormationFoodBar: {fileID: 5300546645429047956} + FormationSuppliesBar: {fileID: 7480306143189545121} + IsBattleMenu: 0 --- !u!1 &6391937544300042816 GameObject: m_ObjectHideFlags: 0 @@ -5450,7 +5454,7 @@ GameObject: - component: {fileID: 7645284469128152350} - component: {fileID: 632089545658046527} m_Layer: 5 - m_Name: SuppliesButton + m_Name: FoodButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5680,7 +5684,7 @@ GameObject: - component: {fileID: 1341394783277367771} - component: {fileID: 5300546645429047956} m_Layer: 5 - m_Name: SuppliesBar + m_Name: FoodBar m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/GWConquest/Resources/Database/Ships.csv b/Assets/GWConquest/Resources/Database/Ships.csv index f358c6e..4b8878c 100644 --- a/Assets/GWConquest/Resources/Database/Ships.csv +++ b/Assets/GWConquest/Resources/Database/Ships.csv @@ -1,49 +1,49 @@ -Full Name,Short Name,Unit Type,Hitpoints,Shields,Shield Regeneration,Attack Count,Damage,Penetration,Accuracy,Armour,Evasion,Movement,Attack Range,Equipment Slots,Inventory Slots,Morale,Build Time,Credit Upkeep,Food Upkeep,Min Factory Tier,S-P Transporter,Boarding Ships,Fighter Bomber Capacitiy,Description,Credit Cost,Recruit Cost,Ammo Cost,Fuel Cost -,,,,,,,,,,,,,,,,,in sec,pro sec,pro sec,,,,,,,,, -Strike Craft,StrikeCraft,Ship,100,30,1,1,10,1,0.9,0,0.1,5,1,1,6,10,10,2,2,1,,,,,200,10,10,10 -Frigate,Frigate,Ship,200,100,1,2/4,20/5,2/0,0.9/0.8,1,0,4,1,2,6,10,10,2,2,3,,,,,200,10,10,10 -Escort Frigate,EscortFrigate,Ship,180,100,1,1/6,20/10,2/0,0.9/0.8,1,0,5,1,3,6,10,10,2,2,3,,,,,200,10,10,10 -Cruiser,Cruiser,Ship,300,150,2,3/2/3,35/15/8,3/2/0,0.9/0.9/0.8,2,0,3,1,2,6,10,10,2,2,3,,,,,200,10,10,10 -Heavy Cruiser,HeavyCruiser,Ship,350,175,2,3/2/2,40/15/8,3/2/0,0.9/0.9/0.8,2,0,3,1,3,6,10,10,2,2,3,,,,,200,10,10,10 -Destroyer,Destroyer,Ship,500,250,2,2/3/2,60/30/10,4/3/0,0.9/0.9/0.8,3,0,2.5,2,4,6,10,10,2,2,3,,,,,200,10,10,10 -Battleship,Battleship,Ship,1000,600,3,2/2/4/4,80/50/30/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,2,2,4,6,10,10,2,2,1,,,,,200,10,10,10 -Battleship,Battleship2,Ship,1000,600,3,2/2/4/4,80/50/30/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,2,2,4,6,10,10,2,2,1,,,,,200,10,10,10 -Dreadnought,Dreadnought,Ship,1800,1000,3,2/2/5/5,120/70/50/20,5/5/3/0,1.0/0.9/0.8/0.8,5,0,1.5,3,5,6,10,10,2,2,1,,,,,200,10,10,10 -Dreadnought,Dreadnought2,Ship,1800,1000,3,2/2/5/5,120/70/50/20,5/5/3/0,1.0/0.9/0.8/0.8,5,0,1.5,3,5,6,10,10,2,2,1,,,,,200,10,10,10 -Transport Frigate,TransportFrigate,Ship,200,100,1,2,5,0,0.8,1,0,4,1,1,6,10,10,2,2,2,,,,,200,10,10,10 -Transport Cruiser,TransportCruiser,Ship,300,150,1,1/2,20/5,2/0,0.9/0.8,2,0,3,1,1,6,10,10,2,2,3,,,,,200,10,10,10 -Transport Hauler,TransportHauler,Ship,500,250,2,2/4,25/5,2/0,0.9/0.8,3,0,2,1,1,6,10,10,2,2,3,,,,,,,, -Light Carrier,LightCarrier,Ship,200,100,1,2,5,0,0.8,2,0,4,1,1,6,10,10,2,2,3,,,,,,,, -Medium Carrier,MediumCarrier,Ship,300,150,2,1/2,20/5,2/0,0.9/0.8,2,0,3,1,1,6,10,10,2,2,3,,,,,,,, -Heavy Carrier,HeavyCarrier,Ship,500,250,3,2/4,25/5,2/0,0.9/0.8,3,0,2,1,1,6,10,10,2,2,3,,,,,,,, -Escort Carrier,EscortCarrier,Ship,250,110,2,1/4,20/5,2/0,0.9/0.8,2,0,5,1,1,6,10,10,2,2,1,,,,,200,10,10,10 -Fighter Squadron,FighterSquadron,Squadron,10,0,0,4,4,0,0.8,0,0.6,6,1,0,0,10,11,3,3,2,,,,,,,, -Bomber Squadron,BomberSquadron,Squadron,15,0,0,4,30,3,0.4,0,0.5,5,1,0,0,10,12,4,4,3,,,,,,,, -Advanced Fighter Squadron,AdvancedFighterSquadron,Squadron,20,0,0,6,9,0,0.9,0,0.7,6,1,0,0,10,13,5,5,4,,,,,,,, -Advanced Bomber Squadron,AdvancedBomberSquadron,Squadron,25,0,0,6,50,4,0.6,0,0.6,5,1,0,0,10,14,6,6,5,,,,,,,, -Fighter-Bomber Squadron,FighterBomberSquadron,Squadron,20,0,0,3/3,6/40,0/3,0.9/0.5,0,0.6,5,1,0,0,10,15,7,7,6,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wythler:,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wythler Attack Squadron,WythlerAttackSquadron,Squadron,25,0,0,6,50,4,0.6,0,0.6,5,1,0,0,10,,,,,,,,,,,, -Silverblade-Class Strike Craft,Silverblade-Class Strike Craft,Ship,200,140,2,1,15,1,0.9,0,0.1,6,1,4,6,10,10,2,2,1,,,,,,,, -Stormlance-Class Escort Frigate,Stormlance-Class Escort Frigate,Ship,300,240,2,1/6,25/15,2/0,0.9/0.8,1,0.1,6,1,4,6,10,10,2,2,3,,,,,,,, -Goldstar-Class Destroyer,Goldstar-Class Destroyer,Ship,500,300,3,2/3/2,65/35/15,4/3/0,0.9/0.9/0.8,3,0,4,2,4,6,10,10,2,2,3,,,,,,,, -Kyzagan-Class Heavy Destroyer,Kyzagan-Class Heavy Destroyer,Ship,750,300,3,2/3/2,65/35/15,4/3/0,0.9/0.9/0.8,3,0,3,2,4,6,10,10,2,2,3,,,,,,,, -Keshig-Class Battleship,Keshig-Class Battleship,Ship,1000,600,4,2/2/4/4,85/55/35/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,3,2,4,6,10,10,2,2,1,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Republic:,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Trailhunter-Class,,Squadron,,,,,,,,,,,,,,,,,,,,,,,,,, -Veilslicer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -Veilscimmer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -Voidrider-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -Voidbreaker-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -Starjumper-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -Starfarer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Rokurant:,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Collossus (Transport),Collossus,Ship,800,300,2,3/2/3,35/15/8,3/2/0,0.9/0.9/0.8,4,0,1,1,4,6,,10,2,2,1,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Exan:,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Deodyle,,,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"Javelin, Blade, Dagger, Spear, Pilum, Halberd, Stilett",,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file +Full Name,Short Name,Unit Type,Hitpoints,Shields,Shield Regeneration,Attack Count,Damage,Penetration,Accuracy,Armour,Evasion,Movement,Attack Range,Equipment Slots,Inventory Slots,Morale,Fuel Capacity,Food Capacity,Supplies Capacity,Build Time,Credit Upkeep,Food Upkeep,Min Factory Tier,S-P Transporter,Boarding Ships,Fighter Bomber Capacitiy,Description,Credit Cost,Recruit Cost,Ammo Cost,Fuel Cost +,,,,,,,,,,,,,,,,,,,,in sec,pro sec,pro sec,,,,,,,,, +Strike Craft,StrikeCraft,Ship,100,30,1,1,10,1,0.9,0,0.1,5,1,1,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Frigate,Frigate,Ship,200,100,1,2/4,20/5,2/0,0.9/0.8,1,0,4,1,2,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Escort Frigate,EscortFrigate,Ship,180,100,1,1/6,20/10,2/0,0.9/0.8,1,0,5,1,3,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Cruiser,Cruiser,Ship,300,150,2,3/2/3,35/15/8,3/2/0,0.9/0.9/0.8,2,0,3,1,2,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Heavy Cruiser,HeavyCruiser,Ship,350,175,2,3/2/2,40/15/8,3/2/0,0.9/0.9/0.8,2,0,3,1,3,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Destroyer,Destroyer,Ship,500,250,2,2/3/2,60/30/10,4/3/0,0.9/0.9/0.8,3,0,2.5,2,4,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Battleship,Battleship,Ship,1000,600,3,2/2/4/4,80/50/30/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,2,2,4,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Battleship,Battleship2,Ship,1000,600,3,2/2/4/4,80/50/30/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,2,2,4,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Dreadnought,Dreadnought,Ship,1800,1000,3,2/2/5/5,120/70/50/20,5/5/3/0,1.0/0.9/0.8/0.8,5,0,1.5,3,5,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Dreadnought,Dreadnought2,Ship,1800,1000,3,2/2/5/5,120/70/50/20,5/5/3/0,1.0/0.9/0.8/0.8,5,0,1.5,3,5,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Transport Frigate,TransportFrigate,Ship,200,100,1,2,5,0,0.8,1,0,4,1,1,6,10,100,100,100,10,2,2,2,,,,,200,10,10,10 +Transport Cruiser,TransportCruiser,Ship,300,150,1,1/2,20/5,2/0,0.9/0.8,2,0,3,1,1,6,10,100,100,100,10,2,2,3,,,,,200,10,10,10 +Transport Hauler,TransportHauler,Ship,500,250,2,2/4,25/5,2/0,0.9/0.8,3,0,2,1,1,6,10,100,100,100,10,2,2,3,,,,,,,, +Light Carrier,LightCarrier,Ship,200,100,1,2,5,0,0.8,2,0,4,1,1,6,10,100,100,100,10,2,2,3,,,,,,,, +Medium Carrier,MediumCarrier,Ship,300,150,2,1/2,20/5,2/0,0.9/0.8,2,0,3,1,1,6,10,100,100,100,10,2,2,3,,,,,,,, +Heavy Carrier,HeavyCarrier,Ship,500,250,3,2/4,25/5,2/0,0.9/0.8,3,0,2,1,1,6,10,100,100,100,10,2,2,3,,,,,,,, +Escort Carrier,EscortCarrier,Ship,250,110,2,1/4,20/5,2/0,0.9/0.8,2,0,5,1,1,6,10,100,100,100,10,2,2,1,,,,,200,10,10,10 +Fighter Squadron,FighterSquadron,Squadron,10,0,0,4,4,0,0.8,0,0.8,6,1,0,0,10,100,100,100,11,3,3,2,,,,,,,, +Bomber Squadron,BomberSquadron,Squadron,15,0,0,4,30,3,0.4,0,0.7,5,1,0,0,10,100,100,100,12,4,4,3,,,,,,,, +Advanced Fighter Squadron,AdvancedFighterSquadron,Squadron,20,0,0,6,9,0,0.9,0,0.9,6,1,0,0,10,100,100,100,13,5,5,4,,,,,,,, +Advanced Bomber Squadron,AdvancedBomberSquadron,Squadron,25,0,0,6,50,4,0.6,0,0.8,5,1,0,0,10,100,100,100,14,6,6,5,,,,,,,, +Fighter-Bomber Squadron,FighterBomberSquadron,Squadron,20,0,0,3/3,6/40,0/3,0.9/0.5,0,0.8,5,1,0,0,10,100,100,100,15,7,7,6,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wythler:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wythler Attack Squadron,WythlerAttackSquadron,Squadron,25,0,0,6,50,4,0.6,0,0.6,5,1,0,0,10,100,100,100,,,,,,,,,,,, +Silverblade-Class Strike Craft,Silverblade-Class Strike Craft,Ship,200,140,2,1,15,1,0.9,0,0.1,6,1,4,6,10,100,100,100,10,2,2,1,,,,,,,, +Stormlance-Class Escort Frigate,Stormlance-Class Escort Frigate,Ship,300,240,2,1/6,25/15,2/0,0.9/0.8,1,0.1,6,1,4,6,10,100,100,100,10,2,2,3,,,,,,,, +Goldstar-Class Destroyer,Goldstar-Class Destroyer,Ship,500,300,3,2/3/2,65/35/15,4/3/0,0.9/0.9/0.8,3,0,4,2,4,6,10,100,100,100,10,2,2,3,,,,,,,, +Kyzagan-Class Heavy Destroyer,Kyzagan-Class Heavy Destroyer,Ship,750,300,3,2/3/2,65/35/15,4/3/0,0.9/0.9/0.8,3,0,3,2,4,6,10,100,100,100,10,2,2,3,,,,,,,, +Keshig-Class Battleship,Keshig-Class Battleship,Ship,1000,600,4,2/2/4/4,85/55/35/15,5/4/3/0,0.9/0.9/0.8/0.8,4,0,3,2,4,6,10,100,100,100,10,2,2,1,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Republic:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Trailhunter-Class,,Squadron,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Veilslicer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Veilscimmer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Voidrider-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Voidbreaker-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Starjumper-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Starfarer-Class,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Rokurant:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Collossus (Transport),Collossus,Ship,800,300,2,3/2/3,35/15/8,3/2/0,0.9/0.9/0.8,4,0,1,1,4,6,10,100,100,100,10,2,2,1,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Exan:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Deodyle,,Ship,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"Javelin, Blade, Dagger, Spear, Pilum, Halberd, Stilett",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/Assets/GWConquest/Resources/Database/Units.csv b/Assets/GWConquest/Resources/Database/Units.csv index e0ca67e..3783481 100644 --- a/Assets/GWConquest/Resources/Database/Units.csv +++ b/Assets/GWConquest/Resources/Database/Units.csv @@ -1,176 +1,176 @@ -Full Name,Short Name,Factory Type,Unit Type,Hitpoints,Attack Count,Damage,Penetration,Accuracy,Armour,Shields,Shield Regeneration,Evasion,Movement,Equipment Slots,Inventory Slots,Morale,Defence Bonus,Abilities,Credit Cost,Recruit Cost,Ammo Cost,Fuel Cost,Build Time,Credit Upkeep,Food Upkeep,Description -Anti Tank Gun,AntiTankGun,Armour,Cannon,30,1,18,5,0.8,1,0,0,0,0.5,2,0,10,,,,,,,1,,, -Artillery Gun,ArtilleryGun,Armour,Artillery,24,1,22,1,0.4,1,0,0,0,0.5,2,0,10,,,,,,,1,,, -Artillery Tank,ArtilleryTank,Armour,Artillery,60,1,22,1,0.5,1,0,0,0,3,2,0,10,,,,,,,1,,, -Flak Cannon,FlakCannon,Armour,Cannon,20,6,5,0.5,0.7,1,0,0,0,0.5,2,0,10,,,,,,,1,,, -Flak Truck,FlakTruck,Armour,Vehicle,20,5,3,2,0.6,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Tekki Truck,TekkiTruck,City,Vehicle,20,1,6,2,0.4,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Anti Tank Truck,AntiTankTruck,Armour,Vehicle,20,1,8,3,0.7,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Flak Halftrack,FlakHalftrack,Armour,Vehicle,20,5,5,0.5,0.65,1,0,0,0,3,2,0,10,,,,,,,1,,, -Heavy Anti Tank Gun,HeavyAntiTankGun,Armour,Cannon,40,1,25,6,0.8,1,0,0,0,0.3,2,0,10,,,,,,,1,,, -Heavy Artillery Gun,HeavyArtilleryGun,Armour,Cannon,35,1,30,1.5,0.4,1,0,0,0,0.3,2,0,10,,,,,,,1,,, -Heavy Rocket Artillery,HeavyRocketArtillery,Armour,Artillery,35,3,20,1.5,0.18,1,0,0,0,0.3,2,0,10,,,,,,,1,,, -Heavy Tank,HeavyTank,Armour,Vehicle,120,1/4,15/4,4/2,0.6/0.6,4,0,0,0,2.5,2,0,10,,,1600,,,,1,,, -Light Anti Tank Gun,LightAntiTankGun,Armour,Cannon,20,2,8,3,0.7,1,0,0,0,0.5,2,0,10,,,,,,,1,,, -Light Artillery Gun,LightArtilleryGun,Armour,Cannon,20,2,12,1,0.45,1,0,0,0,0.5,2,0,10,,,,,,,1,,, -Light Tank,LightTank,Armour,Vehicle,60,3/5,5/4,2/1,0.6/0.6,2,0,0,0,3,2,0,10,,,1000,,,,1,,, -Medium Tank,MediumTank,Armour,Vehicle,100,2/5,10/4,3/1,0.6/0.6,3,0,0,0,3,2,0,10,,,1200,,,,1,,, -Rocket Artillery,RocketArtillery,Armour,Artillery,10,3,14,1,0.2,0,0,0,0,0.5,2,0,10,,,,,,,1,,, -Scout Vehicle,ScoutVehicle,Armour,Vehicle,40,4,4,1,0.7,1,0,0,0.3,5,2,0,10,,,,,,,1,,, -Super Heavy Artillery Gun,SuperHeavyArtilleryGun,Armour,Artillery,40,1,50,2,0.3,2,0,0,0,0.2,2,0,10,,,,,,,1,,, -Super Heavy Tank,SuperHeavyTank,Armour,Vehicle,150,1/3,20/4,5/2,0.6/0.6,5,0,0,0,2,2,0,10,,,2400,,,,1,,, -Support Vehicle,SupportVehicle,Armour,Vehicle,20,1,1,2,0.7,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Tankhunter,Tankhunter,Armour,Vehicle,80,1,12,2,0.7,0.5,0,0,0,2,2,0,10,,,1200,,,,1,,, -Transport Truck,TransportTruck,Armour,Vehicle,20,0,0,0,0,1,0,0,0,4,2,0,10,,,,,,,1,,, -Conscripts,Conscripts,City,Infantry,10,1,3,0,0.4,0,0,0,0,1,2,0,10,1,,300,5,2,,30,,,"These soldiers were pressed into service by the military authorities and armed only with subpar equipment. Consequently, their morale is quite low and they should not be expected to fight very hard." -Militia,Militia,City,Infantry,10,1,3,0,0.4,0,0,0,0,1,2,0,10,1,,100,5,0,,20,,,"Ordinary citizens defending their homeland, armed with everything that could be scrounged from storage. They are only rudimentarily trained and will not pose a real threat to any sizable force." -Breacher Squad,BreacherSquad,Infantry,Infantry,35,2,4,0.3,0.5,0.5,0,0,0,0.8,2,0,10,,,,,,,1,,, -Commando Unit,CommandoUnit,Infantry,Infantry,35,1/1,8/4,1/0.3,0.7/0.7,0.3,0,0,0.5,2,2,0,10,,stealth II,,,,,1,,, -Demolition Squad,DemolitionSquad,Infantry,Infantry,15,1,4,0,0.5,0.3,0,0,0,1,2,0,10,,,,,,,1,,, -Grav-Chute Squad,GravChuteSquad,Infantry,Infantry,15,1,4,0,0.5,0,0,0,0.2,2,2,0,10,,,,,,,1,,, -Heavy Infantry,HeavyInfantry,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,1,,,,,,1,,, -Heavy Mountain Brigade,HeavyMountainBrigade,Infantry,Infantry,35,2,2,0,0.4,0.3,0,0,0,0.8,2,0,10,,,,,,,1,,, -Light Infantry,LightInfantry,Infantry,Infantry,15,1,4,0,0.5,0,0,0,0,1.2,2,0,10,1,,,,,,1,,, -Marine Squad,MarineSquad,Infantry,Infantry,20,1,4,0,0.5,0,0,0,0,1,2,0,10,,stationson,,,,,1,,, -Mountain Brigade,MountainBrigade,Infantry,Infantry,35,2,2,0,0.4,0,0,0,0,1,2,0,10,,,,,,,1,,, -Pioneer Squad,PioneerSquad,Infantry,Infantry,35,1,2,0,0.5,0.5,0,0,0,1.2,2,0,10,2,,,,,,1,,, -Sniper Squad,SniperSquad,Infantry,Infantry,15,1,5,0.5,0.9,0,0,0,0.2,1.2,2,0,10,,stealth I,,,,,1,,, -Standard Infantry,StandardInfantry,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,1,,, -Tank Hunter Squad,TankHunterSquad,Infantry,Infantry,20,1/2,10/2,3/0,0.4/0.6,0.3,0,0,0,0.8,2,0,10,,,,,,,1,,, -Laser Supressor Tank,LaserSupressorTank,Armour,Vehicle,60,6,4,2,0.4,2,0,0,0,3,2,0,10,,,,,,,1,,, -Command Tank,CommandTank,Armour,Vehicle,90,4,4,0.3,0.5,3,0,0,0,3,2,0,10,,,,,,,1,,, -Heavy Command Tank,HeavyCommandTank,Armour,Vehicle,115,4,4,0.3,0.5,4,0,0,0,2,2,0,10,,,,,,,1,,, -Mortar Truck,MortarTruck,Armour,Artillery,20,2,5,1,0.3,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Medic Truck,MedicTruck,Armour,Vehicle,20,0,0,0,0,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Old Transport Tank,OldTransportTank,Armour,Vehicle,75,2,3,0.3,0.6,2.5,0,0,0,3,2,0,10,,,,,,,1,,, -Old Tank,OldTank1,Armour,Vehicle,70,2/5,9/4,2.5/0.5,0.5/0.6,3,0,0,0,2,2,0,10,,,,,,,1,,, -Old Tank,OldTank2,Armour,Vehicle,75,2/5,10/4,3/0.5,0.6/0.6,3,0,0,0,2,2,0,10,,,,,,,1,,, -Old Tank,OldTank3,Armour,Vehicle,80,2/4,11/4,3/0.5,0.7/0.6,3,0,0,0,2,2,0,10,,,,,,,1,,, -Heavy Scout Vehicle,HeavyScoutVehicle,Armour,Vehicle,45,4,5,1,0.65,1.5,0,0,0.25,4.5,2,0,10,,,,,,,1,,, -Transport Vehicle,TransportVehicle,Armour,Vehicle,45,0,0,0,0,0.5,0,0,0,4,2,0,10,,,,,,,1,,, -Light Transport Vehicle,LightTransportVehicle,Armour,Vehicle,40,0,0,0,0,0.45,0,0,0,4.5,2,0,10,,,,,,,1,,, -Old Transport Vehicle,OldTransportVehicle,Armour,Vehicle,35,0,0,0,0,0.4,0,0,0,3.5,2,0,10,,,,,,,1,,, -Medic Squad,MedicSquad,Infantry,Infantry,10,1,1,0,0.5,0,0,0,0,1,2,0,10,,,,,,,1,,, -Tank Crew,TankCrew,Infantry,Infantry,10,1,1,0,0.5,0,0,0,0,1,2,0,10,,,,,,,1,,, -Fast Attack Vehicle,FastAttackVehicle,Armour,Vehicle,25,3,5,1.5,0.55,1.45,0,0,0.2,4.5,2,0,10,,,,,,,1,,, -Spy,Spy,Infantry,Infantry,5,0,0,0,0,0,0,0,0,1,2,0,10,,,,,,,1,,, -Hazard Squad,HazardSquad,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,0.8,2,0,10,,,,,,,1,,, -Heavy Hazard Squad,HeavyHazardSquad,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.6,2,0,10,,,,,,,1,,, -Mortar Squad,MortarSquad,Infantry,Artillery,30,2,7,0.5,0.35,1,0,0,0,0.8,2,0,10,,,,,,,1,,, -Heavy Flak Cannon,HeavyFlakCannon,Armour,Cannon,40,5,6,1,0.7,1,0,0,0,0.3,2,0,10,,,,,,,1,,, -Light Universal Carrier,LightUniversalCarrier,Armour,Vehicle,15,0,0,0,0,0.3,0,0,0.1,,2,0,10,,,,,,,,,, -Anti Material Rifle Squad,AntiMaterialRifleSquad,Infantry,Infantry,15,1,5,2,0.75,0,0,0,0.2,1.2,2,0,10,,,,,,,,,, -Light Attack Fighter,LightAttackFighter,Armour,Aircraft,25,0,0,0,0,0,0,0,0.7,,2,0,10,,,,,,,,,, -Command Squad,OfficerSquad,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,0.8,2,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Rokurant,,,,,,,,,,,,,,,,,,,,,,,,,, -Heavy Artillery Tank,RokurantHArtilleryTank,Armour,Artillery,90,1,26,1.5,0.5,3,0,0,0,2,2,0,10,,,,,,,,,, -Siegebreaker Tank,RokurantSiegebreakerTank,Armour,Vehicle,95,1,20,3,0.6,3,0,0,0,2,2,0,10,,,,,,,,,, -Bulk Transporter,RokurantTransporter,Armour,Vehicle,100,2,2,0,0.6,3,0,0,0,1,2,0,10,,,,,,,,,, -Heavy Rocket Vehicle,RokurantRocketVehicle,Armour,Vehicle,60,3,14,1,0.2,0,0,0,0,0.5,2,0,10,,,,,,,,,, -Rokurant Infantry,RokurantInfantry,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,1,,,,,,,,, -Heavy Infantry,RokurantHInfantry,Infantry,Infantry,40,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,1,,,,,,,,, -Storm Pioneers,RokurantStormPioneers,Infantry,Infantry,45,1,2,0,0.5,0.55,0,0,0,1.5,2,0,10,2,,,,,,,,, -Transport Truck,RokurantTransportTruck,Armour,Vehicle,50,0,0,0,0,0.5,0,0,0,4,2,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Voteine,,,,,,,,,,,,,,,,,,,,,,,,,, -Fast Assault Tank,VoteineFastAssaultTank,Armour,Vehicle,40,1/2,8/3,3/1,0.75/0.8,1,1,1,0.35,5,2,0,10,,,,,,,,,, -Hover Tank,VoteineHoverTank,Armour,Vehicle,45,3,5,1.5,0.8,2,1,1,0.15,5,2,0,10,,,,,,,,,, -Light Hover Tank,VoteineLHoverTank,Armour,Vehicle,40,3,5,1.5,0.75,1.45,0,1,0.3,5,2,0,10,,,,,,,,,, -Voteine Infantry,VoteineInfantry,Infantry,Infantry,32,2,4,0,0.6,0.4,0,0,0,0.8,3,0,10,,,,,,,,,, -Voteine Infantry Elite,VoteineInfantryElite,Infantry,Infantry,38,3,4,0,0.6,0.4,0,0,0,0.8,3,0,10,,,,,,,,,, -Voteine Drones,VoteineDrones,Infantry,Infantry,8,1,1,0,0.4,0.3,0,0,0.75,1,0,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Whythler,,,,,,,,,,,,,,,,,,,,,,,,,, -Husain Jet-Bike Squad,WythlerJetBikeSquad1,Armour,Vehicle,60,4,4,2,0.8,1,2,1,0.6,6,2,0,10,,,,,,,,,, -Winhali Jet-Bike Squad,WythlerJetBikeSquad2,Armour,Vehicle,60,2/4,4/3,2/0.5,0.8/0.7,1,2,1,0.65,6,2,0,10,,,,,,,,,, -Lenphra Jet-Bike Squad,WythlerJetBikeSquad3,Armour,Vehicle,60,2/1,4/10,2/4,0.8/0.7,1,2,1,0.55,6,2,0,10,,,,,,,,,, -Light Attack Speeder,WythlerLAttackSpeeder,Armour,Vehicle,70,3,4,4,0.85,2,2,2,0.3,5,2,0,10,,,,,,,,,, -Attack Speeder,WythlerAttackSpeeder,Armour,Vehicle,90,1/3,12/4,4/2,0.85/0.7,2,2,2,0.35,4,2,0,10,,,,,,,,,, -Heavy Attack Speeder,WythlerHAttackSpeeder,Armour,Vehicle,100,1/4,18/4,5/2,0.85/0.7,2.5,3,2,0.2,4,2,0,10,,,,,,,,,, -Heavy Transport Speeder,WythlerHTransportSpeeder,Armour,Vehicle,90,3,4,4,0.85,3,3,2,0.2,4,2,0,10,,,,,,,,,, -Transport Vehicle,WythlerTransportVehicle,Armour,Vehicle,75,2,1,1,0.7,0.75,0,0,0,2,2,0,10,,,,,,,,,, -Tankhunter,WythlerTankhunter,Armour,Vehicle,60,1,11,2,0.65,0.5,0,0,0,2,2,0,10,,,1200,,,,,,, -Wythler Squad,WythlerSquad,Infantry,Infantry,45,3/4,4/3,2/0.5,0.9/0.8,1,2,1,0,,,,10,,,,,,,,,, -Power Armour Squad,PowerArmourSquad,Infantry,Infantry,45,3/4,4/3,2/0.5,0.9/0.8,1,2,1,0,0.8,2,0,10,1,,,,,,,,, -Rabble,Rabble,City,Infantry,15,1,4,0,0.5,0,0,0,0,1.2,2,0,10,1,,,,,,,,, -Wyth Palace Guard,WythPalaceGuard,Infantry,Infantry,40,2,3,0,0.8,1,1,2.5,0,0.8,2,0,10,1,,,,,,,,, -Assassins,Assassins,Infantry,Infantry,5,1,10,0,0.3,0.3,1,2.5,0.2,2,,0,10,,stealth I,,,,,,,, -Disciplinary Master,WythlerDisciplinaryMaster,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,1,,0,10,,,,,,,,,, -Charnal Guard,CharnalGuard,Infantry,Infantry,60,2,2,0,0.9,0.3,0,0,0,1,,0,10,,,,,,,,,, -Hushtan Ginetiphracts,Ginetiphracts,Infantry,Infantry,20,1,4,0,0.5,0,0,0,0,1,2,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Republic Remnants,,,,,,,,,,,,,,,,,,,,,,,,,, -Republic Wardens,RepublicWardens,Infantry,Infantry,40,3,3,0,0.8,1,0,0,0,0.8,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Elysia,,,,,,,,,,,,,,,,,,,,,,,,,, -Elysian Light Commando Vehicle,ElysiaLCommandoVehicle,Armour,Vehicle,30,4,5,1.5,0.65,1.75,0,0,0.2,4.5,2,0,10,,,,,,,,,, -Elysian Assault APC,ElysianAssaultAPC,Armour,Vehicle,45,3,4,2,0.65,2,0,0,0.2,4.5,2,0,10,,,,,,,,,, -Elysian Oathsworn Squad,ElysianOathswornSquad,Infantry,Infantry,35,3,3,0,0.65,0.5,0,0,0,1,2,0,10,1,,,,,,,,, -Elysian Light Mechs,ElysianLightMechs,Armour,Vehicle,45,3/4,3/2,2/0.5,0.9/0.8,1,0,0,0,2,2,0,10,1,,,,,,,,, -Elysian Jet Infantry,ElysianJetInfantry,Infantry,Infantry,30,2,3,0,0.65,0.5,0,0,0.2,2,2,0,10,,,,,,,,,, -Elysian Recon Infantry,ElysianReconInfantry,Infantry,Infantry,35,1/1,8/4,1/0.3,0.7/0.7,0.3,0,0,0.5,2,2,0,10,,stealth II,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Yar-Kassy,,,,,,,,,,,,,,,,,,,,,,,,,, -Dervish Assault Tank,YarkassyAssaultTank,Armour,Vehicle,90,1/2,8/3,3/1,0.75/0.8,1,1,1,0.35,4.5,2,0,10,,,,,,,,,, -Desert Raider Squad,YarkassyDesertRaiderSquad,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,1,,,,,,,,, -Elite Marksmen Squad,YarkassyEliteMarksmen,Infantry,Infantry,18,1,5,0.5,0.95,0,0,0,0.25,1.3,2,0,10,,stealth I,,,,,,,, -Ghar Haclem Ark'venuur Serpents,YarkassySerpents,Infantry,Infantry,25,3,2,0.5,0.45,0,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Arca,,,,,,,,,,,,,,,,,,,,,,,,,, -Scum,ArcaScum,City,Infantry,20,2,1,0,0.25,0,0,0,0,1.1,1,0,10,0,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Zami,,,,,,,,,,,,,,,,,,,,,,,,,, -Cryo-Clone Squad,ZamiCryoCloneSquad,Infantry,Infantry,25,2,2,0,0.75,0,0,0,0,1.5,2,0,10,0,,,,,,,,, -Immortals Cryo-Clone Squad,ImmortalsCryo-CloneSquad,Infantry,Infantry,35,3,2,0,0.8,0.55,0,0,0,1.5,2,0,10,0,,,,,,,,, -Zami War Tripod,ZamiWarTripod,Armour,Vehicle,100,2/6,4/1,2.5/0,0.8/0.8,2.5,2,1,0,2,2,0,10,,,,,,,,,, -Zami War Strider,ZamiWarStrider,Armour,Vehicle,85,1/7,4/1,2.5/0,0.75/0.75,2,2,1,0,2,2,0,10,,,,,,,,,, -Conscripted Miner Slaves,ConscriptedMinerSlaves,City,Infantry,12,2,3,0,0.45,0,0,0,0,1.2,2,0,10,1,,,,,,,,, -Satyr-9 Varanguard,Satyr-9Varanguard,City,Infantry,40,3,3,0.5,0.9,1,0,0,0,1,2,0,10,1,,,,,,,,, -Krioss Ravager Pack,KriossRavagerPack,Infantry,Infantry,50,5,2,1,0.45,0.75,0,0,1,5,3,0,10,,,,,,,,,, -Snagaa Newborn,SnagaaNewborn,Infantry,Infantry,15,2,1,0,0.3,0,0,0,0,1.5,0,0,10,,,,,,,,,, -Axa Axa,AxaAxa,Infantry,Vehicle,45,4,1,0,0.7,0.5,1,2.5,0,1,0,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Stuntreen,,,,,,,,,,,,,,,,,,,,,,,,,, -Headtaker Commando,HeadtakerCommando,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Hareen Cari Immortals,HareenCariImmortals,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Exan,,,,,,,,,,,,,,,,,,,,,,,,,, -Clan Warriors,ExanClanWarriors,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Headtakers,ExanHeadtakers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Methaphor,,,,,,,,,,,,,,,,,,,,,,,,,, -Republican Guard,MethaphorRepublicanGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Green Guard (Elite Mountain Troops),MethaphorGreenGuard,Infantry,Infantry,40,2,2,0,0.6,0,0,0,0,1,3,0,10,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Noser,,,,,,,,,,,,,,,,,,,,,,,,,, -Royal Guard,NoserRoyalGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Stalker Squad,NoserStalkerSquad,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Caer Bannoq,,,,,,,,,,,,,,,,,,,,,,,,,, -Realm Hunters,CaerBannoqRealmHunters,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Keepers of Secrets,CaerBannoqKeepers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Paladins,CaerBannoqPaladins,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Seekers,CaerBannoqSeekers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Vesparus,,,,,,,,,,,,,,,,,,,,,,,,,, -Vesparusian Militia,VesparusMilitia,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Freekorps Caine,VesparusFreekorps,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Inobria,,,,,,,,,,,,,,,,,,,,,,,,,, -Infantry,InobriaInfantry,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Tunnel Fighter,InobriaTunnelFighter,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Sartorius Rax,,,,,,,,,,,,,,,,,,,,,,,,,, -Infantry,SartoriusInfantry,Infantry,Infantry,22,1,4,0,0.55,0,0,0,0,1,2,0,10,1,,,,,,,,, -Heavy Infantry,SartoriusHeavyInfantry,Infantry,Infantry,32,2,3,0,0.6,0,0,0,0,1,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Spice,,,,,,,,,,,,,,,,,,,,,,,,,, -Longclaw Pack,SpiceLongclawPack,Infantry,Infantry,16,2,3,0,0.6,0,0,0,0,1.4,2,0,10,1,,,,,,,,, -Tunneler Pack,SpiceTunnelerPack,Infantry,Infantry,20,2,3,0,0.6,0,0,0,0,1.4,2,0,10,1,,,,,,,,, -Healer Pack,SpiceHealerPack,Infantry,Infantry,14,2,3,0,0.6,0,0,0,0,1.4,2,0,10,1,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -Amothep,,,,,,,,,,,,,,,,,,,,,,,,,, -Pyramidians,Pyramidians,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, -Spyre Guard,SpyreGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,1,,,,,,,,, \ No newline at end of file +Full Name,Short Name,Factory Type,Unit Type,Hitpoints,Attack Count,Damage,Penetration,Accuracy,Armour,Shields,Shield Regeneration,Evasion,Movement,Equipment Slots,Inventory Slots,Morale,Fuel Capacity,Food Capacity,Supplies Capacity,Defence Bonus,Abilities,Credit Cost,Recruit Cost,Ammo Cost,Fuel Cost,Build Time,Credit Upkeep,Food Upkeep,Description +Anti Tank Gun,AntiTankGun,Armour,Cannon,30,1,18,5,0.8,1,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Artillery Gun,ArtilleryGun,Armour,Artillery,24,1,22,1,0.4,1,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Artillery Tank,ArtilleryTank,Armour,Artillery,60,1,22,1,0.5,1,0,0,0,3,2,0,10,100,100,100,,,,,,,1,,, +Flak Cannon,FlakCannon,Armour,Cannon,20,6,5,0.5,0.7,1,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Flak Truck,FlakTruck,Armour,Vehicle,20,5,3,2,0.6,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Tekki Truck,TekkiTruck,City,Vehicle,20,1,6,2,0.4,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Anti Tank Truck,AntiTankTruck,Armour,Vehicle,20,1,8,3,0.7,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Flak Halftrack,FlakHalftrack,Armour,Vehicle,20,5,5,0.5,0.65,1,0,0,0,3,2,0,10,100,100,100,,,,,,,1,,, +Heavy Anti Tank Gun,HeavyAntiTankGun,Armour,Cannon,40,1,25,6,0.8,1,0,0,0,0.3,2,0,10,100,100,100,,,,,,,1,,, +Heavy Artillery Gun,HeavyArtilleryGun,Armour,Cannon,35,1,30,1.5,0.4,1,0,0,0,0.3,2,0,10,100,100,100,,,,,,,1,,, +Heavy Rocket Artillery,HeavyRocketArtillery,Armour,Artillery,35,3,20,1.5,0.18,1,0,0,0,0.3,2,0,10,100,100,100,,,,,,,1,,, +Heavy Tank,HeavyTank,Armour,Vehicle,120,1/4,15/4,4/2,0.6/0.6,4,0,0,0,2.5,2,0,10,100,100,100,,,1600,,,,1,,, +Light Anti Tank Gun,LightAntiTankGun,Armour,Cannon,20,2,8,3,0.7,1,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Light Artillery Gun,LightArtilleryGun,Armour,Cannon,20,2,12,1,0.45,1,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Light Tank,LightTank,Armour,Vehicle,60,3/5,5/4,2/1,0.6/0.6,2,0,0,0,3,2,0,10,100,100,100,,,1000,,,,1,,, +Medium Tank,MediumTank,Armour,Vehicle,100,2/5,10/4,3/1,0.6/0.6,3,0,0,0,3,2,0,10,100,100,100,,,1200,,,,1,,, +Rocket Artillery,RocketArtillery,Armour,Artillery,10,3,14,1,0.2,0,0,0,0,0.5,2,0,10,100,100,100,,,,,,,1,,, +Scout Vehicle,ScoutVehicle,Armour,Vehicle,40,4,4,1,0.7,1,0,0,0.3,5,2,0,10,100,100,100,,,,,,,1,,, +Super Heavy Artillery Gun,SuperHeavyArtilleryGun,Armour,Artillery,40,1,50,2,0.3,2,0,0,0,0.2,2,0,10,100,100,100,,,,,,,1,,, +Super Heavy Tank,SuperHeavyTank,Armour,Vehicle,150,1/3,20/4,5/2,0.6/0.6,5,0,0,0,2,2,0,10,100,100,100,,,2400,,,,1,,, +Support Vehicle,SupportVehicle,Armour,Vehicle,20,1,1,2,0.7,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Tankhunter,Tankhunter,Armour,Vehicle,80,1,12,2,0.7,0.5,0,0,0,2,2,0,10,100,100,100,,,1200,,,,1,,, +Transport Truck,TransportTruck,Armour,Vehicle,20,0,0,0,0,1,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Conscripts,Conscripts,City,Infantry,10,1,3,0,0.4,0,0,0,0,1,2,0,10,100,100,100,1,,300,5,2,,30,,,"These soldiers were pressed into service by the military authorities and armed only with subpar equipment. Consequently, their morale is quite low and they should not be expected to fight very hard." +Militia,Militia,City,Infantry,10,1,3,0,0.4,0,0,0,0,1,2,0,10,100,100,100,1,,100,5,0,,20,,,"Ordinary citizens defending their homeland, armed with everything that could be scrounged from storage. They are only rudimentarily trained and will not pose a real threat to any sizable force." +Breacher Squad,BreacherSquad,Infantry,Infantry,35,2,4,0.3,0.5,0.5,0,0,0,0.8,2,0,10,100,100,100,,,,,,,1,,, +Commando Unit,CommandoUnit,Infantry,Infantry,35,1/1,8/4,1/0.3,0.7/0.7,0.3,0,0,0.5,2,2,0,10,100,100,100,,stealth II,,,,,1,,, +Demolition Squad,DemolitionSquad,Infantry,Infantry,15,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,,,,,,,1,,, +Grav-Chute Squad,GravChuteSquad,Infantry,Infantry,15,1,4,0,0.5,0,0,0,0.2,2,2,0,10,100,100,100,,,,,,,1,,, +Heavy Infantry,HeavyInfantry,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,100,100,100,1,,,,,,1,,, +Heavy Mountain Brigade,HeavyMountainBrigade,Infantry,Infantry,35,2,2,0,0.4,0.3,0,0,0,0.8,2,0,10,100,100,100,,,,,,,1,,, +Light Infantry,LightInfantry,Infantry,Infantry,15,1,4,0,0.5,0,0,0,0,1.2,2,0,10,100,100,100,1,,,,,,1,,, +Marine Squad,MarineSquad,Infantry,Infantry,20,1,4,0,0.5,0,0,0,0,1,2,0,10,100,100,100,,stationson,,,,,1,,, +Mountain Brigade,MountainBrigade,Infantry,Infantry,35,2,2,0,0.4,0,0,0,0,1,2,0,10,100,100,100,,,,,,,1,,, +Pioneer Squad,PioneerSquad,Infantry,Infantry,35,1,2,0,0.5,0.5,0,0,0,1.2,2,0,10,100,100,100,2,,,,,,1,,, +Sniper Squad,SniperSquad,Infantry,Infantry,15,1,5,0.5,0.9,0,0,0,0.2,1.2,2,0,10,100,100,100,,stealth I,,,,,1,,, +Standard Infantry,StandardInfantry,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,1,,, +Tank Hunter Squad,TankHunterSquad,Infantry,Infantry,20,1/2,10/2,3/0,0.4/0.6,0.3,0,0,0,0.8,2,0,10,100,100,100,,,,,,,1,,, +Laser Supressor Tank,LaserSupressorTank,Armour,Vehicle,60,6,4,2,0.4,2,0,0,0,3,2,0,10,100,100,100,,,,,,,1,,, +Command Tank,CommandTank,Armour,Vehicle,90,4,4,0.3,0.5,3,0,0,0,3,2,0,10,100,100,100,,,,,,,1,,, +Heavy Command Tank,HeavyCommandTank,Armour,Vehicle,115,4,4,0.3,0.5,4,0,0,0,2,2,0,10,100,100,100,,,,,,,1,,, +Mortar Truck,MortarTruck,Armour,Artillery,20,2,5,1,0.3,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Medic Truck,MedicTruck,Armour,Vehicle,20,0,0,0,0,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Old Transport Tank,OldTransportTank,Armour,Vehicle,75,2,3,0.3,0.6,2.5,0,0,0,3,2,0,10,100,100,100,,,,,,,1,,, +Old Tank,OldTank1,Armour,Vehicle,70,2/5,9/4,2.5/0.5,0.5/0.6,3,0,0,0,2,2,0,10,100,100,100,,,,,,,1,,, +Old Tank,OldTank2,Armour,Vehicle,75,2/5,10/4,3/0.5,0.6/0.6,3,0,0,0,2,2,0,10,100,100,100,,,,,,,1,,, +Old Tank,OldTank3,Armour,Vehicle,80,2/4,11/4,3/0.5,0.7/0.6,3,0,0,0,2,2,0,10,100,100,100,,,,,,,1,,, +Heavy Scout Vehicle,HeavyScoutVehicle,Armour,Vehicle,45,4,5,1,0.65,1.5,0,0,0.25,4.5,2,0,10,100,100,100,,,,,,,1,,, +Transport Vehicle,TransportVehicle,Armour,Vehicle,45,0,0,0,0,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,1,,, +Light Transport Vehicle,LightTransportVehicle,Armour,Vehicle,40,0,0,0,0,0.45,0,0,0,4.5,2,0,10,100,100,100,,,,,,,1,,, +Old Transport Vehicle,OldTransportVehicle,Armour,Vehicle,35,0,0,0,0,0.4,0,0,0,3.5,2,0,10,100,100,100,,,,,,,1,,, +Medic Squad,MedicSquad,Infantry,Infantry,10,1,1,0,0.5,0,0,0,0,1,2,0,10,100,100,100,,,,,,,1,,, +Tank Crew,TankCrew,Infantry,Infantry,10,1,1,0,0.5,0,0,0,0,1,2,0,10,100,100,100,,,,,,,1,,, +Fast Attack Vehicle,FastAttackVehicle,Armour,Vehicle,25,3,5,1.5,0.55,1.45,0,0,0.2,4.5,2,0,10,100,100,100,,,,,,,1,,, +Spy,Spy,Infantry,Infantry,5,0,0,0,0,0,0,0,0,1,2,0,10,100,100,100,,,,,,,1,,, +Hazard Squad,HazardSquad,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,0.8,2,0,10,100,100,100,,,,,,,1,,, +Heavy Hazard Squad,HeavyHazardSquad,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.6,2,0,10,100,100,100,,,,,,,1,,, +Mortar Squad,MortarSquad,Infantry,Artillery,30,2,7,0.5,0.35,1,0,0,0,0.8,2,0,10,100,100,100,,,,,,,1,,, +Heavy Flak Cannon,HeavyFlakCannon,Armour,Cannon,40,5,6,1,0.7,1,0,0,0,0.3,2,0,10,100,100,100,,,,,,,1,,, +Light Universal Carrier,LightUniversalCarrier,Armour,Vehicle,15,0,0,0,0,0.3,0,0,0.1,,2,0,10,100,100,100,,,,,,,,,, +Anti Material Rifle Squad,AntiMaterialRifleSquad,Infantry,Infantry,15,1,5,2,0.75,0,0,0,0.2,1.2,2,0,10,100,100,100,,,,,,,,,, +Light Attack Fighter,LightAttackFighter,Armour,Aircraft,25,0,0,0,0,0,0,0,0.7,,2,0,10,100,100,100,,,,,,,,,, +Command Squad,OfficerSquad,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,0.8,2,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Rokurant,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Heavy Artillery Tank,RokurantHArtilleryTank,Armour,Artillery,90,1,26,1.5,0.5,3,0,0,0,2,2,0,10,100,100,100,,,,,,,,,, +Siegebreaker Tank,RokurantSiegebreakerTank,Armour,Vehicle,95,1,20,3,0.6,3,0,0,0,2,2,0,10,100,100,100,,,,,,,,,, +Bulk Transporter,RokurantTransporter,Armour,Vehicle,100,2,2,0,0.6,3,0,0,0,1,2,0,10,100,100,100,,,,,,,,,, +Heavy Rocket Vehicle,RokurantRocketVehicle,Armour,Vehicle,60,3,14,1,0.2,0,0,0,0,0.5,2,0,10,100,100,100,,,,,,,,,, +Rokurant Infantry,RokurantInfantry,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +Heavy Infantry,RokurantHInfantry,Infantry,Infantry,40,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +Storm Pioneers,RokurantStormPioneers,Infantry,Infantry,45,1,2,0,0.5,0.55,0,0,0,1.5,2,0,10,100,100,100,2,,,,,,,,, +Transport Truck,RokurantTransportTruck,Armour,Vehicle,50,0,0,0,0,0.5,0,0,0,4,2,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Voteine,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Fast Assault Tank,VoteineFastAssaultTank,Armour,Vehicle,40,1/2,8/3,3/1,0.75/0.8,1,1,1,0.35,5,2,0,10,100,100,100,,,,,,,,,, +Hover Tank,VoteineHoverTank,Armour,Vehicle,45,3,5,1.5,0.8,2,1,1,0.15,5,2,0,10,100,100,100,,,,,,,,,, +Light Hover Tank,VoteineLHoverTank,Armour,Vehicle,40,3,5,1.5,0.75,1.45,0,1,0.3,5,2,0,10,100,100,100,,,,,,,,,, +Voteine Infantry,VoteineInfantry,Infantry,Infantry,32,2,4,0,0.6,0.4,0,0,0,0.8,3,0,10,100,100,100,,,,,,,,,, +Voteine Infantry Elite,VoteineInfantryElite,Infantry,Infantry,38,3,4,0,0.6,0.4,0,0,0,0.8,3,0,10,100,100,100,,,,,,,,,, +Voteine Drones,VoteineDrones,Infantry,Infantry,8,1,1,0,0.4,0.3,0,0,0.75,1,0,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Whythler,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Husain Jet-Bike Squad,WythlerJetBikeSquad1,Armour,Vehicle,60,4,4,2,0.8,1,2,1,0.6,6,2,0,10,100,100,100,,,,,,,,,, +Winhali Jet-Bike Squad,WythlerJetBikeSquad2,Armour,Vehicle,60,2/4,4/3,2/0.5,0.8/0.7,1,2,1,0.65,6,2,0,10,100,100,100,,,,,,,,,, +Lenphra Jet-Bike Squad,WythlerJetBikeSquad3,Armour,Vehicle,60,2/1,4/10,2/4,0.8/0.7,1,2,1,0.55,6,2,0,10,100,100,100,,,,,,,,,, +Light Attack Speeder,WythlerLAttackSpeeder,Armour,Vehicle,70,3,4,4,0.85,2,2,2,0.3,5,2,0,10,100,100,100,,,,,,,,,, +Attack Speeder,WythlerAttackSpeeder,Armour,Vehicle,90,1/3,12/4,4/2,0.85/0.7,2,2,2,0.35,4,2,0,10,100,100,100,,,,,,,,,, +Heavy Attack Speeder,WythlerHAttackSpeeder,Armour,Vehicle,100,1/4,18/4,5/2,0.85/0.7,2.5,3,2,0.2,4,2,0,10,100,100,100,,,,,,,,,, +Heavy Transport Speeder,WythlerHTransportSpeeder,Armour,Vehicle,90,3,4,4,0.85,3,3,2,0.2,4,2,0,10,100,100,100,,,,,,,,,, +Transport Vehicle,WythlerTransportVehicle,Armour,Vehicle,75,2,1,1,0.7,0.75,0,0,0,2,2,0,10,100,100,100,,,,,,,,,, +Tankhunter,WythlerTankhunter,Armour,Vehicle,60,1,11,2,0.65,0.5,0,0,0,2,2,0,10,100,100,100,,,1200,,,,,,, +Wythler Squad,WythlerSquad,Infantry,Infantry,45,3/4,4/3,2/0.5,0.9/0.8,1,2,1,0,,,,10,100,100,100,,,,,,,,,, +Power Armour Squad,PowerArmourSquad,Infantry,Infantry,45,3/4,4/3,2/0.5,0.9/0.8,1,2,1,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +Rabble,Rabble,City,Infantry,15,1,4,0,0.5,0,0,0,0,1.2,2,0,10,100,100,100,1,,,,,,,,, +Wyth Palace Guard,WythPalaceGuard,Infantry,Infantry,40,2,3,0,0.8,1,1,2.5,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +Assassins,Assassins,Infantry,Infantry,5,1,10,0,0.3,0.3,1,2.5,0.2,2,,0,10,100,100,100,,stealth I,,,,,,,, +Disciplinary Master,WythlerDisciplinaryMaster,Infantry,Infantry,25,1,4,0,0.5,0.3,0,0,0,1,,0,10,100,100,100,,,,,,,,,, +Charnal Guard,CharnalGuard,Infantry,Infantry,60,2,2,0,0.9,0.3,0,0,0,1,,0,10,100,100,100,,,,,,,,,, +Hushtan Ginetiphracts,Ginetiphracts,Infantry,Infantry,20,1,4,0,0.5,0,0,0,0,1,2,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Republic Remnants,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Republic Wardens,RepublicWardens,Infantry,Infantry,40,3,3,0,0.8,1,0,0,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Elysia,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Elysian Light Commando Vehicle,ElysiaLCommandoVehicle,Armour,Vehicle,30,4,5,1.5,0.65,1.75,0,0,0.2,4.5,2,0,10,100,100,100,,,,,,,,,, +Elysian Assault APC,ElysianAssaultAPC,Armour,Vehicle,45,3,4,2,0.65,2,0,0,0.2,4.5,2,0,10,100,100,100,,,,,,,,,, +Elysian Oathsworn Squad,ElysianOathswornSquad,Infantry,Infantry,35,3,3,0,0.65,0.5,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Elysian Light Mechs,ElysianLightMechs,Armour,Vehicle,45,3/4,3/2,2/0.5,0.9/0.8,1,0,0,0,2,2,0,10,100,100,100,1,,,,,,,,, +Elysian Jet Infantry,ElysianJetInfantry,Infantry,Infantry,30,2,3,0,0.65,0.5,0,0,0.2,2,2,0,10,100,100,100,,,,,,,,,, +Elysian Recon Infantry,ElysianReconInfantry,Infantry,Infantry,35,1/1,8/4,1/0.3,0.7/0.7,0.3,0,0,0.5,2,2,0,10,100,100,100,,stealth II,,,,,,,, +,,,,,,,,,,,,,,,,,100,100,100,,,,,,,,,, +Yar-Kassy,,,,,,,,,,,,,,,,,100,100,100,,,,,,,,,, +Dervish Assault Tank,YarkassyAssaultTank,Armour,Vehicle,90,1/2,8/3,3/1,0.75/0.8,1,1,1,0.35,4.5,2,0,10,100,100,100,,,,,,,,,, +Desert Raider Squad,YarkassyDesertRaiderSquad,Infantry,Infantry,35,2,2,0,0.5,0.5,0,0,0,0.8,2,0,10,100,100,100,1,,,,,,,,, +Elite Marksmen Squad,YarkassyEliteMarksmen,Infantry,Infantry,18,1,5,0.5,0.95,0,0,0,0.25,1.3,2,0,10,100,100,100,,stealth I,,,,,,,, +Ghar Haclem Ark'venuur Serpents,YarkassySerpents,Infantry,Infantry,25,3,2,0.5,0.45,0,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Arca,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Scum,ArcaScum,City,Infantry,20,2,1,0,0.25,0,0,0,0,1.1,1,0,10,100,100,100,0,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Zami,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Cryo-Clone Squad,ZamiCryoCloneSquad,Infantry,Infantry,25,2,2,0,0.75,0,0,0,0,1.5,2,0,10,100,100,100,0,,,,,,,,, +Immortals Cryo-Clone Squad,ImmortalsCryo-CloneSquad,Infantry,Infantry,35,3,2,0,0.8,0.55,0,0,0,1.5,2,0,10,100,100,100,0,,,,,,,,, +Zami War Tripod,ZamiWarTripod,Armour,Vehicle,100,2/6,4/1,2.5/0,0.8/0.8,2.5,2,1,0,2,2,0,10,100,100,100,,,,,,,,,, +Zami War Strider,ZamiWarStrider,Armour,Vehicle,85,1/7,4/1,2.5/0,0.75/0.75,2,2,1,0,2,2,0,10,100,100,100,,,,,,,,,, +Conscripted Miner Slaves,ConscriptedMinerSlaves,City,Infantry,12,2,3,0,0.45,0,0,0,0,1.2,2,0,10,100,100,100,1,,,,,,,,, +Satyr-9 Varanguard,Satyr-9Varanguard,City,Infantry,40,3,3,0.5,0.9,1,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Krioss Ravager Pack,KriossRavagerPack,Infantry,Infantry,50,5,2,1,0.45,0.75,0,0,1,5,3,0,10,100,100,100,,,,,,,,,, +Snagaa Newborn,SnagaaNewborn,Infantry,Infantry,15,2,1,0,0.3,0,0,0,0,1.5,0,0,10,100,100,100,,,,,,,,,, +Axa Axa,AxaAxa,Infantry,Vehicle,45,4,1,0,0.7,0.5,1,2.5,0,1,0,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Stuntreen,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Headtaker Commando,HeadtakerCommando,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Hareen Cari Immortals,HareenCariImmortals,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Exan,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Clan Warriors,ExanClanWarriors,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Headtakers,ExanHeadtakers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Methaphor,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Republican Guard,MethaphorRepublicanGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Green Guard (Elite Mountain Troops),MethaphorGreenGuard,Infantry,Infantry,40,2,2,0,0.6,0,0,0,0,1,3,0,10,100,100,100,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Noser,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Royal Guard,NoserRoyalGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Stalker Squad,NoserStalkerSquad,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Caer Bannoq,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Realm Hunters,CaerBannoqRealmHunters,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Keepers of Secrets,CaerBannoqKeepers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Paladins,CaerBannoqPaladins,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Seekers,CaerBannoqSeekers,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Vesparus,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Vesparusian Militia,VesparusMilitia,City,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Freekorps Caine,VesparusFreekorps,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Inobria,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Infantry,InobriaInfantry,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Tunnel Fighter,InobriaTunnelFighter,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Sartorius Rax,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Infantry,SartoriusInfantry,Infantry,Infantry,22,1,4,0,0.55,0,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Heavy Infantry,SartoriusHeavyInfantry,Infantry,Infantry,32,2,3,0,0.6,0,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Spice,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Longclaw Pack,SpiceLongclawPack,Infantry,Infantry,16,2,3,0,0.6,0,0,0,0,1.4,2,0,10,100,100,100,1,,,,,,,,, +Tunneler Pack,SpiceTunnelerPack,Infantry,Infantry,20,2,3,0,0.6,0,0,0,0,1.4,2,0,10,100,100,100,1,,,,,,,,, +Healer Pack,SpiceHealerPack,Infantry,Infantry,14,2,3,0,0.6,0,0,0,0,1.4,2,0,10,100,100,100,1,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Amothep,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Pyramidians,Pyramidians,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, +Spyre Guard,SpyreGuard,Infantry,Infantry,20,1,4,0,0.5,0.3,0,0,0,1,2,0,10,100,100,100,1,,,,,,,,, \ No newline at end of file diff --git a/Assets/GWConquest/Scenes/GalaxyMap.unity b/Assets/GWConquest/Scenes/GalaxyMap.unity index 4868dcd..503a75b 100644 --- a/Assets/GWConquest/Scenes/GalaxyMap.unity +++ b/Assets/GWConquest/Scenes/GalaxyMap.unity @@ -16070,42 +16070,6 @@ RectTransform: m_AnchoredPosition: {x: 68.7, y: -9.3} m_SizeDelta: {x: 455.79993, y: 39.15039} m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &260143046 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 260143047} - m_Layer: 5 - m_Name: MovingFleet - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &260143047 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 260143046} - 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_Children: - - {fileID: 1886414993} - m_Father: {fileID: 1481547534} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &266275090 GameObject: m_ObjectHideFlags: 0 @@ -31161,6 +31125,7 @@ RectTransform: - {fileID: 587515776} - {fileID: 1054568953} - {fileID: 1481547534} + - {fileID: 1679029304} m_Father: {fileID: 1986334066} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -31188,6 +31153,7 @@ MonoBehaviour: DebugUI: {fileID: 587515775} PauseMenu: {fileID: 1054568952} GameUI: {fileID: 1967795785} + DragDropPlane: {fileID: 1679029304} MovingFleetsTransform: {fileID: 1481547534} doubleClickInterval: 0.2 --- !u!1 &494421157 @@ -92145,8 +92111,7 @@ RectTransform: 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_Children: - - {fileID: 260143047} + m_Children: [] m_Father: {fileID: 494226835} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -102071,6 +102036,41 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1679023902} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1679029303 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1679029304} + m_Layer: 5 + m_Name: DragDropPlane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1679029304 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679029303} + 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_Children: [] + m_Father: {fileID: 494226835} + m_RootOrder: 8 + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1001 &1684140558 PrefabInstance: m_ObjectHideFlags: 0 @@ -117328,246 +117328,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1885138119} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &1886414992 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 260143047} - m_Modifications: - - target: {fileID: 200793009239835511, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264674992649803, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264674992649803, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264675066306908, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.x - value: -26.999998 - objectReference: {fileID: 0} - - target: {fileID: 6934264675173919768, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264675173919768, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264675533803899, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264675533803899, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734670, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_Name - value: FleetIcon - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734670, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchorMax.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchorMax.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchorMin.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchorMin.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.x - value: 55 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 55 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676128576589, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6934264676128576590, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264676128576590, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676281443874, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676281443875, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264676281443875, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676736199430, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 15 - objectReference: {fileID: 0} - - target: {fileID: 6934264676736199430, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 7.5 - objectReference: {fileID: 0} - - target: {fileID: 6934264676898299648, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6934264676898299648, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8138893207784313283, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 9087990028491932013, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071076 - objectReference: {fileID: 0} - - target: {fileID: 9087990028491932013, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalRotation.z - value: -0.707106 - objectReference: {fileID: 0} - - target: {fileID: 9087990028491932013, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: -90.00001 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: b4b4aee434157c54cb53399d1578f446, type: 3} ---- !u!224 &1886414993 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 6934264676097734671, guid: b4b4aee434157c54cb53399d1578f446, - type: 3} - m_PrefabInstance: {fileID: 1886414992} - m_PrefabAsset: {fileID: 0} --- !u!1 &1893307637 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/GWConquest/Scripts/Formation.cs b/Assets/GWConquest/Scripts/Formation.cs index a42ae50..8718c89 100644 --- a/Assets/GWConquest/Scripts/Formation.cs +++ b/Assets/GWConquest/Scripts/Formation.cs @@ -181,6 +181,8 @@ namespace GWConquest get => MovementState == FormationMovementState.Idle; } + public IInventory FormationInventory; + public void TryMoveToPlanet(Planet planet) { if(currentZone.zoneType == ZoneType.Space) @@ -543,6 +545,8 @@ namespace GWConquest UnitEntities = new EntityList(State, "Units"); SubFormationEntities = new EntityList(State, "SubFormations"); + FormationInventory = new CombinedInventory(() => Units.Select(u => u.Inventory)); + PathQueue = new ZoneList(State, "PathQueue"); AllFormations.Add(this); diff --git a/Assets/GWConquest/Scripts/Inventory.cs b/Assets/GWConquest/Scripts/Inventory.cs index d549cd3..af7bfb9 100644 --- a/Assets/GWConquest/Scripts/Inventory.cs +++ b/Assets/GWConquest/Scripts/Inventory.cs @@ -1,5 +1,6 @@ using UdpKit; using Bolt; +using System; using System.Linq; using System.Collections.Generic; using UnityEngine; @@ -9,8 +10,8 @@ namespace GWConquest [System.Serializable] public struct ItemStack : IIconObject, IProtocolToken { - public static int MaxStackSize { - get => GameManager.Instance.MaxStackSize; + public static int GetMaxStackSize(string item) { + return GameManager.Instance.MaxStackSize; } public bool IsUnit; @@ -149,8 +150,21 @@ namespace GWConquest } } - public class Inventory : BoltList + public interface IInventory { + int GetItemAmount(string item); + + bool AddItem(string item, int amount); + + int GetRemainingSpace(string item); + + bool RemoveItem(string item, int amount); + } + + public class Inventory : BoltList, IInventory + { + // Question: Can there be more then one half-full stack for an item type?? + public Inventory(IState _state, string _propertyName) : base(_state, _propertyName) { } public int StorageCapacity = int.MaxValue; @@ -165,28 +179,16 @@ namespace GWConquest return this.Count(stack => !stack.IsUnit && stack.ItemName == item); } - public bool DoesItemFit(string item, int amount) - { - int currentAmount = GetItemAmount(item); - int currentStacks = GetItemStackAmount(item); - int restAmount = amount - (ItemStack.MaxStackSize * currentStacks - currentAmount); - if(restAmount <= 0) - { - return true; - } - int neededStacks = Mathf.CeilToInt((float) restAmount / ItemStack.MaxStackSize); - return Count + neededStacks <= StorageCapacity; - } - public bool AddItem(string item, int amount) { - if(DoesItemFit(item, amount)) { + if(GetRemainingSpace(item) >= amount) { + int maxStackSize = ItemStack.GetMaxStackSize(item); for(int i = 0; i < Count; i++) { var stack = this[i]; if(!stack.IsUnit && stack.ItemName == item) { - int remainingRoom = ItemStack.MaxStackSize - stack.Amount; + int remainingRoom = maxStackSize - stack.Amount; if(remainingRoom >= amount) { stack.Amount += amount; @@ -195,7 +197,7 @@ namespace GWConquest } else { amount -= remainingRoom; - stack.Amount = ItemStack.MaxStackSize; + stack.Amount = maxStackSize; this[i] = stack; } @@ -204,7 +206,7 @@ namespace GWConquest while(amount > 0) { - int amountToAdd = Mathf.Min(amount, ItemStack.MaxStackSize); + int amountToAdd = Mathf.Min(amount, maxStackSize); Add(ItemStack.FromItem(item, amountToAdd)); amount -= amountToAdd; } @@ -216,6 +218,74 @@ namespace GWConquest } } + public int GetRemainingSpace(string item) + { + int maxStackSize = ItemStack.GetMaxStackSize(item); + int emptyStacks = StorageCapacity - Count; + + int currentAmount = GetItemAmount(item); + int currentStacks = GetItemStackAmount(item); + int restAmount = maxStackSize * currentStacks - currentAmount; + + return emptyStacks * maxStackSize + restAmount; + } + + public bool RemoveItem(string item, int amount) + { + + int currentAmount = GetItemAmount(item); + if(amount <= currentAmount) + { + // First iteration: take from partially full stacks only + int amountToRemove = RemoveFromStacks(item, amount, true); + + if(amountToRemove > 0) + { + // Second iteration: take also from full stacks + amountToRemove = RemoveFromStacks(item, amountToRemove, false); + } + + if(amountToRemove > 0) + { + BoltLog.Error("Inventory Error: Did not remove enough items of type {0} (desired: {1}, left: {2})", item, amount, amountToRemove); + } + + return true; + } + else { + return false; + } + } + + private int RemoveFromStacks(string item, int amount, bool partialStacksOnly) + { + int maxStackSize = ItemStack.GetMaxStackSize(item); + int amountToRemove = amount; + + for(int i = Count -1; i >= 0; i--) + { + var stack = this[i]; + if(!stack.IsUnit && stack.ItemName == item && (stack.Amount < maxStackSize || !partialStacksOnly)) + { + if(stack.Amount <= amountToRemove) + { + amountToRemove -= stack.Amount; + RemoveAt(i); + } + else { + stack.Amount -= amountToRemove; + this[i] = stack; + amountToRemove = 0; + } + if(amountToRemove <= 0) + { + return 0; + } + } + } + return amountToRemove; + } + public static IEnumerable AddAllItems(IEnumerable items) { //TODO Unit Items @@ -242,4 +312,95 @@ namespace GWConquest } } + + public class CombinedInventory : IInventory + { + private Func> InventoryFunc; + + public CombinedInventory(Func> _inventoryFunc) + { + InventoryFunc = _inventoryFunc; + } + + public int GetItemAmount(string item) + { + return InventoryFunc().Sum(inv => inv.GetItemAmount(item)); + } + + public int GetRemainingSpace(string item) + { + return InventoryFunc().Sum(inv => inv.GetRemainingSpace(item)); + } + + // TODO organize items for maximum space + public bool AddItem(string item, int amount) + { + if(GetRemainingSpace(item) >= amount) + { + int remainingAmount = amount; + foreach(var inv in InventoryFunc()) + { + int space = inv.GetRemainingSpace(item); + if(space > 0) + { + if(space >= remainingAmount) + { + return inv.AddItem(item, remainingAmount); + } + else { + inv.AddItem(item, space); + remainingAmount -= space; + } + } + } + BoltLog.Error("Could not add all items to combined inventory: item {0}, amount {1}, left {2}", item, amount, remainingAmount); + return true; + } + else { + return false; + } + } + + public bool RemoveItem(string item, int amount) + { + if(GetItemAmount(item) >= amount) + { + int remainingAmount = amount; + foreach(var inv in InventoryFunc()) + { + int invAmount = inv.GetItemAmount(item); + if(invAmount > 0) + { + if(invAmount >= remainingAmount) + { + return inv.RemoveItem(item, remainingAmount); + } + else { + inv.RemoveItem(item, invAmount); + remainingAmount -= invAmount; + } + } + } + BoltLog.Error("Could not remove all items from combined inventory: item {0}, amount {1}, left {2}", item, amount, remainingAmount); + return true; + } + else { + return false; + } + } + + } + + public static class InventoryExtensions + { + public static bool HasItem(this IInventory inventory, string item, int amount) + { + return inventory.GetItemAmount(item) >= amount; + } + + public static bool DoesItemFit(this IInventory inventory, string item, int amount) + { + return inventory.GetRemainingSpace(item) >= amount; + } + } } \ No newline at end of file diff --git a/Assets/GWConquest/Scripts/ServerCallbacks.cs b/Assets/GWConquest/Scripts/ServerCallbacks.cs index b5515e3..9a24bdf 100644 --- a/Assets/GWConquest/Scripts/ServerCallbacks.cs +++ b/Assets/GWConquest/Scripts/ServerCallbacks.cs @@ -106,5 +106,41 @@ namespace GWConquest var flank = evnt.BattleFlank?.GetComponent(); unit.StartShelling(flank); } + public override void OnEvent(MoveItemEvent evnt) + { + IInventory origin = null; + if(evnt.Origin.GetComponent() != null) + { + origin = evnt.Origin.GetComponent().Inventory; + } + else if(evnt.Origin.GetComponent() != null) { + origin = evnt.Origin.GetComponent().FormationInventory; + } + + IInventory target = null; + if(evnt.Target.GetComponent() != null) + { + target = evnt.Target.GetComponent().Inventory; + } + else if(evnt.Target.GetComponent() != null) { + target = evnt.Target.GetComponent().FormationInventory; + } + + if(origin != null && target != null) + { + if(origin.HasItem(evnt.ItemName, evnt.ItemAmount) && target.DoesItemFit(evnt.ItemName, evnt.ItemAmount)) + { + origin.RemoveItem(evnt.ItemName, evnt.ItemAmount); + target.AddItem(evnt.ItemName, evnt.ItemAmount); + } + else { + BoltLog.Error("Could not move {0} of item {1} between inventories", evnt.ItemAmount, evnt.ItemName); + } + + } + else { + BoltLog.Error("One of the specified inventories is null"); + } + } } } \ No newline at end of file diff --git a/Assets/GWConquest/Scripts/UI/DragDropElement.cs b/Assets/GWConquest/Scripts/UI/DragDropElement.cs index 61ec3ea..a7a90a2 100644 --- a/Assets/GWConquest/Scripts/UI/DragDropElement.cs +++ b/Assets/GWConquest/Scripts/UI/DragDropElement.cs @@ -44,8 +44,7 @@ namespace GWConquest hasMoved = true; OnDragBegin(); origParent = rectTransform.parent; - rectTransform.SetParent(rectTransform.GetComponentInParent().transform); - rectTransform.SetAsLastSibling(); + rectTransform.SetParent(IngameUI.Instance.DragDropPlane); } } @@ -58,8 +57,7 @@ namespace GWConquest { if (OnDragFinished()) { - rectTransform.SetParent(origParent); - rectTransform.localPosition = origPosition; + ResetToOriginalPosition(); } } hasMoved = false; @@ -70,6 +68,12 @@ namespace GWConquest } } + public void ResetToOriginalPosition() + { + rectTransform.SetParent(origParent); + rectTransform.localPosition = origPosition; + } + public virtual bool OnDragFinished() { diff --git a/Assets/GWConquest/Scripts/UI/IngameUI.cs b/Assets/GWConquest/Scripts/UI/IngameUI.cs index 66294bb..57a42c5 100644 --- a/Assets/GWConquest/Scripts/UI/IngameUI.cs +++ b/Assets/GWConquest/Scripts/UI/IngameUI.cs @@ -21,6 +21,7 @@ namespace GWConquest public GameObject DebugUI; public GameObject PauseMenu; public GameObject GameUI; + public RectTransform DragDropPlane; public RectTransform MovingFleetsTransform; diff --git a/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs b/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs new file mode 100644 index 0000000..9555c5d --- /dev/null +++ b/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs @@ -0,0 +1,138 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace GWConquest +{ + + public class ItemMoveTooltip : MonoBehaviour + { + public Image ItemImage; + public InputField AmountField; + + + private ItemStack MovedItem; + + private TransportUIElement Origin; + private TransportUIElement Target; + private TransportUIItemIcon ItemUI; + + + public void Init(ItemStack _item, TransportUIItemIcon _itemUI, TransportUIElement _origin, TransportUIElement _target) + { + MovedItem = _item; + + ItemImage.sprite = MovedItem.Icon; + ItemImage.color = Util.UpdateColorRGB(ItemImage.color, MovedItem.IconColor); + + ItemUI = _itemUI; + + Origin = _origin; + Target = _target; + + int toTransfer = Mathf.Min(GetMaxTransferable(), MovedItem.Amount); + AmountField.text = toTransfer.ToString(); + } + + void FixedUpdate() + { + if(Input.GetButtonDown("Left Click")) + { + var rt = GetComponent(); + if(!RectTransformUtility.RectangleContainsScreenPoint(rt, Input.mousePosition)) + { + Cancel(); + } + } + } + + void Update() + { + if(!IngameUI.Instance.PlanetView.TransportUI.isActiveAndEnabled) + { + Cancel(); + } + } + + public void Cancel() + { + ItemUI.Amount.enabled = true; + ItemUI.Icon.enabled = true; + ItemUI.ResetToOriginalPosition(); + + Destroy(gameObject); + } + + public void Confirm() + { + if(int.TryParse(AmountField.text, out int current)) + { + int transferable = GetMaxTransferable(); + if(current <= transferable) + { + var ev = MoveItemEvent.Create(Bolt.GlobalTargets.OnlyServer); + ev.ItemName = MovedItem.ItemName; + ev.ItemAmount = current; + ev.Origin = Origin.Type == TransportUIElement.ObjectType.District ? Origin.District.entity : Origin.Formation.entity; + ev.Target = Target.Type == TransportUIElement.ObjectType.District ? Target.District.entity : Target.Formation.entity; + ev.Send(); + } + else { + BoltLog.Error("Amount {0} of item {1} is not transferable ({2})", current, MovedItem.ItemName, transferable); + } + } + else { + BoltLog.Error("Invalid amount: {0}", AmountField.text); + } + + Cancel(); + } + + public void ClickArrow(int amount) + { + if(int.TryParse(AmountField.text, out int current)) + { + AmountField.text = (current + amount).ToString(); + OnValueChanged(); + } + } + + public void OnValueChanged() + { + if(AmountField.text != null && AmountField.text != "") + { + if(int.TryParse(AmountField.text, out int amount)) + { + int max = GetMaxTransferable(); + if(amount > max) + { + AmountField.text = max.ToString(); + } + if(amount < 0) + { + AmountField.text = "0"; + } + } + else { + BoltLog.Error("bad string in input field: {0}", AmountField.text); + AmountField.text = ""; + } + } + + } + + public int GetMaxTransferable() + { + int available = Origin.GetInventory().GetItemAmount(MovedItem.ItemName); + + int remainingSpace = Target.GetInventory().GetRemainingSpace(MovedItem.ItemName); + + return Mathf.Min(available, remainingSpace); + + } + + + } + +} diff --git a/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs.meta b/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs.meta new file mode 100644 index 0000000..1a01ca6 --- /dev/null +++ b/Assets/GWConquest/Scripts/UI/ItemMoveTooltip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a59da9e4f26fd4498f026a53accf6c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GWConquest/Scripts/UI/TransportUIElement.cs b/Assets/GWConquest/Scripts/UI/TransportUIElement.cs index b020b47..dd1ef58 100644 --- a/Assets/GWConquest/Scripts/UI/TransportUIElement.cs +++ b/Assets/GWConquest/Scripts/UI/TransportUIElement.cs @@ -70,6 +70,21 @@ namespace GWConquest Arrow.localEulerAngles = new Vector3(0f, 0f, IsExpanded ? -180f : -90f); } + public IInventory GetInventory() + { + if(Type == ObjectType.Planet) + { + return null; + } + else if(Type == ObjectType.District) + { + return District.Inventory; + } + else { + return Formation.FormationInventory; + } + } + private IEnumerable GetAllItems() { if(Type == ObjectType.Planet) @@ -177,6 +192,7 @@ namespace GWConquest var itemIconComp = itemIconGO.GetComponent(); itemIconComp.CanBeDragged = true; + itemIconComp.ParentUI = this; itemIconComp.UpdateDisplay(item); return itemIconComp; diff --git a/Assets/GWConquest/Scripts/UI/TransportUIItemIcon.cs b/Assets/GWConquest/Scripts/UI/TransportUIItemIcon.cs index d26172a..1eb2d84 100644 --- a/Assets/GWConquest/Scripts/UI/TransportUIItemIcon.cs +++ b/Assets/GWConquest/Scripts/UI/TransportUIItemIcon.cs @@ -5,6 +5,8 @@ namespace GWConquest { public class TransportUIItemIcon : DragDropElement, IUpdatable { + public GameObject MoveTooltipPrefab; + public Image Icon; public Text Amount; @@ -14,6 +16,8 @@ namespace GWConquest { public bool CanBeDragged = false; + public TransportUIElement ParentUI; + public void UpdateDisplay(ItemStack stack) { Stack = stack; @@ -35,8 +39,47 @@ namespace GWConquest { public override bool OnDragFinished() { + if(ParentUI != null && ParentUI.Type != TransportUIElement.ObjectType.Planet) + { + var mousePos = Input.mousePosition; + foreach(var ui in FindObjectsOfType()) + { + if (ui != ParentUI && RectTransformUtility.RectangleContainsScreenPoint(ui.GetComponent(), mousePos)) + { + if(ui.Type != TransportUIElement.ObjectType.Planet) + { + if(ui.GetInventory().GetRemainingSpace(Stack.ItemName) > 0) + { + var tooltipGO = Instantiate(MoveTooltipPrefab); + + tooltipGO.transform.SetParent(IngameUI.Instance.DragDropPlane); + tooltipGO.transform.position = mousePos; + + var tooltipComp = tooltipGO.GetComponent(); + tooltipComp.Init(Stack, this, ParentUI, ui); + + Icon.enabled = false; + Amount.enabled = false; + + return false; + } + else { + BoltLog.Info("No remaining space in target inventory!"); + } + } + } + } + } return true; } + void FixedUpdate() + { + if(ParentUI != null && !ParentUI.isActiveAndEnabled) + { + Destroy(gameObject); + } + } + } } \ No newline at end of file diff --git a/Assets/GWConquest/Scripts/UI/UnitInfoPanel.cs b/Assets/GWConquest/Scripts/UI/UnitInfoPanel.cs index 798be5a..816c965 100644 --- a/Assets/GWConquest/Scripts/UI/UnitInfoPanel.cs +++ b/Assets/GWConquest/Scripts/UI/UnitInfoPanel.cs @@ -58,6 +58,10 @@ namespace GWConquest [System.NonSerialized] public List FormationUnitsList = new List(); + public Image FormationFuelBar; + public Image FormationFoodBar; + public Image FormationSuppliesBar; + public bool IsBattleMenu; [System.NonSerialized] @@ -210,19 +214,32 @@ namespace GWConquest } else if(CurrentFormation != null) { - int totalHitpoints = CurrentFormation.Units.Sum(u => u.Hitpoints); - int maxHitpoints = CurrentFormation.Units.Sum(u => u.Class.Hitpoints); + var formationUnits = CurrentFormation.Units; + int totalHitpoints = formationUnits.Sum(u => u.Hitpoints); + int maxHitpoints = formationUnits.Sum(u => u.Class.Hitpoints); HealthBar.fillAmount = (float) totalHitpoints / maxHitpoints; HealthBarText.text = totalHitpoints.ToString() + "/" + maxHitpoints.ToString(); - float maxMorale = CurrentFormation.Units.Sum(u => u.Class.Morale); + float maxMorale = formationUnits.Sum(u => u.Class.Morale); float moralePct = Mathf.Min(CurrentFormation.Morale/maxMorale, 1f); MoraleBar.fillAmount = moralePct; MoraleBarText.text = (moralePct*100).ToString() + "%"; MoraleBar.color = Util.UpdateColorRGB(MoraleBar.color, CurrentFormation.Player.Color); + int currentFuel = formationUnits.Sum(u => u.Fuel); + int maxFuel = formationUnits.Sum(u => u.Class.FuelCapacity); + FormationFuelBar.fillAmount = (float) currentFuel / maxFuel; + + int currentFood = formationUnits.Sum(u => u.Food); + int maxFood = formationUnits.Sum(u => u.Class.FoodCapacity); + FormationFoodBar.fillAmount = (float) currentFood / maxFood; + + int currentSupplies = formationUnits.Sum(u => u.Supplies); + int maxSupplies = formationUnits.Sum(u => u.Class.SuppliesCapacity); + FormationSuppliesBar.fillAmount = (float) currentSupplies / maxSupplies; + var hero = CurrentFormation.HeroUnit; if(hero != null) { @@ -234,7 +251,7 @@ namespace GWConquest FormationHeroName.text = "No Leader"; } - var formationUnitList = TransportUIUnitTypeIcon.SumUnitTypes(CurrentFormation.Units); + var formationUnitList = TransportUIUnitTypeIcon.SumUnitTypes(formationUnits); GWLayout.UpdateGameObjects(FormationUnitsList, formationUnitList, FormationUnitsPrefab, FormationUnitsTransform); } diff --git a/Assets/GWConquest/Scripts/Unit.cs b/Assets/GWConquest/Scripts/Unit.cs index 8e0fd22..0a65a26 100644 --- a/Assets/GWConquest/Scripts/Unit.cs +++ b/Assets/GWConquest/Scripts/Unit.cs @@ -70,6 +70,21 @@ namespace GWConquest set => State.Morale = value; } + public int Fuel { + get => State.Fuel; + set => State.Fuel = value; + } + + public int Food { + get => State.Food; + set => State.Food = value; + } + + public int Supplies { + get => State.Supplies; + set => State.Supplies = value; + } + public Player Player { get => Formation.Player; } @@ -176,6 +191,10 @@ namespace GWConquest State.AddCallback("UnitClass", () => { Inventory.StorageCapacity = Class.InventorySlots; Equipment.StorageCapacity = Class.EquipmentSlots; + + Fuel = Class.FuelCapacity; + Food = Class.FoodCapacity; + Supplies = Class.SuppliesCapacity; }); if(BoltNetwork.IsServer) diff --git a/Assets/GWConquest/Scripts/UnitClass.cs b/Assets/GWConquest/Scripts/UnitClass.cs index 0549675..8f9c197 100644 --- a/Assets/GWConquest/Scripts/UnitClass.cs +++ b/Assets/GWConquest/Scripts/UnitClass.cs @@ -101,6 +101,10 @@ namespace GWConquest unitClass.CreditUpkeep = data.GetFloat("Credit Upkeep"); unitClass.FoodUpkeep = data.GetFloat("Food Upkeep"); + unitClass.FuelCapacity = data.GetInt("Fuel Capacity"); + unitClass.FoodCapacity = data.GetInt("Food Capacity"); + unitClass.SuppliesCapacity = data.GetInt("Supplies Capacity"); + if(zoneType == ZoneType.Space) { unitClass.FactoryType = FactoryType.Space; @@ -321,6 +325,10 @@ namespace GWConquest public float CreditUpkeep; public float FoodUpkeep; + public int FuelCapacity; + public int FoodCapacity; + public int SuppliesCapacity; + public int MinFactoryTier = 1; public FactoryType FactoryType; diff --git a/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll b/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll index 13eb7c4..ffd31f5 100644 Binary files a/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll and b/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll differ diff --git a/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll.mdb b/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll.mdb index dd2c20c..a430bc3 100644 Binary files a/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll.mdb and b/Assets/Photon/PhotonBolt/assemblies/bolt.user.dll.mdb differ diff --git a/Assets/Photon/PhotonBolt/project.json b/Assets/Photon/PhotonBolt/project.json index cd47a74..a51437a 100644 --- a/Assets/Photon/PhotonBolt/project.json +++ b/Assets/Photon/PhotonBolt/project.json @@ -1092,6 +1092,60 @@ "ExtrapolationMaxFrames": 9, "SnapMagnitude": 10.0 } + }, + { + "Name": "Supplies", + "Enabled": true, + "Expanded": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeInteger, bolt.compiler", + "MaxValue": 255 + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyStateSettings, bolt.compiler", + "ExtrapolationErrorTolerance": 0.25, + "_ExtrapolationCorrectionFrames": 6, + "ExtrapolationMaxFrames": 9, + "SnapMagnitude": 10.0 + } + }, + { + "Name": "Fuel", + "Enabled": true, + "Expanded": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeInteger, bolt.compiler", + "MaxValue": 255 + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyStateSettings, bolt.compiler", + "ExtrapolationErrorTolerance": 0.25, + "_ExtrapolationCorrectionFrames": 6, + "ExtrapolationMaxFrames": 9, + "SnapMagnitude": 10.0 + } + }, + { + "Name": "Food", + "Enabled": true, + "Expanded": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeInteger, bolt.compiler", + "MaxValue": 255 + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyStateSettings, bolt.compiler", + "ExtrapolationErrorTolerance": 0.25, + "_ExtrapolationCorrectionFrames": 6, + "ExtrapolationMaxFrames": 9, + "SnapMagnitude": 10.0 + } } ], "PacketMaxBits": 512, @@ -2291,6 +2345,66 @@ "Name": "FormationDemoralizedAnimEvent", "Guid": "4f198445-9cbe-4d63-ad64-be9598b44eb1", "Groups": [] + }, + { + "$type": "Bolt.Compiler.EventDefinition, bolt.compiler", + "Properties": [ + { + "Name": "ItemName", + "Enabled": true, + "Expanded": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeString, bolt.compiler", + "MaxLength": 1 + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyEventSettings, bolt.compiler" + } + }, + { + "Name": "ItemAmount", + "Enabled": true, + "Expanded": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeInteger, bolt.compiler", + "MaxValue": 255 + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyEventSettings, bolt.compiler" + } + }, + { + "Name": "Origin", + "Enabled": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeEntity, bolt.compiler" + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyEventSettings, bolt.compiler" + } + }, + { + "Name": "Target", + "Enabled": true, + "ReplicationMode": 1, + "Priority": 1, + "PropertyType": { + "$type": "Bolt.Compiler.PropertyTypeEntity, bolt.compiler" + }, + "AssetSettings": { + "$type": "Bolt.Compiler.PropertyEventSettings, bolt.compiler" + } + } + ], + "Name": "MoveItemEvent", + "Guid": "b6635e37-b7e3-4c6e-92d8-62cf65ff9f67", + "Groups": [] } ], "ActiveGroup": "Everything"