Ins_TaskInfo.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * 任务信息
  5. */
  6. class Ins_TaskInfo extends Object_ext {
  7. /**
  8. *
  9. * @var 任务ID
  10. */
  11. public $taskId;
  12. /**
  13. * @var float 任务进度(浮点值好了>=1代表完成)
  14. */
  15. public $progress = 0;
  16. /**
  17. * 用于将进度更新的数据待会给客户端,比如当前PVP积分之类的,在客户端是无法即时拿到数据的
  18. * @var object
  19. */
  20. public $tag1;
  21. public $tag2;
  22. /**
  23. * @var int 计数器
  24. */
  25. public $counter = 0;
  26. /**
  27. * @var int 奖励是否已领取 0/1
  28. */
  29. public $rewardGeted = 0;
  30. public function bCheckProgress($param) {
  31. $taskCfg = GameConfig::task_getItem($this->taskId);
  32. my_Assert($taskCfg != null, ErrCode::err_const_no); # 获取任务配置数据
  33. if ($taskCfg->tasktype != $param->taskType) { # 任务类型必须匹配
  34. return false;
  35. }
  36. if (is_null($taskCfg->canshu1)) {
  37. $this->progress = 1;
  38. return true;
  39. }
  40. $this->tag1 = max($this->tag1, $param->canshu1);
  41. if ($taskCfg->canshu1 <= $param->canshu1) {
  42. if (null == $taskCfg->canshu2 || 0 == $taskCfg->canshu2) {
  43. $this->progress = 1;
  44. return true;
  45. }
  46. if (is_numeric($taskCfg->canshu2)) {
  47. $this->tag2 = max($this->tag2, $param->canshu2);
  48. if ($taskCfg->canshu2 <= $param->canshu2) {
  49. $this->progress = 1;
  50. return true;
  51. }
  52. } else {
  53. $this->tag2 = $param->canshu2;
  54. if ($taskCfg->canshu2 == $param->canshu2) {
  55. $this->progress = 1;
  56. return true;
  57. }
  58. }
  59. }
  60. return false;
  61. }
  62. }