aibehaviour.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /** @file
  2. this file is interface to AI Behaviour
  3. */
  4. /*
  5. class AIMessage: Managed
  6. {
  7. Param m_Parameters;
  8. int m_CrcMessage;
  9. Param GetParameters();
  10. int GetTypeNameCRC();
  11. }
  12. class AIMessageTest : AIMessage
  13. {
  14. int GetTypeNameCRC() {return testCRC;}
  15. //static int testCRC = 5;
  16. }
  17. */
  18. class AIBehaviourHLData
  19. {
  20. private void AIBehaviourHLData() {}
  21. private void ~AIBehaviourHLData() {}
  22. //void ParseConfig(ParamEntryPar param, AIWorld* world, AIAgentTemplate* agentTemplate) {};
  23. void OnParseConfig();
  24. //Can be use only inside OnParseConfig function
  25. proto native void ParseBehaviourSlot(string name);
  26. proto native void ParseAlertLevel(string name);
  27. proto native float ReadParamValue(string paramName, float defValue);
  28. }
  29. class AIBehaviourHL
  30. {
  31. private void AIBehaviourHL() {}
  32. private void ~AIBehaviourHL() {}
  33. proto native AIBehaviourHLData GetTemplateData();
  34. void OnInit(){};
  35. //private void AIBehaviourHL_script() {};
  36. //private void ~AIBehaviourHL_script() {};
  37. void Simulate (float timeDelta)
  38. {
  39. //time = time + timeDelta;
  40. //Print("A2");
  41. }
  42. //void OnNoise(AINoiseInfo noise, EntityAI source){}
  43. void OnDamage(float damage, EntityAI source){}
  44. void OnDamageInflicted(){}
  45. void OnAnimationEvent(int nameCrc){}
  46. //void OnMessage(AIMessage message){}
  47. //void OnBehaviourSwitched(AIBehaviour* behaviour){}
  48. proto native void SetNextBehaviour(int BehaviourCrc);
  49. proto native void SwitchToNextBehaviour();
  50. static proto void RegAIBehaviour(string behname,typename behClass, typename behClassData);
  51. };
  52. class AIBehaviourHLZombie2 : AIBehaviourHL
  53. {
  54. //AIBehaviourHLDataZombie2 data;
  55. //int state;
  56. //float time;
  57. AIBehaviourHLDataZombie2 GetData()
  58. {
  59. return AIBehaviourHLDataZombie2.Cast( GetTemplateData() );
  60. }
  61. private void AIBehaviourHLZombie2() {}
  62. private void ~AIBehaviourHLZombie2() {}
  63. override void OnInit()
  64. {
  65. SetNextBehaviour(0x7b9a4ee9);
  66. SwitchToNextBehaviour();
  67. //Print("OnInit");
  68. //data = GetData();
  69. //float a = data.m_fDamageToCrawl;
  70. //Print(a);
  71. }
  72. override void Simulate (float timeDelta)
  73. {
  74. //time = time + timeDelta;
  75. //Print("B2");
  76. }
  77. void ShowDebugInfo()
  78. {
  79. //Print(time);
  80. };
  81. //void OnMessage(AIMessage message)
  82. //{
  83. //int ID = message.GetTypeNameCRC();
  84. //Print(ID);
  85. //}
  86. };
  87. class AIBehaviourHLDataZombie2 : AIBehaviourHLData
  88. {
  89. float m_fDamageToCrawl;
  90. float m_fCrawlProbability;
  91. private void AIBehaviourHLDataZombie2() {}
  92. private void ~AIBehaviourHLDataZombie2() {}
  93. override void OnParseConfig()
  94. {
  95. Print("zombie data parse config start");
  96. ParseBehaviourSlot("Calm");
  97. ParseBehaviourSlot("Attracted");
  98. ParseBehaviourSlot("Disturbed");
  99. ParseBehaviourSlot("Alerted");
  100. ParseAlertLevel("Calm");
  101. ParseAlertLevel("Disturbed");
  102. ParseAlertLevel("Attracted");
  103. ParseAlertLevel("Alerted");
  104. m_fDamageToCrawl = ReadParamValue("damageToCrawl",0.01);
  105. m_fCrawlProbability = ReadParamValue("crawlProbability",0.01);
  106. Print("zombie data parse config end");
  107. }
  108. };
  109. //NewNPC(model,behname,....)