Fixed table deepcopy

This commit is contained in:
Pax1601 2023-09-06 20:19:47 +02:00
parent a96a6eb57d
commit e2f80c5788
2 changed files with 10 additions and 6 deletions

View File

@ -559,10 +559,8 @@ export class UnitsManager {
selectedUnitsCreateGroup() {
var selectedUnits = this.getSelectedUnits({ excludeHumans: true, onlyOnePerGroup: false });
var units: { ID: number, location: LatLng }[] = [];
var coalition = "neutral";
for (let idx in selectedUnits) {
var unit = selectedUnits[idx];
coalition = unit.getCoalition();
units.push({ ID: unit.ID, location: unit.getPosition() });
}
cloneUnits(units, () => {
@ -580,7 +578,6 @@ export class UnitsManager {
getInfoPopup().setText(`${this.#copiedUnits.length} units copied`);
}
// TODO handle from lua
pasteUnits() {
if (this.#copiedUnits.length > 0 && !this.#pasteDisabled && getMissionHandler().getCommandModeOptions().commandMode == GAME_MASTER) {
/* Compute the position of the center of the copied units */
@ -604,7 +601,7 @@ export class UnitsManager {
/* Clone the units in groups */
for (let groupName in groups) {
var units: { ID: number, location: LatLng }[] = [];
var markers: TemporaryUnitMarker[] = [];
let markers: TemporaryUnitMarker[] = [];
groups[groupName].forEach((unit: any) => {
var position = new LatLng(getMap().getMouseCoordinates().lat + unit.position.lat - avgLat, getMap().getMouseCoordinates().lng + unit.position.lng - avgLng);
markers.push(getMap().addTemporaryMarker(position, unit.name, unit.coalition));

View File

@ -616,7 +616,7 @@ function Olympus.clone(cloneTable)
local heading = math.atan2( position.x.z, position.x.x )
-- Update the data of the cloned unit
local unitTable = Olympus.spawnDatabase[unit:getName()]
local unitTable = mist.utils.deepCopy(Olympus.spawnDatabase[unit:getName()])
local point = coord.LLtoLO(cloneData['lat'], cloneData['lng'], 0)
if unitTable then
@ -674,7 +674,7 @@ function Olympus.clone(cloneTable)
end
end
unitsTable[#unitsTable + 1] = unitTable
unitsTable[#unitsTable + 1] = mist.utils.deepCopy(unitTable)
end
end
@ -688,6 +688,13 @@ function Olympus.clone(cloneTable)
task = 'CAP'
}
Olympus.debug(Olympus.serializeTable(vars), 1)
-- Save the units in the database, for cloning
for idx, unitTable in pairs(unitsTable) do
Olympus.addToDatabase(unitTable)
end
mist.dynAdd(vars)
Olympus.unitCounter = Olympus.unitCounter + 1