Browse Source

解决场景冲突

pull/7/head
软件204张景程 2 years ago
parent
commit
eeb4bf679f
  1. 8
      ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab.meta
  2. 237
      ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab/BuffIcon.prefab
  3. 7
      ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab/BuffIcon.prefab.meta
  4. 8
      ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab.meta
  5. 174
      ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab/Image.prefab
  6. 7
      ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab/Image.prefab.meta
  7. 3588
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  8. 8
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs
  9. 99
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs
  10. 10
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  11. 183
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs
  12. 122
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs
  13. 43
      ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs
  14. 12
      ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs
  15. 28
      ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs
  16. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyPlanActionUI.cs
  17. 98
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs
  18. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/PlayerUIBar.cs
  19. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs
  20. 156
      ColorlessWorld-2024-4-2/UserSettings/Layouts/CurrentMaximizeLayout.dwlt
  21. 1094
      ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt
  22. BIN
      ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache
  23. BIN
      ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache
  24. BIN
      ColorlessWorld-2024-4-2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

8
ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00e47d7323faff4408563b301210b68b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

237
ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab/BuffIcon.prefab

@ -0,0 +1,237 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &610775712955856159
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7807764757529915208}
- component: {fileID: 4149673547459892155}
- component: {fileID: 4092475717025940613}
m_Layer: 0
m_Name: BuffIcon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7807764757529915208
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 610775712955856159}
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: 1
m_Children:
- {fileID: 5566427239031149402}
- {fileID: 628428755517995627}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4149673547459892155
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 610775712955856159}
m_CullTransparentMesh: 1
--- !u!114 &4092475717025940613
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 610775712955856159}
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: 0}
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 &5955648499163411156
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 628428755517995627}
- component: {fileID: 4953326812075947436}
- component: {fileID: 3406283921332908940}
m_Layer: 0
m_Name: Text (Legacy) (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &628428755517995627
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5955648499163411156}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0}
m_LocalScale: {x: 0.005, y: 0.005, z: 0.005}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 7807764757529915208}
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.055, y: -0.046}
m_SizeDelta: {x: 30.003, y: 29.992}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4953326812075947436
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5955648499163411156}
m_CullTransparentMesh: 1
--- !u!114 &3406283921332908940
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5955648499163411156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 15
m_FontStyle: 1
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 0
--- !u!1 &6410111539695626645
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5566427239031149402}
- component: {fileID: 1753794592030971005}
- component: {fileID: 138715787103472225}
m_Layer: 0
m_Name: Text (Legacy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5566427239031149402
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6410111539695626645}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.000000059662}
m_LocalScale: {x: 0.005, y: 0.005, z: 0.005}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 7807764757529915208}
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.012, y: -0.000000031044}
m_SizeDelta: {x: 30.003, y: 29.992}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1753794592030971005
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6410111539695626645}
m_CullTransparentMesh: 1
--- !u!114 &138715787103472225
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6410111539695626645}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 25
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: "\u6BD2"

7
ColorlessWorld-2024-4-2/Assets/Prefab/BuffPrefab/BuffIcon.prefab.meta

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 457a3d2dee855fa41a324600bf63e57f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 88bb1d2cff1d75b469080778b316f64a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

174
ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab/Image.prefab

@ -0,0 +1,174 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3996261003794035401
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6790409858285281716}
- component: {fileID: 7032477433257849847}
- component: {fileID: 8739200574348231683}
- component: {fileID: 2042335090264202183}
m_Layer: 5
m_Name: mark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &6790409858285281716
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3996261003794035401}
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: 7415125321418995972}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 27, y: -97.70001}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &7032477433257849847
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3996261003794035401}
m_CullTransparentMesh: 1
--- !u!114 &8739200574348231683
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3996261003794035401}
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: 21300000, guid: 742bf0b88f4012442b999ad674d86419, 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 &2042335090264202183
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3996261003794035401}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 1
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &5569660811439888322
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7415125321418995972}
- component: {fileID: 5383049423861598141}
- component: {fileID: 8435934115229815838}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7415125321418995972
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5569660811439888322}
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: 6790409858285281716}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5383049423861598141
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5569660811439888322}
m_CullTransparentMesh: 1
--- !u!114 &8435934115229815838
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5569660811439888322}
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: 0}
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

7
ColorlessWorld-2024-4-2/Assets/Prefab/EnemySortIconPrefab/Image.prefab.meta

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6bc0944d755f465408cd5614f23db880
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

3588
ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity

File diff suppressed because it is too large

8
ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs

@ -73,12 +73,11 @@ public class TurnMaster : Singleton<TurnMaster>
//StartCoroutine(EnemyTurn());
//敌人动作如移动,涂色
EnemyManager.Instance.EnemyTurn_Observer();
EnemyManager.Instance.EnemyColour_Observer();
EnemyManager.Instance.EnemyTurn_Observer();
EnemyManager.Instance.enemyTurnSettle(0);
EndEnemyTurn();
turn = Turn.turnStop;
// EndEnemyTurn();在enemyTurn里面调用
}
//同步UI
@ -99,6 +98,7 @@ public class TurnMaster : Singleton<TurnMaster>
}
public void EndEnemyTurn()
{
EnemyManager.Instance.enemyTurnState = EnemyManager.EnemyTurnState.end;
turn = Turn.playerTurnBegin;
}

99
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs

@ -1,20 +1,58 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class EnemyManager : Singleton<EnemyManager>
{
[SerializeField]
public List<IEnemyObserver> enemyObservers = new List<IEnemyObserver>();
// [Header ("¹ÖÎï¹¥»÷·¶Î§Ô¤ÀÀÓ°Ïì³Ø")]
// public List<MapUnity> influencePreviewPool = new List<MapUnity>();
[Header("怪物顺序控件")]
public List<EnemyNode> enemySpeedSortingList;//安照速度进行排序
public int enemyCount;//记录几只怪进行了行动
public EnemyTurnState enemyTurnState;
[Header("怪物顺序UI控件")]
public List<GameObject> enemySortIconList = new List<GameObject>();//怪物排序UI图标
public GameObject enemySortIconPrefab;//icon预制体
public GameObject enemySortIconPanle;//排序父级面板
public enum EnemyTurnState
{
stop,
runing,
end
}
// [Header ("怪物攻击范围预览影响池")]
// public List<MapUnity> influencePreviewPool = new List<MapUnity>();
private void Start()
{
Invoke("GetEnemyPosition_Observer", 6f);
}
public void SpeedSortList()
{
enemySpeedSortingList.Clear();
foreach (var observer in enemyObservers)
{
EnemyNode enemyNode = observer.GetEnemyNode();
if(enemyNode .enemyType ==EnemyNode.EnemyType.enemy )
{
enemySpeedSortingList.Add(enemyNode);
}
}
enemySpeedSortingList.Sort(SpeedSort);
}
private int SpeedSort(EnemyNode a, EnemyNode b)
{
if (a.EnemyState.speed > b.EnemyState.speed)
return -1;
else
return 1;
}
public void GetEnemyPosition_Observer()
{
foreach (var observer in enemyObservers )
@ -31,11 +69,64 @@ public class EnemyManager : Singleton<EnemyManager>
}
public void EnemyTurn_Observer()
{
foreach (var observer in enemyObservers)
SpeedSortList();
enemyCount = 0;
enemyTurnState = EnemyTurnState.stop;
EnemySortIconDelete();
EnemySortIconGnerate();
StartCoroutine(EnemyTurn());
}
IEnumerator EnemyTurn()
{
foreach (var observer in enemySpeedSortingList)
{
EnemySortIconSync();
observer.EnemyTurn();
observer.GetEnemyNode().bleedSettle();
enemyTurnState = EnemyTurnState.stop;
enemyCount += 1;
yield return new WaitUntil(()=>enemyTurnState==EnemyTurnState.runing);
Debug.Log(enemyCount);
if (enemyCount >=enemySpeedSortingList.Count)
{
TurnMaster.Instance.EndEnemyTurn();
}
}
}
public void EnemySortIconGnerate()
{
enemySortIconPanle.GetComponent<RectTransform>().sizeDelta = new Vector2(enemySpeedSortingList.Count * 100 + 50, 100);
for (int i = 0; i < enemySpeedSortingList.Count; i++)
{
var enemySortIcon = Instantiate(enemySortIconPrefab, enemySortIconPanle.transform );
enemySortIcon.GetComponent<Image>().sprite = enemySpeedSortingList[i].EnemyState.enemyIcon;
enemySortIconList.Add(enemySortIcon);
}
}
public void EnemySortIconSync()
{
if (enemyCount >= 1)
{
enemySortIconList[enemyCount-1].transform.localScale = new Vector3(1f, 1f, 1f);
enemySortIconList[enemyCount-1].transform.GetChild(0).gameObject.SetActive(false);
}
enemySortIconList[enemyCount].transform.localScale = new Vector3(1.2f, 1.2f, 1.2f);
enemySortIconList[enemyCount].transform.GetChild(0).gameObject.SetActive(true);
}
public void EnemySortIconDelete()
{
for (int i = 0; i < enemySortIconList.Count; i++)
{
Destroy(enemySortIconList[i]);
}
enemySortIconList.Clear();
}
public void EnemySkillCoolDown_Observer()
{
@ -57,7 +148,7 @@ public class EnemyManager : Singleton<EnemyManager>
foreach (var observer in enemyObservers)
{
observer.GetEnemyNode().enemyTurnSettleInit();
observer.GetEnemyNode().enemyTurnSettle(settleTurn);
observer.GetEnemyNode().enemyTurnSettle(settleTurn);
}
}

10
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs

@ -31,6 +31,9 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
public GameObject lineAim;
public bool canLineAppre;
[Header("敌人UI控制器")]
public EnemyUIBar enemyUIBar;
public enum EnemyType
{
enemy,
@ -75,6 +78,9 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
if (templateEnemyState != null)
EnemyState = Instantiate(templateEnemyState);
if(enemyType ==EnemyType.enemy )
enemyUIBar = GetComponent<EnemyUIBar>();
Invoke("StartPosition", 6f);
}
@ -270,6 +276,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
switch (enemyType)
{
case EnemyType.enemy:
GetComponent<EnemyUIBar>().statePanel.SetActive(false);
Destroy(this.gameObject);
break;
case EnemyType.block:
@ -316,9 +323,10 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
{
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
Debug.Log(key);
switch (key)
{
case AbnormalCondition.posion:
case AbnormalCondition.posion:
posionSettle(EnemyState.abnormalCondition[key]);
break;
case AbnormalCondition.weak:

183
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs

@ -6,14 +6,14 @@ public class SkeletonArcher : MonoBehaviour
{
EnemyNode enemyNode;
public int stayRange = 5;//保持一定距离的范围
[Header("瞄准射线图层剔除")]
public LayerMask layerMask;
[Header("计数标量")]
public float time;
float lastTime = 0;
[Header("移动速度标量")]
public float moveSpeed;
private void Start()
{
@ -32,11 +32,11 @@ public class SkeletonArcher : MonoBehaviour
else
{
enemyNode.FindPath();
if (enemyNode.pasth.Count > stayRange)
if (enemyNode.pasth.Count > enemyNode.EnemyState.attackRange)
{
enemyNode.moveType = EnemyNode.MoveType.front;
}
else if (enemyNode.pasth.Count == stayRange)
else if (enemyNode.pasth.Count == enemyNode.EnemyState.attackRange)
{
enemyNode.moveType = EnemyNode.MoveType.stay;
}
@ -78,6 +78,9 @@ public class SkeletonArcher : MonoBehaviour
}
enemyNode.enemyUIBar.RefreshEnemyBuffIcon();
//重置时间标量
lastTime = time;
}
@ -87,26 +90,126 @@ public class SkeletonArcher : MonoBehaviour
public void skeletonArcherTurn()
{
// enemyNode.FindPath();
StartCoroutine(JudgNextActionCoroutine());
}
IEnumerator JudgeActionCoroutine()//等移动到位置就判断是否还能走
{
for (int i = 0; i < enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier; i++)
{
enemyNode.FindPath();
Debug.Log(enemyNode.pasth.Count);
if (enemyNode.pasth.Count > enemyNode.EnemyState .attackRange )
{
MapUnity currentNode = enemyNode.pasth[0];
MapUnity disNode = enemyNode.pasth[1];
currentNode.blocked = false;
currentNode.enemyNode = null;
enemyNode.positionX = disNode.locationX;
enemyNode.positionY = disNode.locationY;
disNode.enemyNode = enemyNode;
yield return StartCoroutine(SkeletonArcherMoveCoroutine(disNode));
}
else if (enemyNode.pasth.Count == enemyNode.EnemyState.attackRange)
{
/* Vector3 dir = GameManager.Instance.player.transform.position - this.transform.position;
Ray ray = new Ray(this.transform.position, dir);
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value))
{
if(raycastHit .collider .tag != "Player")
{
float angleBlock = Vector3.SignedAngle (GameManager.Instance.playerOn.transform.position-this.transform.position, raycastHit.collider.transform.position-this.transform.position,enemyNode .pasth [0].transform .up);
float anglePlayer= Vector3.SignedAngle(this.transform.position - GameManager.Instance.playerOn.transform.position, GameManager.Instance.playerOn.transform.forward, GameManager.Instance.playerOn.transform.up);
if(angleBlock <=0)
{
}
else
{
}
}
}
*/
SkeletonArcherAction();
yield break;
}
else
{
//反向运动
MapUnity currentNode = enemyNode.pasth[0];
enemyNode.oppositePasth.Clear();
enemyNode.oppositePasth = AStarManager.Instance.FindOppositePath(currentNode, GameManager.Instance.playerOn, enemyNode.EnemyState.stepRange);
if(enemyNode . oppositePasth.Count >1)
{
MapUnity disNode = enemyNode.oppositePasth[1];
currentNode.blocked = false;
currentNode.enemyNode = null;
enemyNode.positionX = disNode.locationX;
enemyNode.positionY = disNode.locationY;
disNode.enemyNode = enemyNode;
yield return StartCoroutine(SkeletonArcherMoveCoroutine(disNode));
}
}
}
SkeletonArcherAction();
}
IEnumerator JudgNextActionCoroutine()
{
yield return StartCoroutine(JudgeActionCoroutine());
//下回合意图
ArcherAim();
enemyNode.SettlementSkill();
NextTurnIntention();
//让下一个敌人运动
EnemyManager.Instance.enemyTurnState = EnemyManager.EnemyTurnState.runing;
}
IEnumerator SkeletonArcherMoveCoroutine(MapUnity endMapUnity)//移动到位置
{
while (true)
{
float dDistance = Vector3.Distance(this.gameObject.transform.position, endMapUnity.transform.position);
if (dDistance < 0.1f)
{
break;
}
this.gameObject.transform.position = Vector3.Lerp(this.gameObject.transform.position, endMapUnity.transform.position, Time.deltaTime * moveSpeed);
yield return 0;
}
}
public void SkeletonArcherAction()
{
float distance = Vector3.Distance(this.transform.position, GameManager.Instance.player.transform.position);
//放技能
if (enemyNode .EnemyState .currentSkillCoolDown >0)
if (enemyNode.EnemyState.currentSkillCoolDown > 0)
{
Vector3 dir = GameManager.Instance.player.transform.position - this.transform.position;
Ray ray = new Ray(this.transform.position, dir);
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value))
{
if (raycastHit.collider.tag == "Player" && enemyNode.pasth.Count+1 <= enemyNode.EnemyState.attackRange)
if (raycastHit.collider.tag == "Player" && distance <= enemyNode.EnemyState.attackRange+0.5f)
{
GameManager.Instance.playerState.currentHP -= (float)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
AttackDamage();
}
}
Debug.Log("远程攻击");
Debug.Log("远程攻击");
}
else
{
if (enemyNode.pasth.Count <= enemyNode.EnemyState.attackRange)
if (distance <= enemyNode.EnemyState.attackRange + 0.5f)
{
ArcherColour(GameManager.Instance.playerOn);
}
@ -117,32 +220,19 @@ public class SkeletonArcher : MonoBehaviour
enemyNode.EnemyState.currentSkillCoolDown = enemyNode.EnemyState.maxSkillCoolDown;
Debug.Log("剑雨");
}
//移动
ArcherMove();
//下回合意图,先判断行走
enemyNode.FindPath();//因为移动过了所以先重新寻路一下
ArcherAim();//因为移动过了所以重新瞄准一下
enemyNode.SettlementSkill();
if (enemyNode.EnemyState.currentMoveCoolDown > 0)
}
public void NextTurnIntention()
{
if (enemyNode.pasth.Count <= enemyNode.EnemyState.attackRange)
{
enemyNode.canMove = false;
}
else
{
if (enemyNode.pasth.Count == stayRange)
{
enemyNode.canMove = false;
}
else
{
enemyNode.canMove = true;
}
enemyNode.canMove = true;
}
//判断下回合放啥技能
if (enemyNode.EnemyState.currentSkillCoolDown<=0)
if (enemyNode.EnemyState.currentSkillCoolDown <= 0)
{
enemyNode.planAction = EnemyNode.PlanAction.aoe;
enemyNode.canLineAppre = true;
@ -153,28 +243,7 @@ public class SkeletonArcher : MonoBehaviour
enemyNode.canLineAppre = true;
}
}
public void ArcherMove()
{
if (enemyNode.pasth.Count > 2)
{
if (enemyNode.canMove)
{
if (enemyNode.moveType == EnemyNode.MoveType.front)
{
enemyNode.Move(enemyNode.pasth[0], enemyNode.EnemyState.stepRange);
}
else if (enemyNode.moveType == EnemyNode.MoveType.stay)
{
//不动
}
else
{
enemyNode.MoveOpposite(enemyNode.oppositePasth[0], enemyNode.EnemyState.stepRange);
}
}
}
}
public void ArcherColour(MapUnity currentNode)
{
List<MapUnity> toColourPool = new List<MapUnity>();
@ -197,7 +266,7 @@ public class SkeletonArcher : MonoBehaviour
toColourPool[c].whoColour = MapUnity.WhoColour.enemyColour;
if(toColourPool[c].playerOn)
{
GameManager.Instance.playerState.currentHP -= (float)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
AttackDamage();
}
}
}
@ -213,4 +282,14 @@ public class SkeletonArcher : MonoBehaviour
}
}
public void AttackDamage()
{
Usermanager.Instance.shield -= (int)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
if (Usermanager.Instance.shield < 0)
{
GameManager.Instance.playerState.currentHP += Usermanager.Instance.shield;
Usermanager.Instance.shield = 0;
}
}
}

122
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs

@ -9,6 +9,8 @@ public class SkullGuardian : MonoBehaviour
[Header("计数标量")]
public float time;
float lastTime = 0;
[Header("移动速度标量")]
public float moveSpeed;
private void Start()
{
@ -28,6 +30,16 @@ public class SkullGuardian : MonoBehaviour
{
enemyNode.FindPath();
if(enemyNode .pasth .Count >1)
{
enemyNode.canMove = true;
}
else
{
enemyNode.canMove = false;
}
enemyNode.enemyUIBar.RefreshEnemyBuffIcon();
//重置时间标量
lastTime = time;
}
@ -35,51 +47,92 @@ public class SkullGuardian : MonoBehaviour
}
public void SkullGuardianTurn()
{
enemyNode.FindPath();
StartCoroutine(JudgNextActionCoroutine ());
}
public void SkullGuardianAction()
{
//回合动作
switch (enemyNode.planAction)
{
case EnemyNode.PlanAction.attack:
//攻击
MapUnity currentMapUnity = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY];
if (enemyNode.canMove)
{
if(enemyNode.pasth.Count<= enemyNode.EnemyState.attackRange + enemyNode.EnemyState.stepRange* enemyNode.EnemyState.stepRangeMultiplier)
{
GameManager.Instance.playerState.currentHP -= (float)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
}
}
else
{
if (enemyNode.pasth.Count <= enemyNode.EnemyState.attackRange)
{
GameManager.Instance.playerState.currentHP -= (float)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
}
}
AttackDamage();
Debug.Log("攻击");
break;
break;
case EnemyNode.PlanAction.sheield:
//回盾
enemyNode.EnemyState.shieldValue += enemyNode.EnemyState.upShieldValue;
enemyNode.EnemyState.currentSkillCoolDown = enemyNode.EnemyState.maxSkillCoolDown;
Debug.Log("回盾");
break;
}
SkullGuardianMove();
//Ï»غÏÒâͼ
enemyNode.SettlementSkill();
NextTurnIntention();
}
public void SkullGuardianMove()
{
if (enemyNode.pasth.Count > 2&& enemyNode.canMove)
if (enemyNode.pasth.Count >= 2&& enemyNode.canMove)
{
enemyNode.Move(enemyNode.pasth[0], enemyNode.EnemyState.stepRange);
}
}
IEnumerator JudgeActionCoroutine()//等移动到位置就判断是否还能走
{
for(int i = 0;i< enemyNode .EnemyState .stepRange * enemyNode.EnemyState.stepRangeMultiplier;i++)
{
enemyNode.FindPath();
if (enemyNode.pasth.Count > 1)
{
MapUnity currentNode = enemyNode.pasth[0];
MapUnity disNode = enemyNode.pasth[1];
currentNode.blocked = false;
currentNode.enemyNode = null;
enemyNode.positionX = disNode.locationX;
enemyNode.positionY = disNode.locationY;
disNode.enemyNode = enemyNode;
yield return StartCoroutine(SkullGuardianMoveCoroutine(disNode));
}
else if(enemyNode.pasth.Count == 1&& enemyNode.planAction == EnemyNode.PlanAction.attack )
{
SkullGuardianAction();
yield break;
}
}
if (enemyNode.planAction == EnemyNode.PlanAction.sheield)
{
SkullGuardianAction();
}
}
IEnumerator JudgNextActionCoroutine()
{
yield return StartCoroutine(JudgeActionCoroutine());
//下回合意图
enemyNode.SettlementSkill();
NextTurnIntention();
//让下一个敌人运动
EnemyManager.Instance.enemyTurnState = EnemyManager.EnemyTurnState.runing;
Debug.Log(1);
}
IEnumerator SkullGuardianMoveCoroutine( MapUnity endMapUnity )//移动到位置
{
while ( true )
{
float dDistance = Vector3.Distance(this.gameObject.transform.position, endMapUnity.transform.position);
if(dDistance < 0.1f)
{
break;
}
this.gameObject .transform .position = Vector3.Lerp(this.gameObject.transform.position, endMapUnity.transform.position, Time.deltaTime * moveSpeed);
yield return 0;
}
}
public void NextTurnIntention()
@ -106,26 +159,13 @@ public class SkullGuardian : MonoBehaviour
}
public void WolfColour()
public void AttackDamage()
{
MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY];
List<MapUnity> toColourPool = new List<MapUnity>();
for (int i = 0; i < currentNode.unitPool.Count; i++)
{
if (currentNode.unitPool[i] != null && currentNode.unitPool[i].blocked == false)
{
toColourPool.Add(currentNode.unitPool[i]);
}
}
for (int c = 0; c < 3; c++)
Usermanager.Instance.shield -= (int)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
if (Usermanager.Instance.shield < 0)
{
if (toColourPool.Count > 0)
{
int r = Random.Range(0, toColourPool.Count);
toColourPool[r].whoColour = MapUnity.WhoColour.enemyColour;
toColourPool.RemoveAt(r);
}
GameManager.Instance.playerState.currentHP += Usermanager.Instance.shield;
Usermanager.Instance.shield = 0;
}
}
}

43
ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs

@ -44,7 +44,16 @@ public class GameManager : Singleton<GameManager>
{
for (int i = 0; i < MapManager.Instance.line; i++)
{
for (int j = 0; j < MapManager.Instance.column; j++)
int currentColum = 0;
if(i%2 ==0)
{
currentColum = MapManager.Instance.column;
}
else
{
currentColum = MapManager.Instance.column -1;
}
for (int j = 0; j <currentColum; j++)
{
X[i].Y.Add(null);
}
@ -155,35 +164,12 @@ public class GameManager : Singleton<GameManager>
}
else if(j > enemyBoundary)
{
if( j < X [i].Y .Count)
X[i].Y[j].whoColour = MapUnity.WhoColour.enemyColour;
}
}
}
/* else
{
for (int i = 0; i < X.Count; i++)
{
for (int j = 0; j < X[i].Y.Count; j++)
{
if (j < boundary)
{
X[i].Y[j].whoColour = MapUnity.WhoColour.playerColour;
}
else if(j==boundary )
{
if(i%2==0)
{
X[i].Y[j].whoColour = MapUnity.WhoColour.playerColour;
}
}
else
{
X[i].Y[j].whoColour = MapUnity.WhoColour.enemyColour;
}
}
}
}*/
}
}
@ -192,6 +178,11 @@ public class GameManager : Singleton<GameManager>
public void CompleteGenerate()
{
complete = true;
SyncColourCountUI();
EnemyManager.Instance.SpeedSortList();
EnemyManager.Instance.EnemySortIconGnerate();
TurnMaster.Instance.turn = TurnMaster.Turn.playerTurnBegin;
}
}

12
ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs

@ -30,7 +30,17 @@ public class MapManager : Singleton <MapManager>
}
generatePoint.transform.position = new Vector3(0, 0, generatePoint.transform.position.z);
for (int j =0;j<column;j++)
int currentColumn = column;
if(i % 2 == 0)
{
currentColumn = column;
}
else
{
currentColumn = column - 1;
}
for (int j =0;j<currentColumn ;j++)
{
if (i % 2 != 0&&j == 0)
{

28
ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs

@ -105,47 +105,49 @@ public class MapUnity : MonoBehaviour
{
unitPool[0] = GameManager.Instance.X[locationX].Y[locationY - 1];
if (locationX + 2 <= MapManager .Instance .line )
if (locationX + 2 <= MapManager .Instance .line && locationY - 1 < GameManager.Instance.X[locationX + 1].Y.Count)
{
unitPool[1] = GameManager.Instance.X[locationX + 1].Y[locationY - 1];
}
}
if (locationX + 2 <= MapManager.Instance.line)
if (locationX + 2 <= MapManager.Instance.line && locationY < GameManager.Instance.X[locationX + 1].Y.Count)
unitPool[2] = GameManager.Instance.X[locationX + 1].Y[locationY];
if (locationY + 2 <= MapManager.Instance.column)
if (locationY + 2 <= MapManager.Instance.column && locationY + 1 < GameManager.Instance.X[locationX ].Y.Count)
unitPool[3] = GameManager.Instance.X[locationX].Y[locationY + 1];
if (locationX - 1 >= 0)
if (locationX - 1 >= 0 && locationY < GameManager.Instance.X[locationX - 1].Y.Count)
{
unitPool[4] = GameManager.Instance.X[locationX - 1].Y[locationY];
if (locationY - 1 >= 0)
unitPool[5] = GameManager.Instance.X[locationX - 1].Y[locationY-1];
}
if (locationX - 1 >= 0&&locationY - 1 >= 0)
{
unitPool[5] = GameManager.Instance.X[locationX - 1].Y[locationY - 1];
}
}
else//ÆæÊý
{
if (locationY - 1 >= 0)
if (locationY - 1 >= 0 && locationY - 1 < GameManager.Instance.X[locationX ].Y.Count)
{
unitPool[0] = GameManager.Instance.X[locationX].Y[locationY - 1];
}
if (locationX + 2 <= MapManager.Instance.line)
if (locationX + 2 <= MapManager.Instance.line && locationY < GameManager.Instance.X[locationX + 1].Y.Count)
{
unitPool[1] = GameManager.Instance.X[locationX + 1].Y[locationY];
if (locationY + 2 <= MapManager.Instance.column)
if (locationY + 2 <= MapManager.Instance.column && locationY + 1 < GameManager.Instance.X[locationX + 1].Y.Count)
unitPool[2] = GameManager.Instance.X[locationX + 1].Y[locationY + 1];
}
if (locationY + 2 <= MapManager.Instance.column)
if (locationY + 2 <= MapManager.Instance.column && locationY + 1 < GameManager.Instance.X[locationX].Y.Count)
unitPool[3] = GameManager.Instance.X[locationX].Y[locationY + 1];
if (locationX - 1 >= 0)
if (locationX - 1 >= 0 )
{
if (locationY + 2 <= MapManager.Instance.column)
if (locationY + 2 <= MapManager.Instance.column && locationY + 1 < GameManager.Instance.X[locationX - 1].Y.Count)
unitPool[4] = GameManager.Instance.X[locationX - 1].Y[locationY + 1];
unitPool[5] = GameManager.Instance.X[locationX - 1].Y[locationY];

20
ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyPlanActionUI.cs

@ -27,8 +27,8 @@ public class EnemyPlanActionUI : MonoBehaviour
//攻击
if (enemyNode.canMove)
{
stateText.text = "这个敌人将会造成" + attackDamageText.text + "点伤害。" + "这个敌人将会移动" + enemyNode.EnemyState.stepRange.ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange + enemyNode.EnemyState.stepRange, enemyNode.rangePool);
stateText.text = "这个敌人将会造成" + attackDamageText.text + "点伤害。" + "这个敌人将会移动" + ((int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier)).ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange + (int)(enemyNode.EnemyState.stepRange* enemyNode.EnemyState.stepRangeMultiplier), enemyNode.rangePool);
}
else
{
@ -65,8 +65,8 @@ public class EnemyPlanActionUI : MonoBehaviour
//攻击
if (enemyNode.canMove)
{
stateText.text = "这个敌人将会造成" + attackDamageText.text + "点伤害。" + "这个敌人将会移动" + enemyNode.EnemyState.stepRange.ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange, enemyNode.rangePool);
stateText.text = "这个敌人将会造成" + attackDamageText.text + "点伤害。" + "这个敌人将会移动" + ((int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier)).ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange+(int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier), enemyNode.rangePool);
}
else
{
@ -80,13 +80,13 @@ public class EnemyPlanActionUI : MonoBehaviour
}
break;
case EnemyNode.PlanAction.sheield:
//攻击
if (enemyNode.canMove)
{
stateText.text = "这个敌人将会回复" + attackDamageText.text + "点护盾。" + "这个敌人将会移动" + enemyNode.EnemyState.stepRange.ToString() + "个格子。";
stateText.text = "这个敌人将会回复" + attackDamageText.text + "点护盾。" + "这个敌人将会移动" + ((int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier)).ToString() + "个格子。";
if (enemyNode.pasth.Count > enemyNode.EnemyState.stepRange)
{
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.stepRange, enemyNode.rangePool);
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, (int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier), enemyNode.rangePool);
}
else
{
@ -104,8 +104,8 @@ public class EnemyPlanActionUI : MonoBehaviour
enemyNode.lineAim.GetComponent<EnemyAimLine>().Appear();
if (enemyNode.canMove)
{
stateText.text = "这个敌人将无会造成范围伤害。这个敌人将会移动" + enemyNode.EnemyState.stepRange.ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange, enemyNode.rangePool);
stateText.text = "这个敌人将无会造成范围伤害。这个敌人将会移动" + ((int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier)).ToString() + "个格子。";
EnemyManager.Instance.AttackRangePreviewInfluencedNode(currentMapUnity, enemyNode.EnemyState.attackRange+(int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier), enemyNode.rangePool);
}
else
{
@ -117,7 +117,7 @@ public class EnemyPlanActionUI : MonoBehaviour
stateText.text = "这个敌人将无所事事";
if (enemyNode.canMove)
{
stateText.text = "这个敌人将会移动" + enemyNode.EnemyState.stepRange.ToString() + "个格子。";
stateText.text = "这个敌人将会移动" + ((int)(enemyNode.EnemyState.stepRange * enemyNode.EnemyState.stepRangeMultiplier)).ToString() + "个格子。";
}
break;

98
ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs

@ -3,10 +3,15 @@ using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using System.Linq;
using System.Xml;
public class EnemyUIBar : MonoBehaviour
{
[Header("常驻角色属性")]
public Image HPBar;
public Text currentHPText;
public Text maxHPText;
public Text sheildText;
EnemyNode enemyNode;
@ -32,6 +37,11 @@ public class EnemyUIBar : MonoBehaviour
public Text nameText;
public Image enemyIcon;
[Header("Buff图标显示")]
public List<GameObject> buffIconList = new List<GameObject>();
public GameObject buffIcon;
public GameObject buffPanle;
[Header("¼ÆÊý±êÁ¿")]
public float time;
float lastTime=0;
@ -45,6 +55,8 @@ public class EnemyUIBar : MonoBehaviour
{
HPBar.fillAmount = enemyNode .EnemyState .currentHP /enemyNode .EnemyState .maxHP;
sheildText.text = enemyNode.EnemyState.shieldValue.ToString();
currentHPText.text = enemyNode.EnemyState.currentHP.ToString();
maxHPText.text = enemyNode.EnemyState.maxHP.ToString();
//Çл»ÒâͼUI
@ -131,5 +143,89 @@ public class EnemyUIBar : MonoBehaviour
statePanel.SetActive(false);
}
//异常Buff显示
public void RefreshEnemyBuffIcon()
{
EnemyState_SO EnemyState = enemyNode.EnemyState;
//先清空
foreach (var icon in buffIconList )
{
Destroy(icon);
}
buffIconList.Clear();
//再刷新
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
switch (key)
{
case AbnormalCondition.posion:
if(EnemyState.abnormalCondition[key]!=0)
{
var posion = Instantiate(buffIcon, buffPanle.transform);
posion.transform.GetChild(0).GetComponent<Text>().text = "毒";
posion.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(posion);
}
break;
case AbnormalCondition.weak:
if (EnemyState.abnormalCondition[key] != 0)
{
var weak = Instantiate(buffIcon, buffPanle.transform);
weak.transform.GetChild(0).GetComponent<Text>().text = "虚";
weak.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(weak);
}
break;
case AbnormalCondition.coma:
if (EnemyState.abnormalCondition[key] != 0)
{
var coma = Instantiate(buffIcon, buffPanle.transform);
coma.transform.GetChild(0).GetComponent<Text>().text = "晕";
coma.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(coma);
}
break;
case AbnormalCondition.disarm:
if (EnemyState.abnormalCondition[key] != 0)
{
var disarm = Instantiate(buffIcon, buffPanle.transform);
disarm.transform.GetChild(0).GetComponent<Text>().text = "缴";
disarm.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(disarm);
}
break;
case AbnormalCondition.sleep:
if (EnemyState.abnormalCondition[key] != 0)
{
var sleep = Instantiate(buffIcon, buffPanle.transform);
sleep.transform.GetChild(0).GetComponent<Text>().text = "睡";
sleep.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(sleep);
}
break;
case AbnormalCondition.bleed:
if (EnemyState.abnormalCondition[key] != 0)
{
var bleed = Instantiate(buffIcon, buffPanle.transform);
bleed.transform.GetChild(0).GetComponent<Text>().text = "流";
bleed.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(bleed);
}
break;
case AbnormalCondition.thorn:
if (EnemyState.abnormalCondition[key] != 0)
{
var thorn = Instantiate(buffIcon, buffPanle.transform);
thorn.transform.GetChild(0).GetComponent<Text>().text = "刺";
thorn.transform.GetChild(1).GetComponent<Text>().text = EnemyState.abnormalCondition[key].ToString();
buffIconList.Add(thorn);
}
break;
}
}
}
}

4
ColorlessWorld-2024-4-2/Assets/Scripts/UI/PlayerUIBar.cs

@ -6,10 +6,14 @@ using UnityEngine.UI;
public class PlayerUIBar : MonoBehaviour
{
public Image HPBar;
public Text textCurrentHPdValue;
public Text textMaxHPValue;
public Text stepText;
public Text textShieldValue;
private void Update()
{
textCurrentHPdValue.text = GameManager.Instance.playerState.currentHP.ToString();
textMaxHPValue.text = GameManager.Instance.playerState.maxHP.ToString();
HPBar.fillAmount = GameManager.Instance.playerState.currentHP / GameManager.Instance.playerState.maxHP;
stepText.text = GameManager.Instance.playerState.currentStepRange.ToString();
textShieldValue.text = Usermanager.Instance.shield.ToString();

2
ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

@ -78,7 +78,7 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.disarm:
case CardFunction.sleep:
case CardFunction.thorn:
abnormalConditionWork(kvp.Value, int.Parse(kvp.Value), influencePreviewPool);
abnormalConditionWork(kvp.Key, int.Parse(kvp.Value), influencePreviewPool);
break;
case CardFunction.costRestore:
TurnMaster.Instance.currentCost += int.Parse(kvp.Value);

156
ColorlessWorld-2024-4-2/UserSettings/Layouts/CurrentMaximizeLayout.dwlt

@ -19,8 +19,8 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 30
width: 1459.2
height: 756.4
width: 1473.6
height: 770.8
m_MinSize: {x: 300, y: 100}
m_MaxSize: {x: 24288, y: 16192}
vertical: 0
@ -46,10 +46,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 413.6
y: 80.8
width: 762
height: 455.8
x: 409.6
y: 73.6
width: 769.99994
height: 466.2
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -102,10 +102,10 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 21
width: 762
height: 434.8
m_Scale: {x: 0.49609375, y: 0.49609375}
m_Translation: {x: 381, y: 217.4}
width: 769.99994
height: 445.2
m_Scale: {x: 0.50130206, y: 0.50130206}
m_Translation: {x: 385, y: 222.6}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
@ -113,12 +113,12 @@ MonoBehaviour:
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -768
y: -438.2236
y: -444.04367
width: 1536
height: 876.4472
height: 888.08734
m_MinimalGUI: 1
m_defaultScale: 0.49609375
m_LastWindowPixelSize: {x: 952.5, y: 569.75}
m_defaultScale: 0.50130206
m_LastWindowPixelSize: {x: 962.49994, y: 582.75}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 00000000000000000000
@ -143,8 +143,8 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 1108
height: 756.4
width: 1119.2
height: 770.8
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
@ -168,8 +168,8 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 1108
height: 476.8
width: 1119.2
height: 487.2
m_MinSize: {x: 200, y: 50}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
@ -191,8 +191,8 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 344
height: 476.8
width: 347.2
height: 487.2
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 6}
@ -221,10 +221,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 69.6
y: 80.8
width: 343
height: 455.8
x: 62.4
y: 73.6
width: 346.2
height: 466.2
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -237,10 +237,10 @@ MonoBehaviour:
m_OverlaysVisible: 1
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 157.20001}
m_SelectedIDs: d46d0000
m_LastClickedID: 28116
m_ExpandedIDs: a4a5ffff2afbffff2a6d00005c6e000092710000
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: be2bfcff062cfcff262dfcff72bbfffff0bbffff58bdffff2afbffffd46c0000426d0000f46d0000046f0000366f0000926f0000aa700000507100009a710000c2710000ea7100000472000060720000ba720000c47200000a7300002c730000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -279,10 +279,10 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 344
x: 347.2
y: 0
width: 764
height: 476.8
width: 771.99994
height: 487.2
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 2}
@ -312,10 +312,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 413.6
y: 80.8
width: 762
height: 455.8
x: 409.6
y: 73.6
width: 769.99994
height: 466.2
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -356,9 +356,9 @@ MonoBehaviour:
floating: 0
collapsed: 0
displayed: 1
snapOffset: {x: -322, y: 24.8}
snapOffset: {x: -322, y: -280.8}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 1
snapCorner: 3
id: unity-scene-view-toolbar
index: 0
layout: 1
@ -635,9 +635,9 @@ MonoBehaviour:
m_PlayAudio: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: 25.717924, y: 0.07078141, z: 6.139598}
m_Target: {x: 2.4415243, y: -1.7079823, z: 2.0844522}
speed: 2
m_Value: {x: 25.717924, y: 0.07078141, z: 6.139598}
m_Value: {x: 2.4415243, y: -1.7079823, z: 2.0844522}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@ -683,13 +683,13 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: 0.13728672, y: 0.11033271, z: -0.01570401, w: 0.98448056}
m_Target: {x: 0.22429028, y: -0.017527353, z: 0.0038717669, w: 0.97460735}
speed: 2
m_Value: {x: -0.13728671, y: -0.110332705, z: 0.01570401, w: -0.9844805}
m_Value: {x: 0.2242356, y: -0.017523078, z: 0.0038708227, w: 0.9743697}
m_Size:
m_Target: 1.0774592
m_Target: 3.4315991
speed: 2
m_Value: 1.0774592
m_Value: 3.4315991
m_Ortho:
m_Target: 0
speed: 2
@ -724,23 +724,23 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ProjectBrowser
m_Name: ConsoleWindow
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 476.8
width: 1108
height: 279.60004
m_MinSize: {x: 231, y: 271}
m_MaxSize: {x: 10001, y: 10021}
m_ActualView: {fileID: 10}
y: 487.2
width: 1119.2
height: 283.59998
m_MinSize: {x: 101, y: 121}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 11}
m_Panes:
- {fileID: 10}
- {fileID: 11}
m_Selected: 0
m_LastSelected: 1
m_Selected: 1
m_LastSelected: 0
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
@ -762,10 +762,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 69.6
y: 557.60004
width: 1107
height: 258.60004
x: 62.4
y: 560.8
width: 1118.2
height: 262.59998
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -787,7 +787,7 @@ MonoBehaviour:
m_SkipHidden: 0
m_SearchArea: 1
m_Folders:
- Assets/Scripts/manager
- Assets/Scripts/UI
m_Globs: []
m_OriginalText:
m_ImportLogFlags: 0
@ -795,16 +795,16 @@ MonoBehaviour:
m_ViewMode: 1
m_StartGridSize: 64
m_LastFolders:
- Assets/Scripts/manager
- Assets/Scripts/UI
m_LastFoldersGridSize: -1
m_LastProjectPath: D:\GitInventory_0524\test_45\ColorlessWorld-2024-4-2
m_LastProjectPath: D:\GitInventory_0330\test_45\ColorlessWorld-2024-4-2
m_LockTracker:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 97.39996}
m_SelectedIDs: cc750000
m_LastClickedID: 30156
m_ExpandedIDs: 00000000fe7300000074000000ca9a3bffffff7f
scrollPos: {x: 0, y: 141.40002}
m_SelectedIDs: 6e760000
m_LastClickedID: 30318
m_ExpandedIDs: 000000009a7400009c74000000ca9a3bffffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -832,7 +832,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000fe7300000074000000ca9a3bffffff7f
m_ExpandedIDs: 000000009a7400009c74000000ca9a3bffffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -857,9 +857,9 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_ListAreaState:
m_SelectedInstanceIDs: d46d0000
m_LastClickedInstanceID: 28116
m_HadKeyboardFocusLastEvent: 0
m_SelectedInstanceIDs: 700d0000
m_LastClickedInstanceID: 3440
m_HadKeyboardFocusLastEvent: 1
m_ExpandedInstanceIDs: c6230000f06f00003a7b000058cc00005ecc00006ed400004e6e0000e07200000a7000000e7000000281000056cf00000000000094760000
m_RenameOverlay:
m_UserAcceptedRename: 0
@ -909,10 +909,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 69.6
y: 557.60004
width: 1107
height: 258.60004
x: 62.4
y: 560.8
width: 1118.2
height: 262.59998
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -938,10 +938,10 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 1108
x: 1119.2
y: 0
width: 351.19995
height: 756.4
width: 354.40002
height: 770.8
m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 13}
@ -970,10 +970,10 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1177.6
y: 80.8
width: 350.19995
height: 735.4
x: 1181.6
y: 73.6
width: 353.40002
height: 749.8
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0

1094
ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt

File diff suppressed because it is too large

BIN
ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache

Binary file not shown.

BIN
ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache

Binary file not shown.

BIN
ColorlessWorld-2024-4-2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

Binary file not shown.
Loading…
Cancel
Save