//复制地图对象- 用于做副本使用 public GameMap Clone() { GameMap new_map = new GameMap(this.info); new_map.mnWidth = this.mnWidth; new_map.mnHeight = this.mnHeight; new_map.mPath = new MapPath(mnHeight, mnWidth); for (uint i = 0; i < mnHeight; i++) { for (uint j = 0; j < mnWidth; j++) { new_map.GetMapGridInfo()[j, i] = this.mMapGridInfo[j, i]; if (new_map.GetMapGridInfo()[j, i].Mask > 0) { new_map.mPath.SetPointMask((short)j, (short)i, MapPath.MASK_CLOSE); } } } foreach (BaseObject obj in this.GetAllObject().Values) { new_map.AddObject(obj, obj.GetGameSession()); } return(new_map); }
//复制地图对象- 用于做副本使用 public GameMap Clone() { GameMap new_map = new GameMap(this.info); new_map.mnWidth = this.mnWidth; new_map.mnHeight = this.mnHeight; new_map.mPath = new MapPath(mnHeight, mnWidth); for (uint i = 0; i < mnHeight; i++) { for (uint j = 0; j < mnWidth; j++) { new_map.GetMapGridInfo()[j, i] = this.mMapGridInfo[j, i]; if (new_map.GetMapGridInfo()[j, i].Mask > 0) { new_map.mPath.SetPointMask((short)j, (short)i, MapPath.MASK_CLOSE); } } } foreach (BaseObject obj in this.GetAllObject().Values) { new_map.AddObject(obj, obj.GetGameSession()); } return new_map; }
//更换地图 用于副本场景 public void ChangeFubenMap(GameMap map, short x, short y) { if (map == null) return; this.GetGameMap().RemoveObj(this); //召回所有幻兽- this.GetEudemonSystem().Eudemon_ReCallAll(true); map.AddObject(this, this.GetGameSession()); //先清除自身对象 this.ClearThis(); this.SetPoint(x, y); //要发二个包 NetMsg.MsgReCall1 msg = new NetMsg.MsgReCall1(); msg.Create(null, GetGamePackKeyEx()); msg.roleid = this.GetTypeId(); msg.mapid = (int)this.GetGameMap().GetMapInfo().id; msg.x = this.GetCurrentX(); msg.y = this.GetCurrentY(); this.SendData(msg.GetBuffer()); NetMsg.MsgReCall2 msg1 = new NetMsg.MsgReCall2(); msg1.Create(null, GetGamePackKeyEx()); msg1.roleid = this.GetTypeId(); msg1.x = this.GetCurrentX(); msg1.y = this.GetCurrentY(); this.SendData(msg1.GetBuffer()); this.GetVisibleList().Clear(); GameStruct.Action act = new GameStruct.Action(GameStruct.Action.MOVE); this.PushAction(act); GetBaseAttr().mapid = map.GetMapInfo().id; this.SendJueweiNotice(); this.SetTransmitIng(true); }