- Improved auto added system positioning, reduces overlapping, closed #845
This commit is contained in:
@@ -878,6 +878,7 @@ class Map extends Controller\AccessController {
|
||||
$getMapUserData = (bool)$postData['getMapUserData'];
|
||||
$mapTracking = (bool)$postData['mapTracking'];
|
||||
$systemData = (array)$postData['systemData'];
|
||||
$newSystemPositions = (array)$postData['newSystemPositions'];
|
||||
$activeCharacter = $this->getCharacter();
|
||||
|
||||
$return = (object)[];
|
||||
@@ -893,7 +894,7 @@ class Map extends Controller\AccessController {
|
||||
if( !is_null($map = $activeCharacter->getMap($mapId)) ){
|
||||
// check character log (current system) and manipulate map (e.g. add new system)
|
||||
if($mapTracking){
|
||||
$map = $this->updateMapByCharacter($map, $activeCharacter);
|
||||
$map = $this->updateMapByCharacter($map, $activeCharacter, $newSystemPositions);
|
||||
}
|
||||
|
||||
// mapUserData ----------------------------------------------------------------------------------------
|
||||
@@ -938,10 +939,11 @@ class Map extends Controller\AccessController {
|
||||
* update map connections/systems based on $character´s location logs
|
||||
* @param Pathfinder\MapModel $map
|
||||
* @param Pathfinder\CharacterModel $character
|
||||
* @param array $newSystemPositions
|
||||
* @return Pathfinder\MapModel
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function updateMapByCharacter(Pathfinder\MapModel $map, Pathfinder\CharacterModel $character) : Pathfinder\MapModel {
|
||||
protected function updateMapByCharacter(Pathfinder\MapModel $map, Pathfinder\CharacterModel $character, array $newSystemPositions = []) : Pathfinder\MapModel {
|
||||
// map changed. update cache (system/connection) changed
|
||||
$mapDataChanged = false;
|
||||
|
||||
@@ -958,6 +960,9 @@ class Map extends Controller\AccessController {
|
||||
$sourceSystemId = (int)$sourceLog->systemId;
|
||||
|
||||
if($sourceSystemId){
|
||||
$defaultPositions = (array)$newSystemPositions['defaults'];
|
||||
$currentPosition = (array)$newSystemPositions['location'];
|
||||
|
||||
$sourceSystem = null;
|
||||
$targetSystem = null;
|
||||
|
||||
@@ -969,8 +974,8 @@ class Map extends Controller\AccessController {
|
||||
// system coordinates for system tha might be added next
|
||||
$systemOffsetX = 130;
|
||||
$systemOffsetY = 0;
|
||||
$systemPosX = 0;
|
||||
$systemPosY = 30;
|
||||
$systemPosX = ((int)$defaultPositions[0]['x']) ? : 0;
|
||||
$systemPosY = ((int)$defaultPositions[0]['y']) ? : 30;
|
||||
|
||||
// check if previous (solo) system is already on the map ----------------------------------------------
|
||||
$sourceSystem = $map->getSystemByCCPId($sourceSystemId, [AbstractModel::getFilter('active', true)]);
|
||||
@@ -978,12 +983,10 @@ class Map extends Controller\AccessController {
|
||||
// if systems don´t already exists on map -> get "blank" system
|
||||
// -> required for system type check (e.g. wormhole, k-space)
|
||||
if($sourceSystem){
|
||||
// system exists
|
||||
$sourceExists = true;
|
||||
|
||||
// system exists -> add target to the "right"
|
||||
$systemPosX = $sourceSystem->posX + $systemOffsetX;
|
||||
$systemPosY = $sourceSystem->posY + $systemOffsetY;
|
||||
}else{
|
||||
// system not exists -> get"blank" system
|
||||
$sourceSystem = $map->getNewSystem($sourceSystemId);
|
||||
}
|
||||
|
||||
@@ -998,6 +1001,11 @@ class Map extends Controller\AccessController {
|
||||
|
||||
if($targetSystem){
|
||||
$targetExists = true;
|
||||
|
||||
if($targetSystemId === (int)$currentPosition['systemId']){
|
||||
$systemPosX = (int)$currentPosition['position']['x'];
|
||||
$systemPosY = (int)$currentPosition['position']['y'];
|
||||
}
|
||||
}else{
|
||||
$targetSystem = $map->getNewSystem($targetSystemId);
|
||||
}
|
||||
@@ -1098,9 +1106,15 @@ class Map extends Controller\AccessController {
|
||||
$map = $sourceSystem->mapId;
|
||||
$sourceExists = true;
|
||||
$mapDataChanged = true;
|
||||
// increase system position (prevent overlapping)
|
||||
$systemPosX = $sourceSystem->posX + $systemOffsetX;
|
||||
$systemPosY = $sourceSystem->posY + $systemOffsetY;
|
||||
|
||||
if(!empty($defaultPositions[1])){
|
||||
$systemPosX = (int)$defaultPositions[1]['x'];
|
||||
$systemPosY = (int)$defaultPositions[1]['y'];
|
||||
}else{
|
||||
// increase system position (prevent overlapping)
|
||||
$systemPosX = $sourceSystem->posX + $systemOffsetX;
|
||||
$systemPosY = $sourceSystem->posY + $systemOffsetY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user