run_level_item.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { _decorator, Collider2D, Component, Contact2DType, Director, director, instantiate, IPhysics2DContact, Node, Prefab, RigidBody2D, Size, Sprite, SpriteFrame, UITransform, Vec3 } from 'cc';
  2. import { model_item_data } from '../data';
  3. import { config } from '../config';
  4. import { box } from './box';
  5. import { coin } from './coin';
  6. import { wall } from './wall';
  7. import Coroutine from '../lib/Coroutine';
  8. import { tools } from '../tools';
  9. import { car } from './car';
  10. import { base } from './base';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('run_level_item')
  13. export class run_level_item extends Component {
  14. private mData:model_item_data = null;
  15. private sfList:SpriteFrame[] = [];
  16. private sfBuffList:SpriteFrame[] = [];
  17. private mCar:car = null;
  18. public initView(data:model_item_data,l:SpriteFrame[],bl:SpriteFrame[],car:car){
  19. this.mData = data
  20. this.mCar = car
  21. this.sfList = l
  22. this.sfBuffList = bl
  23. this.node.getComponent(UITransform).contentSize = new Size(this.mData.width,this.mData.height)
  24. for (let index = 0; index < data.list.length; index++) {
  25. const element = data.list[index];
  26. // Coroutine.instance.start(this, this.init, 0.2, 0, element);
  27. this.init(element)
  28. }
  29. }
  30. private init(element){
  31. let node:Node = null;
  32. if(tools.isBox(element.item_type)){
  33. node = this.mCar.getGame().getPoolManager().getBox()
  34. node.getComponent(box).init(element, this.sfList[element.item_type-1],element.buff_type>0?this.sfBuffList[element.buff_type-1]:null,this.mCar)
  35. this.mCar.getGame().addBoxForList(node)
  36. }else if(element.item_type==config.item_type.coin){
  37. node = this.mCar.getGame().getPoolManager().getCoin()
  38. node.getComponent(coin).init(element,this.mCar)
  39. this.mCar.getGame().addCoinForList(node)
  40. }else if(element.item_type==config.item_type.wall){
  41. node = this.mCar.getGame().getPoolManager().getWall()
  42. node.getComponent(wall).init(element)
  43. this.mCar.getGame().addWallForList(node)
  44. }
  45. if(node!=null){
  46. node.parent = this.node
  47. }
  48. }
  49. public removeAll(){
  50. this.node.getComponent(RigidBody2D).sleep()
  51. for (let index = 0; index < this.node.children.length; index++) {
  52. const node = this.node.children[index];
  53. let element = node.getComponent(base).getData()
  54. if(tools.isBox(element.item_type)){
  55. node.getComponent(box).removeSelf()
  56. }else if(element.item_type==config.item_type.coin){
  57. node.getComponent(coin).removeSelf()
  58. }else if(element.item_type==config.item_type.wall){
  59. this.mCar.getGame().removeWallForList(node)
  60. this.mCar.getGame().getPoolManager().putWall(node)
  61. }
  62. }
  63. // director.once(Director.EVENT_AFTER_DRAW,()=>{
  64. // this.node.destroy()
  65. // })
  66. this.node.removeFromParent()
  67. }
  68. }