You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Character.Skill.cs 3.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Preparation.Utility;
  2. using Preparation.Interface;
  3. using System.Collections.Generic;
  4. namespace GameClass.GameObj
  5. {
  6. public partial class Character
  7. {
  8. private readonly CharacterType characterType;
  9. public CharacterType CharacterType => characterType;
  10. private readonly IOccupation occupation;
  11. public IOccupation Occupation => occupation;
  12. private Dictionary<ActiveSkillType, ActiveSkill> activeSkillDictionary = new();
  13. public Dictionary<ActiveSkillType, ActiveSkill> ActiveSkillDictionary => activeSkillDictionary;
  14. public ActiveSkill FindActiveSkill(ActiveSkillType activeSkillType)
  15. {
  16. if (Occupation.ListOfIActiveSkill.Contains(activeSkillType))
  17. {
  18. return ActiveSkillDictionary[activeSkillType];
  19. }
  20. return new NullSkill();
  21. }
  22. public bool SetTimeUntilActiveSkillAvailable(ActiveSkillType activeSkillType, int timeUntilActiveSkillAvailable)
  23. {
  24. if (Occupation.ListOfIActiveSkill.Contains(activeSkillType))
  25. {
  26. ActiveSkillDictionary[activeSkillType].TimeUntilActiveSkillAvailable = (timeUntilActiveSkillAvailable > 0) ? timeUntilActiveSkillAvailable : 0;
  27. return true;
  28. }
  29. return false;
  30. }
  31. public bool AddTimeUntilActiveSkillAvailable(ActiveSkillType activeSkillType, int addTimeUntilActiveSkillAvailable)
  32. {
  33. if (Occupation.ListOfIActiveSkill.Contains(activeSkillType))
  34. {
  35. ActiveSkillDictionary[activeSkillType].TimeUntilActiveSkillAvailable += addTimeUntilActiveSkillAvailable;
  36. return true;
  37. }
  38. return false;
  39. }
  40. public bool IsGhost()
  41. {
  42. return GameData.IsGhost(CharacterType);
  43. }
  44. protected Character(XY initPos, int initRadius, CharacterType characterType) :
  45. base(initPos, initRadius, GameObjType.Character)
  46. {
  47. this.ReSetCanMove(true);
  48. this.score = 0;
  49. this.buffManager = new BuffManager();
  50. this.occupation = OccupationFactory.FindIOccupation(characterType);
  51. this.MaxHp = this.hp = Occupation.MaxHp;
  52. this.MoveSpeed = this.OrgMoveSpeed = Occupation.MoveSpeed;
  53. this.BulletOfPlayer = this.OriBulletOfPlayer = Occupation.InitBullet;
  54. this.concealment = Occupation.Concealment;
  55. this.alertnessRadius = Occupation.AlertnessRadius;
  56. this.ViewRange = Occupation.ViewRange;
  57. this.characterType = characterType;
  58. this.SpeedOfOpeningOrLocking = Occupation.SpeedOfOpeningOrLocking;
  59. this.SpeedOfClimbingThroughWindows = Occupation.SpeedOfClimbingThroughWindows;
  60. this.SpeedOfOpenChest = Occupation.SpeedOfOpenChest;
  61. foreach (var activeSkill in this.Occupation.ListOfIActiveSkill)
  62. {
  63. this.ActiveSkillDictionary.Add(activeSkill, SkillFactory.FindActiveSkill(activeSkill));
  64. }
  65. // UsePassiveSkill(); //这一过程放到gamestart时进行
  66. Debugger.Output(this, "constructed!");
  67. }
  68. }
  69. }