cc.Class({
    extends: cc.Component,

    properties: {
      mapNode: {
        type: cc.Node,
        default: null
      },
      speed: {
        type: cc.Float,
        default: 500
      }, 
    },

    onLoad () {
      this.mainCamera = this.mapNode.parent.getChildByName("Main Camera").getComponent(cc.Camera);
      this.mapScriptIns = this.mapNode.getComponent("Map");
    },

    start() {},

    update(dt) {
      const self = this;
      if (!self.mainCamera) return;
      if (!self.mapScriptIns) return;
      if (!self.mapScriptIns.selfPlayerInfo) return;
      if (!self.mapScriptIns.playerRichInfoDict) return;
      const selfPlayerRichInfo = self.mapScriptIns.playerRichInfoDict.get(self.mapScriptIns.selfPlayerInfo.id);
      if (!selfPlayerRichInfo) return;
      const selfPlayerNode = selfPlayerRichInfo.node; 
      if (!selfPlayerNode) return;
      const pDiff = selfPlayerNode.position.sub(self.mainCamera.node.position); 
      pDiff.normalizeSelf();
      const newCamPos = self.mainCamera.node.position.add(pDiff.mul(dt*self.speed));
      self.mainCamera.node.setPosition(newCamPos);
    }
});