Index: ps/trunk/source/graphics/MapReader.cpp =================================================================== --- ps/trunk/source/graphics/MapReader.cpp +++ ps/trunk/source/graphics/MapReader.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -961,7 +961,7 @@ CStrW TemplateName; int PlayerID = 0; std::vector Garrison; - std::vector > Turrets; + std::vector> Turrets; CFixedVector3D Position; CFixedVector3D Orientation; long Seed = -1; @@ -1029,10 +1029,10 @@ for (const XMBElement& turretPoint : turrets) { XMBAttributeList turretAttrs = turretPoint.GetAttributes(); - Turrets.push_back(std::make_pair( + Turrets.emplace_back( turretAttrs.GetNamedItem(at_turret), turretAttrs.GetNamedItem(at_uid).ToInt() - )); + ); } } // @@ -1074,20 +1074,18 @@ { CmpPtr cmpGarrisonHolder(sim, ent); if (cmpGarrisonHolder) - cmpGarrisonHolder->SetInitEntities(Garrison); + cmpGarrisonHolder->SetInitEntities(std::move(Garrison)); else LOGERROR("CXMLMapReader::ReadEntities() entity '%d' of player '%d' has no GarrisonHolder component and thus cannot garrison units.", ent, PlayerID); - Garrison.clear(); } if (!Turrets.empty()) { CmpPtr cmpTurretHolder(sim, ent); if (cmpTurretHolder) - cmpTurretHolder->SetInitEntities(Turrets); + cmpTurretHolder->SetInitEntities(std::move(Turrets)); else LOGERROR("CXMLMapReader::ReadEntities() entity '%d' of player '%d' has no TurretHolder component and thus cannot use turrets.", ent, PlayerID); - Turrets.clear(); } CmpPtr cmpObstruction(sim, ent); Index: ps/trunk/source/graphics/MapWriter.cpp =================================================================== --- ps/trunk/source/graphics/MapWriter.cpp +++ ps/trunk/source/graphics/MapWriter.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -361,7 +361,7 @@ CmpPtr cmpTurretHolder(sim, ent); if (cmpTurretHolder) { - std::vector > turrets = cmpTurretHolder->GetTurrets(); + std::vector> turrets = cmpTurretHolder->GetTurrets(); if (!turrets.empty()) { XMLWriter_Element turretTag(xmlMapFile, "Turrets"); Index: ps/trunk/source/simulation2/components/ICmpGarrisonHolder.h =================================================================== --- ps/trunk/source/simulation2/components/ICmpGarrisonHolder.h +++ ps/trunk/source/simulation2/components/ICmpGarrisonHolder.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -27,7 +27,7 @@ public: virtual std::vector GetEntities() const = 0; - virtual void SetInitEntities(const std::vector entities) = 0; + virtual void SetInitEntities(std::vector&& entities) = 0; DECLARE_INTERFACE_TYPE(GarrisonHolder) }; Index: ps/trunk/source/simulation2/components/ICmpGarrisonHolder.cpp =================================================================== --- ps/trunk/source/simulation2/components/ICmpGarrisonHolder.cpp +++ ps/trunk/source/simulation2/components/ICmpGarrisonHolder.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -32,10 +32,10 @@ virtual std::vector GetEntities() const { - return m_Script.Call >("GetEntities"); + return m_Script.Call>("GetEntities"); } - virtual void SetInitEntities(std::vector entities) + virtual void SetInitEntities(std::vector&& entities) { m_Script.CallVoid("SetInitGarrison", entities); } Index: ps/trunk/source/simulation2/components/ICmpTurretHolder.h =================================================================== --- ps/trunk/source/simulation2/components/ICmpTurretHolder.h +++ ps/trunk/source/simulation2/components/ICmpTurretHolder.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -29,12 +29,12 @@ * Returns the correlation between garrisoned turrets (their ID) and which * turret point they occupy (name). */ - virtual std::vector > GetTurrets() const = 0; + virtual std::vector> GetTurrets() const = 0; /** * Correlation between entities (ID) and the turret point they ought to occupy (name). */ - virtual void SetInitEntities(const std::vector > entities) = 0; + virtual void SetInitEntities(std::vector>&& entities) = 0; DECLARE_INTERFACE_TYPE(TurretHolder) }; Index: ps/trunk/source/simulation2/components/ICmpTurretHolder.cpp =================================================================== --- ps/trunk/source/simulation2/components/ICmpTurretHolder.cpp +++ ps/trunk/source/simulation2/components/ICmpTurretHolder.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -37,7 +37,7 @@ virtual std::vector > GetTurrets() const { std::vector > turrets; - std::vector entities = m_Script.Call >("GetEntities"); + std::vector entities = m_Script.Call>("GetEntities"); for (entity_id_t entity : entities) turrets.push_back(std::make_pair( m_Script.Call("GetOccupiedTurretName", entity), @@ -50,7 +50,7 @@ /** * Correlation between entities (ID) and the turret point they ought to occupy (name). */ - virtual void SetInitEntities(std::vector > entities) + virtual void SetInitEntities(std::vector>&& entities) { for (const std::pair& p : entities) m_Script.CallVoid("SetInitEntity", p.first, p.second);