full turns

This commit is contained in:
reisenlol 2026-01-11 04:22:09 -08:00
parent 7bd61df481
commit 6ff1531662
No known key found for this signature in database
15 changed files with 879 additions and 100 deletions

View file

@ -29,7 +29,7 @@ Transform:
m_GameObject: {fileID: 1296817062174965064}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.5, y: 1.5, z: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@ -177,10 +177,11 @@ MonoBehaviour:
m_EditorClassIdentifier:
health: 100
maxHealth: 100
maxMovement: 120
maxMovement: 4
currentTile: {fileID: 0}
moveAnimSpeed: 0
moveAnimSpeed: 10
canMove: 1
invincible: 0
turnSpeed: 1
minimumAttackRange: 10
minimumAttackRange: 1.5
damage: 0

View file

@ -177,9 +177,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
health: 100
maxHealth: 100
maxMovement: 10
maxMovement: 4
currentTile: {fileID: 0}
moveAnimSpeed: 2
moveAnimSpeed: 10
canMove: 1
invincible: 0
hasMoved: 0

View file

@ -119,6 +119,142 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &32287492
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 32287493}
- component: {fileID: 32287495}
- component: {fileID: 32287494}
m_Layer: 5
m_Name: Label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &32287493
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 32287492}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1747903013}
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!114 &32287494
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 32287492}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Skip
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &32287495
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 32287492}
m_CullTransparentMesh: 1
--- !u!1 &42915308
GameObject:
m_ObjectHideFlags: 0
@ -144,12 +280,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 42915308}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &42915310
MonoBehaviour:
@ -169,6 +305,37 @@ MonoBehaviour:
isMoving: 0
debounceDuration: 0.2
pathRequested: []
--- !u!1 &162815249
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 162815250}
m_Layer: 0
m_Name: SpawnLocation (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &162815250
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 162815249}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -6.5, y: -4.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &201300560
GameObject:
m_ObjectHideFlags: 0
@ -300,6 +467,90 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &233193904
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 233193905}
m_Layer: 0
m_Name: SpawnLocation (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &233193905
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 233193904}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 6.5, y: 4.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &234969366
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 234969367}
- component: {fileID: 234969368}
m_Layer: 0
m_Name: EnemySpawner
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &234969367
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 234969366}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &234969368
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 234969366}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5f6dfe086e56c56f9a2aaa37a63c506, type: 3}
m_Name:
m_EditorClassIdentifier:
enemyFolder: {fileID: 864010491}
spawnableEnemies:
- {fileID: 3911937516835917761, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
spawnLocationPos:
- {fileID: 1918325486}
- {fileID: 233193905}
- {fileID: 907887601}
- {fileID: 162815250}
spawnLocations: []
--- !u!1 &266547528
GameObject:
m_ObjectHideFlags: 0
@ -372,12 +623,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 266547528}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &287802167 stripped
MonoBehaviour:
@ -1067,6 +1318,69 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 774445937}
m_CullTransparentMesh: 1
--- !u!1 &864010490
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 864010491}
m_Layer: 0
m_Name: EnemyFolder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &864010491
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 864010490}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1950738779}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &907887600
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 907887601}
m_Layer: 0
m_Name: SpawnLocation (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &907887601
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 907887600}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 6.5, y: -4.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &925678149
GameObject:
m_ObjectHideFlags: 0
@ -1096,6 +1410,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5480895c85041d2e492c0ccbfa17254a, type: 3}
m_Name:
m_EditorClassIdentifier:
pathRequested: []
--- !u!4 &925678151
Transform:
m_ObjectHideFlags: 0
@ -1104,11 +1419,48 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 925678149}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1010455542
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1010455543}
m_Layer: 0
m_Name: ScriptsFolder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1010455543
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1010455542}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 266547531}
- {fileID: 42915309}
- {fileID: 1049538434}
- {fileID: 1764165478}
- {fileID: 925678151}
- {fileID: 234969367}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1049538432
@ -1147,6 +1499,7 @@ MonoBehaviour:
enemyEntities:
- {fileID: 589901456}
currentGameState: 0
enemySpawnAmount: 6
--- !u!4 &1049538434
Transform:
m_ObjectHideFlags: 0
@ -1155,12 +1508,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1049538432}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1206305438
GameObject:
@ -1508,6 +1861,11 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &1396110572 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
m_PrefabInstance: {fileID: 7758462355343058974}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1453849251
GameObject:
m_ObjectHideFlags: 0
@ -1659,10 +2017,145 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0891f634b432ac024a82048b58adf276, type: 3}
m_Name:
m_EditorClassIdentifier:
opened: 0
offset: {x: 150, y: -200, z: 0}
actionUI: {fileID: 1862374684}
moveButton: {fileID: 1991761901}
attackButton: {fileID: 1904174745}
reloadButton: {fileID: 1218150749}
--- !u!1 &1747903012
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1747903013}
- component: {fileID: 1747903016}
- component: {fileID: 1747903015}
- component: {fileID: 1747903014}
m_Layer: 5
m_Name: SkipButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1747903013
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1747903012}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 32287493}
m_Father: {fileID: 1862374685}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 150, y: -180}
m_SizeDelta: {x: 290, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1747903014
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1747903012}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 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.9607843, g: 0.9607843, b: 0.9607843, 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: 1747903015}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1741550583}
m_TargetAssemblyTypeName: ActionUIHandler, Assembly-CSharp
m_MethodName: SkipTurn
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!114 &1747903015
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1747903012}
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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1747903016
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1747903012}
m_CullTransparentMesh: 1
--- !u!1 &1764165477
GameObject:
m_ObjectHideFlags: 0
@ -1688,12 +2181,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1764165477}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_Father: {fileID: 1010455543}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1764165479
MonoBehaviour:
@ -1711,6 +2204,7 @@ MonoBehaviour:
height: 40
tilePrefab: {fileID: -6983208405962868106, guid: da6a24e46891b2ed09fda1a256f63c62, type: 3}
cam: {fileID: 519420031}
grid: {fileID: 201300562}
--- !u!1 &1862374684
GameObject:
m_ObjectHideFlags: 0
@ -1745,6 +2239,7 @@ RectTransform:
- {fileID: 1991761900}
- {fileID: 1904174744}
- {fileID: 1218150748}
- {fileID: 1747903013}
- {fileID: 1877710232}
m_Father: {fileID: 1741550582}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -1851,7 +2346,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 150, y: -180}
m_AnchoredPosition: {x: 150, y: -230}
m_SizeDelta: {x: 290, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1877710233
@ -2081,6 +2576,42 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1904174743}
m_CullTransparentMesh: 1
--- !u!1 &1918325485
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1918325486}
m_Layer: 0
m_Name: SpawnLocation
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1918325486
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1918325485}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -6.5, y: 4.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &1950738779 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7874053092508972642, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
m_PrefabInstance: {fileID: 2114217818563749931}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1991761899
GameObject:
m_ObjectHideFlags: 0
@ -2225,6 +2756,45 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 87b2f3acfe362ceb498b8129365d99a9, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &2042240624 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
m_PrefabInstance: {fileID: 2116633649}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2061817996
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2061817997}
m_Layer: 0
m_Name: PlayerFolder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2061817997
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2061817996}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.06216384, y: 0.65686417, z: 0.3691621}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1396110572}
- {fileID: 2111574835}
- {fileID: 2042240624}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2111574831 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7370141107480051474, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
@ -2236,25 +2806,30 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 87b2f3acfe362ceb498b8129365d99a9, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &2111574835 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
m_PrefabInstance: {fileID: 2124684584}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2116633649
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_TransformParent: {fileID: 2061817997}
m_Modifications:
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.x
value: 7.5
value: 7.562164
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.y
value: -0.5
value: -1.1568642
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.z
value: 0
value: -0.3691621
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.w
@ -2262,15 +2837,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -2307,19 +2882,19 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_TransformParent: {fileID: 2061817997}
m_Modifications:
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.x
value: -2.5
value: -2.4378362
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.y
value: -3.5
value: -4.156864
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.z
value: 0
value: -0.3691621
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.w
@ -2327,15 +2902,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -2372,7 +2947,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_TransformParent: {fileID: 864010491}
m_Modifications:
- target: {fileID: 1296817062174965064, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
propertyPath: m_Name
@ -2396,15 +2971,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7874053092508972642, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7874053092508972642, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7874053092508972642, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7874053092508972642, guid: f8b988bc429cbeb5fbdd3d95c8ce553b, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -2429,19 +3004,19 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_TransformParent: {fileID: 2061817997}
m_Modifications:
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.x
value: 2.5
value: 2.5621638
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.y
value: 3.5
value: 2.8431358
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalPosition.z
value: 0
value: -0.3691621
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.w
@ -2449,15 +3024,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 576146896620919861, guid: 0890a915b9432db98b28379f0c26c064, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -2492,18 +3067,16 @@ PrefabInstance:
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1389484819}
- {fileID: 519420032}
- {fileID: 619394802}
- {fileID: 201300562}
- {fileID: 42915309}
- {fileID: 214183927}
- {fileID: 7758462355343058974}
- {fileID: 2124684584}
- {fileID: 2116633649}
- {fileID: 1389484819}
- {fileID: 1049538434}
- {fileID: 1764165478}
- {fileID: 2114217818563749931}
- {fileID: 925678151}
- {fileID: 1453849255}
- {fileID: 266547531}
- {fileID: 1010455543}
- {fileID: 201300562}
- {fileID: 214183927}
- {fileID: 2061817997}
- {fileID: 864010491}
- {fileID: 1918325486}
- {fileID: 233193905}
- {fileID: 907887601}
- {fileID: 162815250}

View file

@ -20,46 +20,85 @@ public class ActionUIHandler : MonoBehaviour
#endregion
private PlayerEntity selectedEntity;
private RangedWeapon possibleRanged;
public bool opened;
[Header("UI")]
[SerializeField] private Vector3 offset;
[SerializeField] private GameObject actionUI;
[SerializeField] private Button moveButton;
[SerializeField] private Button attackButton;
[SerializeField] private Button reloadButton;
//500 if statements in this script lol
public void ShowUI(PlayerEntity target)
{
opened = true;
possibleRanged = null;
selectedEntity = target;
transform.position = Input.mousePosition + offset;
if (target.currentWeapon.TryGetComponent(out RangedWeapon isRanged))
actionUI.SetActive(true);
UpdateUI();
}
public void UpdateUI()
{
if (!selectedEntity.hasAttacked)
{
possibleRanged = isRanged;
reloadButton.gameObject.SetActive(true);
if (selectedEntity.currentWeapon.TryGetComponent(out RangedWeapon isRanged))
{
possibleRanged = isRanged;
}
if (!isRanged || !isRanged.fired)
{
reloadButton.gameObject.SetActive(false);
attackButton.gameObject.SetActive(true);
}
else
{
reloadButton.gameObject.SetActive(true);
attackButton.gameObject.SetActive(false);
}
}
else
{
reloadButton.gameObject.SetActive(false);
attackButton.gameObject.SetActive(false);
}
if (!selectedEntity.hasMoved || !selectedEntity.hasAttacked)
{
moveButton.gameObject.SetActive(true);
}
else
{
moveButton.gameObject.SetActive(false);
}
if (selectedEntity.hasAttacked && selectedEntity.hasMoved)
{
HideUI();
}
actionUI.SetActive(true);
}
public void HideUI()
{
opened = false;
actionUI.SetActive(false);
}
public void ReloadGun()
{
possibleRanged.Reload();
selectedEntity.hasAttacked = true;
UpdateUI();
}
public void Attack()
{
selectedEntity.Attack();
HideUI();
}
public void SkipTurn()
{
selectedEntity.SkipTurn();
HideUI();
}
public void MoveEntity()
{

View file

@ -3,9 +3,10 @@ using UnityEngine;
public class Enemy : Entity
{
public int turnSpeed;
public int minimumAttackRange;
public float minimumAttackRange;
private PlayerEntity closestPlayer;
//no weapons yet for enemies so...
public float damage;
void Start()
{
turnSpeed = Random.Range(0, 100);
@ -14,10 +15,22 @@ public class Enemy : Entity
[ContextMenu("ForceTurn")]
public void StartTurn()
{
TurnHandler.instance.UpdateTurns();
closestPlayer = FindClosestPlayer();
Debug.Log(closestPlayer);
EnemyMovement.instance.PathfindToTarget(closestPlayer.currentTile.neighbors[Random.Range(0, closestPlayer.currentTile.neighbors.Count)], this);
if (Vector3.Distance(transform.position, closestPlayer.transform.position) > minimumAttackRange)
{
EnemyMovement.instance.PathfindToTarget(closestPlayer.currentTile.neighbors[Random.Range(0, closestPlayer.currentTile.neighbors.Count)], this);
}
else
{
Attack(closestPlayer);
TurnHandler.instance.UpdateTurns();
}
}
protected override void FinishedMovement()
{
base.FinishedMovement();
TurnHandler.instance.UpdateTurns();
}
private PlayerEntity FindClosestPlayer()
@ -32,4 +45,13 @@ public class Enemy : Entity
}
return currentClosestPlayer;
}
protected override void OnKillEffects()
{
TurnHandler.instance.enemyEntities.Remove(this);
Destroy(gameObject);
}
public void Attack(PlayerEntity target)
{
target.TakeDamage(damage);
}
}

View file

@ -21,16 +21,17 @@ public class EnemyMovement : MonoBehaviour
private Queue<TileObject> frontier = new();
private HashSet<TileObject> visited = new();
private Dictionary<TileObject, TileObject> currentPaths = new();
public List<TileObject> pathRequested;
public void PathfindToTarget(TileObject target, Entity selectedEntity)
{
frontier.Clear();
visited.Clear();
currentPaths.Clear();
GetTilesInRange(selectedEntity);
TileObject requestedTile = GetPathToTarget(target, selectedEntity);
selectedEntity.currentTile = requestedTile;
selectedEntity.transform.position = requestedTile.transform.position;
GetPathToTarget(GridManager.instance.FindClosestEmptyTile(target), selectedEntity);
selectedEntity.currentTile.hasUnit = null;
selectedEntity.currentTile.hasUnit = selectedEntity;
StartCoroutine(selectedEntity.MoveToLocation(pathRequested.ToArray()));
}
private void GetTilesInRange(Entity selectedEntity)
{
@ -40,7 +41,7 @@ public class EnemyMovement : MonoBehaviour
TileObject currentTile = frontier.Dequeue();
foreach (TileObject neighboringTiles in currentTile.neighbors)
{
if (!visited.Contains(neighboringTiles))
if (!visited.Contains(neighboringTiles) && (!neighboringTiles.hasUnit && !neighboringTiles.blocked))
{
visited.Add(neighboringTiles);
frontier.Enqueue(neighboringTiles);
@ -48,20 +49,23 @@ public class EnemyMovement : MonoBehaviour
}
}
}
Debug.Log(frontier.Count);
}
private TileObject GetPathToTarget(TileObject target, Entity selectedEntity)
private void GetPathToTarget(TileObject target, Entity selectedEntity)
{
TileObject currentTile = target;
List<TileObject> pathToTarget = new();
pathRequested.Clear();
while (currentTile != selectedEntity.currentTile)
{
pathToTarget.Add(currentTile);
pathRequested.Add(currentTile);
currentTile = currentPaths[currentTile];
}
pathToTarget.Reverse();
int validMovementRange = Mathf.Min(pathToTarget.Count, selectedEntity.maxMovement) - 1;
return pathToTarget[validMovementRange];
pathRequested.Reverse();
int validMovementRange = Mathf.Min(pathRequested.Count, selectedEntity.maxMovement) - 1;
if (pathRequested.Count > selectedEntity.maxMovement)
{
int tilesToRemove = pathRequested.Count - selectedEntity.maxMovement;
pathRequested.RemoveRange(selectedEntity.maxMovement, tilesToRemove);
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
public class EnemySpawner : MonoBehaviour
{
#region Statication
public static EnemySpawner instance;
private void Awake()
{
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
instance = this;
}
#endregion
[SerializeField] private Transform enemyFolder;
[SerializeField] private Enemy[] spawnableEnemies;
public List<Transform> spawnLocationPos;
public List<TileObject> spawnLocations;
public void SpawnEnemy(int amount)//Enemy requestedEnemy)
{
while (amount > 0)
{
Enemy newEnemy = Instantiate(spawnableEnemies[Random.Range(0, spawnableEnemies.Length)], enemyFolder);
TileObject spawnLocation = GridManager.instance.FindClosestEmptyTile(spawnLocations[Random.Range(0, spawnLocations.Count)]);
newEnemy.transform.position = spawnLocation.transform.position;
newEnemy.currentTile = spawnLocation;
newEnemy.currentTile.hasUnit = newEnemy;
TurnHandler.instance.enemyEntities.Add(newEnemy);
amount--;
}
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f5f6dfe086e56c56f9a2aaa37a63c506

View file

@ -24,6 +24,7 @@ public class Entity : MonoBehaviour
{
OnKillEffects();
}
Debug.Log($"{name} took {damage} damage");
}
public void Heal(float healing)
@ -37,6 +38,11 @@ public class Entity : MonoBehaviour
}
protected virtual void FinishedMovement()
{
currentTile.hasUnit = this;
}
public virtual IEnumerator MoveToLocation(TileObject[] pathToMove)
{
float currentState = 0;
@ -53,5 +59,6 @@ public class Entity : MonoBehaviour
}
yield return null;
}
FinishedMovement();
}
}

View file

@ -28,17 +28,24 @@ public class GridManager : MonoBehaviour
[SerializeField] Camera cam;
private Dictionary<Vector2, TileObject> allTiles = new();
[SerializeField] private Transform grid;
private void Start()
{
GenerateGrid();
cam.transform.position = new Vector3((float)width / 2, (float)height / 2, 0);
foreach (PlayerEntity player in TurnHandler.instance.playerEntities)
{
player.currentTile = GetTile(player.transform.position);
player.currentTile = GetTileFromWorldPos(player.transform.position);
player.currentTile.hasUnit = player;
}
foreach (Enemy enemy in TurnHandler.instance.enemyEntities)
{
enemy.currentTile = GetTile(enemy.transform.position);
enemy.currentTile = GetTileFromWorldPos(enemy.transform.position);
enemy.currentTile.hasUnit = enemy;
}
foreach (Transform spawnLocation in EnemySpawner.instance.spawnLocationPos)
{
EnemySpawner.instance.spawnLocations.Add(GetTileFromWorldPos(spawnLocation.position));
}
}
@ -52,6 +59,7 @@ public class GridManager : MonoBehaviour
TileObject newTile = Instantiate(tilePrefab, pos, Quaternion.identity);
newTile.name = $"Tile {x} {y}";
allTiles[pos] = newTile;
newTile.transform.SetParent(grid);
}
}
GetTileNeighbors();
@ -65,15 +73,15 @@ public class GridManager : MonoBehaviour
{
Vector2 pos = new Vector2(x - ((float)width / 2) + 0.5f, y - ((float)height / 2) + 0.5f);
TileObject currentTile = allTiles[pos];
if (GetTile(pos + Vector2.up)) { currentTile.neighbors.Add(GetTile(pos+Vector2.up));}
if (GetTile(pos + Vector2.down)) { currentTile.neighbors.Add(GetTile(pos+Vector2.down));}
if (GetTile(pos + Vector2.left)) { currentTile.neighbors.Add(GetTile(pos+Vector2.left));}
if (GetTile(pos + Vector2.right)) { currentTile.neighbors.Add(GetTile(pos+Vector2.right));}
if (GetTileFromWorldPos(pos + Vector2.up)) { currentTile.neighbors.Add(GetTileFromWorldPos(pos+Vector2.up));}
if (GetTileFromWorldPos(pos + Vector2.down)) { currentTile.neighbors.Add(GetTileFromWorldPos(pos+Vector2.down));}
if (GetTileFromWorldPos(pos + Vector2.left)) { currentTile.neighbors.Add(GetTileFromWorldPos(pos+Vector2.left));}
if (GetTileFromWorldPos(pos + Vector2.right)) { currentTile.neighbors.Add(GetTileFromWorldPos(pos+Vector2.right));}
}
}
}
public TileObject GetTile(Vector2 pos)
public TileObject GetTileFromWorldPos(Vector2 pos)
{
if (allTiles.TryGetValue(pos, out TileObject tile))
{
@ -81,4 +89,31 @@ public class GridManager : MonoBehaviour
}
return null;
}
public TileObject FindClosestEmptyTile(TileObject requestedTile)
{
if (!requestedTile.hasUnit)
{
return requestedTile;
}
Queue<TileObject> frontier = new();
List<TileObject> visited = new();
frontier.Enqueue(requestedTile);
while (frontier.Count > 0)
{
TileObject currentTile = frontier.Dequeue();
foreach (TileObject neighbor in currentTile.neighbors)
{
if (!visited.Contains(neighbor))
{
if (!neighbor.hasUnit && !neighbor.blocked)
{
return neighbor;
}
visited.Add(neighbor);
frontier.Enqueue(neighbor);
}
}
}
return null;
}
}

View file

@ -42,9 +42,20 @@ public class PlayerEntity : Entity
{
}
protected override void FinishedMovement()
{
base.FinishedMovement();
TurnHandler.instance.UpdateTurns();
if (!ActionUIHandler.instance.opened)
{
ActionUIHandler.instance.ShowUI(this);
}
}
private void OnMouseDown()
{
if ((!hasMoved) && !PlayerEntityMovement.instance.isMoving)
if ((!hasMoved || !hasAttacked) && !PlayerEntityMovement.instance.isMoving)
{
ActionUIHandler.instance.ShowUI(this);
}

View file

@ -60,7 +60,7 @@ public class PlayerEntityMovement : MonoBehaviour
{
Deselect();
}
TileObject newTile = GridManager.instance.GetTile(mouseGridPos);
TileObject newTile = GridManager.instance.GetTileFromWorldPos(mouseGridPos);
if (requestedTile != newTile)
{
requestedTile = newTile;
@ -154,12 +154,19 @@ public class PlayerEntityMovement : MonoBehaviour
{
return false;
}
selectedEntity.currentTile.hasUnit = false;
requestedTile.hasUnit = true;
selectedEntity.currentTile.hasUnit = null;
requestedTile.hasUnit = selectedEntity;
StartCoroutine(selectedEntity.MoveToLocation(pathRequested.ToArray()));
templateObject.SetActive(false);
UncolorGrid();
ActionUIHandler.instance.ShowUI(selectedEntity);
if (!selectedEntity.hasMoved)
{
selectedEntity.hasMoved = true;
}
else
{
selectedEntity.hasAttacked = true;
}
return true;
}

View file

@ -17,7 +17,6 @@ public class RangedWeapon : Weapon
{
if (!fired)
{
fired = true;
AttackEffects();
}
}
@ -39,6 +38,13 @@ public class RangedWeapon : Weapon
if (Input.GetMouseButtonDown(0))
{
CreateProjectile(mousePos);
fired = true;
isAiming = false;
thisEntity.hasAttacked = true;
TurnHandler.instance.UpdateTurns();
}
else if (Input.GetMouseButtonDown(1))
{
isAiming = false;
}
}

View file

@ -9,7 +9,7 @@ public class TileObject : MonoBehaviour
public SpriteRenderer sprite;
[Header("Status")]
public bool blocked = false;
public bool hasUnit = false;
public Entity hasUnit;
private void OnMouseEnter()
{
//highlight.SetActive(true);

View file

@ -21,6 +21,7 @@ public class TurnHandler : MonoBehaviour
#endregion
[Header("Entity Lists")]
public List<PlayerEntity> playerEntities = new();
public List<Enemy> enemyEntities = new();
public enum GameState {PlayerTurn, EnemyTurn}
@ -28,6 +29,9 @@ public class TurnHandler : MonoBehaviour
private int currentEnemy = 0;
[Header("Spawning")]
[SerializeField] private int enemySpawnAmount;
private void SortEnemies()
{
enemyEntities = enemyEntities.OrderBy(o=>o.turnSpeed).ToList();
@ -42,33 +46,59 @@ public class TurnHandler : MonoBehaviour
{
if (currentGameState == GameState.PlayerTurn)
{
bool allDone = true;
foreach (PlayerEntity player in playerEntities)
{
if (!player.hasMoved || !player.hasAttacked)
{
allDone = false;
return;
}
}
if (allDone)
currentGameState = GameState.EnemyTurn;
if (!enemyEntities[0])
{
EndRound();
}
else
{
currentGameState = GameState.EnemyTurn;
enemyEntities[0].StartTurn();
}
}
else if (currentGameState == GameState.EnemyTurn)
{
enemyEntities[currentEnemy].StartTurn();
currentEnemy++;
if (currentEnemy > enemyEntities.Count - 1)
{
currentGameState = GameState.PlayerTurn;
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = false;
player.hasAttacked = false;
}
EndRound();
return;
}
enemyEntities[currentEnemy].StartTurn();
}
}
private void EndRound()
{
EnvironmentTurn();
currentEnemy = 0;
currentGameState = GameState.PlayerTurn;
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = false;
player.hasAttacked = false;
}
}
public void EnvironmentTurn()
{
EnemySpawner.instance.SpawnEnemy(enemySpawnAmount);
}
public void SkipAll()
{
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = true;
player.hasAttacked = true;
}
UpdateTurns();
}
}