Browse Source

加入寄生等

pull/16/head
软件204张景程 2 years ago
parent
commit
6bce26b0b1
  1. 10
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  2. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_DownAnger.cs
  3. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Posion.cs
  4. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperAnger.cs
  5. 35
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_levelSeep.cs
  6. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_levelSeep.cs.meta
  7. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs
  8. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs.meta
  9. 22
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  10. 12
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs
  11. 70
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  12. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs
  13. 5
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs
  14. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs
  15. 130
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs

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

@ -3521,12 +3521,12 @@ MonoBehaviour:
m_Calls:
- m_Target: {fileID: 495423660}
m_TargetAssemblyTypeName: Usermanager, Assembly-CSharp
m_MethodName: AddPlayerAbnormalCondition
m_Mode: 1
m_MethodName: AddPlayerAbnormalCondition_parasitism
m_Mode: 3
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_IntArgument: 1
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
@ -5363,6 +5363,7 @@ MonoBehaviour:
health: 0
shield: 0
totalCost: 0
buffSettleList: []
buffIconList: []
buffPanle: {fileID: 365854624}
buffIcon: {fileID: 610775712955856159, guid: 457a3d2dee855fa41a324600bf63e57f, type: 3}
@ -5371,6 +5372,9 @@ MonoBehaviour:
drawNubmerMultiply: 0
sufferDamageMultiply: 0
stepRangeMultiply: 0
coma: 0
sleep: 0
canAction: 0
--- !u!1 &497308547
GameObject:
m_ObjectHideFlags: 0

2
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_DownAnger.cs

@ -7,7 +7,7 @@ public class Buff_DownAnger :Buff
{
public override void Settle()
{
base.Settle();
}
public override void UIShow(GameObject buff, string key)

3
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Posion.cs

@ -19,8 +19,9 @@ public class Buff_Posion : Buff
}
public void SettlePosion()
{
if (value > 0)
GameManager.Instance.playerState.currentHP -= value;
GameManager.Instance.playerState.currentHP-= Usermanager .Instance .SufferDamageCalculation (value);
}
public void SettleEnemyPosion(EnemyNode enemyNode)
{

2
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperAnger.cs

@ -7,7 +7,7 @@ public class Buff_UpperAnger : Buff
{
public override void Settle()
{
base.Settle();
}
public override void UIShow(GameObject buff, string key)

35
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_levelSeep.cs

@ -0,0 +1,35 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_levelSeep : Buff
{
public override void Settle()
{
base.Settle();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "ÃÔ";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "ÃÔ";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_levelSeep();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_levelSeep.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6e398e9c24f213f42b03baace116eca5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

37
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs

@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_parasitism : Buff
{
public override void Settle()
{
Usermanager.Instance.buffSettleList.Add(AbnormalCondition.parasitism);
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "¼Ä";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "¼Ä";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_parasitism();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6b6d68bbf3ee2b643919f8037c3b7e3e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

22
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs

@ -99,7 +99,26 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
}
}
}
private void banActionCardCheck()
{
if(TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.banAction)
{
cardEntity.costEnough = false;
}
else
{
cardEntity.costEnough = true;
}
if(TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.move)
{
cardEntity.costEnough = false;
}
else if(TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction)
{
cardEntity.costEnough = true;
}
}
private void resetComponentPosition()
{
//±éÀú·¶Î§Ô¤ÀÀ³ØÏû³ýÓ°ÏìÉ«
@ -144,6 +163,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
// graphicRaycaster = GameObject.Find("CardPanel").GetComponent<GraphicRaycaster>();
costCheck();
disCardCheck();
banActionCardCheck();
if (!cardEntity.costEnough)
{
return;

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

@ -33,7 +33,8 @@ public class TurnMaster : Singleton<TurnMaster>
{
none,
useCard,
move
move,
banAction
}
public void Start()
@ -49,6 +50,8 @@ public class TurnMaster : Singleton<TurnMaster>
//洗牌--抽卡
StartCoroutine(ShuffleWithLosingCards());
//判断眩晕等能不能行动
Usermanager.Instance.BanActionJudge();
//结算玩家buff
Usermanager.Instance.PlayerTurnSettle();
//结算地块Buff
@ -98,18 +101,21 @@ public class TurnMaster : Singleton<TurnMaster>
yield return new WaitForSeconds(3.0f); // 等待3秒
turn = Turn.playerTurn;
}
public void EndPlayerTurn()
{
if(turn ==Turn.playerTurn)
turn = Turn.enemyTurnBegin;
//turn = Turn.playerTurnBegin;
//回合结束结算buff
Usermanager.Instance.BuffSettleInEndTurn();
}
public void EndEnemyTurn()
{
EnemyManager.Instance.enemyTurnState = EnemyManager.EnemyTurnState.end;
turn = Turn.playerTurnBegin;
}
//老吊写的函数
public void restoreResource(int settleTurn)
{

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

@ -585,6 +585,76 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
damage = (int)(EnemyState.sufferDamageMultiply * damage);
return damage;
}
//½áËãÉ˺¦
public int DamageCalculation(int damage)
{
int angerUpperDamage = 0, angerDownDamage = 0;
if (EnemyState .abnormalCondition .ContainsKey(UpperCondition.angerUpperDamage))
{
angerUpperDamage = EnemyState.abnormalCondition[UpperCondition.angerUpperDamage].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.angerDownDamage))
{
angerDownDamage = EnemyState.abnormalCondition[AbnormalCondition.angerDownDamage].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.weak))
{
EnemyState.damageMultiplier = 0.75f;
}
else
{
EnemyState.damageMultiplier = 1f;
}
damage = (int)((damage + angerUpperDamage - angerDownDamage) * EnemyState.damageMultiplier);
return damage;
}
//»¤¶Ü¼ÆË㺯Êý
public int ShieldCalculation(int shield)
{
int shieldValue = 0;
if (EnemyState.abnormalCondition.ContainsKey(UpperCondition.shieldUpperValue))
{
shieldValue += EnemyState.abnormalCondition[UpperCondition.shieldUpperValue].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.shieldDownValue))
{
shieldValue -= EnemyState.abnormalCondition[AbnormalCondition.shieldDownValue].value;
}
shield += shieldValue;
return shield;
}
public int StepRangeCalculation(int stepRange)
{
int addStepRange = 0;
if (EnemyState.abnormalCondition.ContainsKey(UpperCondition.upperSpeed))
{
addStepRange += 1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
addStepRange -= 1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.BanStep))
{
EnemyState.stepRangeMultiplier = 0;
}
else
{
EnemyState.stepRangeMultiplier = 1f;
}
stepRange = (int)((stepRange + addStepRange) * EnemyState.stepRangeMultiplier);
return stepRange;
}
#endregion
}

20
ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs

@ -26,7 +26,7 @@ public class Player : MonoBehaviour
}
public void Update()
{
if (Mouse.current.leftButton.wasPressedThisFrame && TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.useCard)
if (Mouse.current.leftButton.wasPressedThisFrame && TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.useCard&& TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction)
{
if (GameManager.Instance.playerState.currentStepRange > 0)
{
@ -41,17 +41,22 @@ public class Player : MonoBehaviour
mapUnity.influenced = true;
mapUnity.choossedMark.GetComponent<Renderer>().material = mapUnity.red;
}
//StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange);
//StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange);
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.move;
}
else
{
// Debug.Log(raycastHit.collider.gameObject.name);
ChooseNode();
}
}
else
{
Debug.Log("没有体力啦");
}
}
@ -60,6 +65,8 @@ public class Player : MonoBehaviour
// StepPreviewInfluencedNode(step);
CloseStepPreviewInfluencedNode();//取消格子预览
if(TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction)
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none;
//todo取消卡牌释放
}
}
@ -113,7 +120,10 @@ public class Player : MonoBehaviour
GameManager.Instance.playerOn.playerOn = false;
GameManager.Instance.playerOn.influenced = false;
}
//ÅжϼÄÉúÊÇ·ñÉúЧ
Usermanager.Instance.ParasitismnRealize(GameManager.Instance.playerOn, mapNode);
mapNode.playerOn = true;
GameManager.Instance.playerOn = mapNode;
@ -126,7 +136,8 @@ public class Player : MonoBehaviour
}
influencePreviewPool.Clear();
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none;
}
else
{
@ -143,6 +154,7 @@ public class Player : MonoBehaviour
mapUnity.influenced = false;
}
influencePreviewPool.Clear();
}
public void StepPreviewInfluencedNode(int step)//可移动格子预览

5
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs

@ -45,7 +45,10 @@ public class AbnormalCondition : Singleton<AbnormalCondition>
//²øÈÆ-
public const string BanStep = "22";
//后加敌方
//»ðÖÖ
public const string fireSeed = "23";
//昏睡(叠层那个)
public const string levelSleep = "24";
//寄生
public const string parasitism = "25";
}

6
ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs

@ -6,6 +6,8 @@ public class BuffDataManager : Singleton<BuffDataManager>
{
public Dictionary<string, Buff> abnormalCondition = new Dictionary<string, Buff>();//Ò쳣״̬
private void OnEnable()
{
abnormalCondition.Add("4", new Buff_Posion());
@ -21,6 +23,8 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("21", new Buff_DownStepRange());
abnormalCondition.Add("22", new Buff_BanStepRange());
abnormalCondition.Add("23", new Buff_FireSeed());
abnormalCondition.Add("24", new Buff_levelSeep());
abnormalCondition.Add("25", new Buff_parasitism());
abnormalCondition.Add("101", new Buff_UpperAnger());
abnormalCondition.Add("102", new Buff_UpperShield());
@ -28,6 +32,6 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("104", new Buff_DrawCardNumber());
abnormalCondition.Add("105", new Buff_UpperStepRange());
}
}

130
ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs

@ -16,6 +16,8 @@ public class Usermanager : Singleton<Usermanager>
[Header ("Buff状态")]
public static Dictionary<string, Buff > playerAbnormalCondition = new Dictionary<string, Buff >();//异常状态
public List<string> buffSettleList = new List<string>();//回合结束时结算
[Header("Buff状态UI组件")]
public List<GameObject> buffIconList = new List<GameObject>();
public GameObject buffPanle;
@ -32,6 +34,10 @@ public class Usermanager : Singleton<Usermanager>
public float sufferDamageMultiply = 1;
//移动乘率
public float stepRangeMultiply = 1;
//昏睡昏迷等不能行动
public bool coma;
public bool sleep;
public bool canAction;
public Usermanager(int health)
{
@ -121,6 +127,48 @@ public class Usermanager : Singleton<Usermanager>
SufferPlayerAbnormalCondition(UpperCondition.upperSpeed, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_coma(int value)
{
Buff buff = new Buff_coma();
SufferPlayerAbnormalCondition(AbnormalCondition.coma, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_sleep(int value)
{
Buff buff = new Buff_sleep();
SufferPlayerAbnormalCondition(AbnormalCondition.sleep, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_levelSleep(int value)
{
Buff buff = new Buff_levelSeep();
SufferPlayerAbnormalCondition(AbnormalCondition.levelSleep, value, buff);
if(playerAbnormalCondition [AbnormalCondition .levelSleep ].value >=10)
{
AddPlayerAbnormalCondition_coma(1);
playerAbnormalCondition[AbnormalCondition.levelSleep].value -= 10;
}
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_vulnerable(int value)
{
Buff buff = new Buff_Vulnerable();
SufferPlayerAbnormalCondition(AbnormalCondition.vulnerable, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_BanStep(int value)
{
Buff buff = new Buff_BanStepRange();
SufferPlayerAbnormalCondition(AbnormalCondition.BanStep, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_parasitism(int value)
{
Buff buff = new Buff_parasitism();
SufferPlayerAbnormalCondition(AbnormalCondition.parasitism, value, buff);
RefreshPlayerBuffIcon();
}
#endregion
//Buff施加
@ -151,7 +199,21 @@ public class Usermanager : Singleton<Usermanager>
}
}
//回合结束时结算buff
public void BuffSettleInEndTurn()
{
foreach (var key in buffSettleList)
{
Buff buff = playerAbnormalCondition[key];
buff.value--;
if (buff.value <= 0)
{
playerAbnormalCondition.Remove(key);
}
}
buffSettleList.Clear();
RefreshPlayerBuffIcon();
}
//检查移除已归零buff
public void AbnormalConditionEndCheck()
{
@ -186,8 +248,11 @@ public class Usermanager : Singleton<Usermanager>
}
}
public void SufferDamage(int damage)
{
GameManager.Instance.playerState.currentHP -= SufferDamageCalculation(damage);
}
#region Buff结算函数
//计算函数
@ -212,6 +277,8 @@ public class Usermanager : Singleton<Usermanager>
damagemultiply = 1f;
}
damage = (int)((damage + angerUpperDamage - angerDownDamage) * damagemultiply);
return damage;
}
@ -283,7 +350,7 @@ public class Usermanager : Singleton<Usermanager>
stepRange = (int)((stepRange + addStepRange) *stepRangeMultiply);
return stepRange;
}
//伤计算函数
//伤计算函数
public int SufferDamageCalculation(int damage)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.vulnerable))
@ -294,10 +361,31 @@ public class Usermanager : Singleton<Usermanager>
{
sufferDamageMultiply = 1f;
}
damage =(int)( damagemultiply * damage);
damage =(int)(sufferDamageMultiply * damage);
if (damage > 0 && playerAbnormalCondition.ContainsKey(AbnormalCondition.sleep))
{
sleep = false;
playerAbnormalCondition.Remove(AbnormalCondition.sleep);
BanActionJudge();
RefreshPlayerBuffIcon();
}
return damage;
}
//寄生实现函数
public void ParasitismnRealize(MapUnity start,MapUnity end)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.parasitism)&& playerAbnormalCondition[AbnormalCondition.parasitism].value>0)
{
List<MapUnity> path = AStarManager.Instance.FindPathWithEndNode(start, end);
foreach (var node in path )
{
node.whoColour = MapUnity.WhoColour.enemyColour;
}
}
}
//判断函数
//易伤判断
@ -326,7 +414,37 @@ public class Usermanager : Singleton<Usermanager>
}
return firm;
}
//昏睡昏迷判断函数(不能行动)
public void BanActionJudge()
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.coma))
{
coma = true;
}
else
{
coma = false;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.sleep))
{
sleep = true;
}
else
{
sleep = false;
}
if(coma==true ||sleep==true )
{
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.banAction;
}
else
{
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none;
}
}
#endregion
}

Loading…
Cancel
Save