Skip to content

Commit b99fb9b

Browse files
authored
Merge pull request #234 from mdziekon/gh-230-planet-abandon-refactor
GH-230 | Overview - Abandon planet screen refactor (and Galaxy row bugfix)
2 parents ccf1db0 + 8b5c4ba commit b99fb9b

File tree

17 files changed

+440
-113
lines changed

17 files changed

+440
-113
lines changed

common/components/GalaxyPlanetLink/GalaxyPlanetLink.component.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,24 @@
1010
* @param number $props['coords']['galaxy']
1111
* @param number $props['coords']['system']
1212
* @param number $props['coords']['planet']
13+
* @param array? $props['linkAttrs']
1314
*/
1415
function render($props) {
1516
$linkText = "[{$props['coords']['galaxy']}:{$props['coords']['system']}:{$props['coords']['planet']}]";
1617

1718
return buildDOMElementHTML([
1819
'tagName' => 'a',
1920
'contentHTML' => $linkText,
20-
'attrs' => [
21-
'href' => Routing\getGalaxyTargetUrl($props['coords']),
22-
],
21+
'attrs' => array_merge(
22+
[
23+
'href' => Routing\getGalaxyTargetUrl($props['coords']),
24+
],
25+
(
26+
isset($props['linkAttrs']) ?
27+
$props['linkAttrs'] :
28+
[]
29+
)
30+
),
2331
]);
2432
}
2533

includes/per_module/common/userdata_helpers.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use UniEngine\Engine\Common\Exceptions;
44
use UniEngine\Engine\Includes\Helpers\Users;
5+
use UniEngine\Engine\Includes\Helpers\World;
56

67
class UniEngineDataFetchException extends Exceptions\UniEngineException {};
78
class UniEnginePlanetDataFetchException extends UniEngineDataFetchException {};
@@ -217,7 +218,7 @@ function fetchGalaxyData(&$planet) {
217218
$planetID = $planet['id'];
218219

219220
$selectorKey = (
220-
$planet['type'] == 1 ?
221+
$planet['planet_type'] == World\Enums\PlanetType::Planet ?
221222
'id_planet' :
222223
'id_moon'
223224
);

modules/overview/_includes.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66

77
$includePath = $_EnginePath . 'modules/overview/';
88

9+
include($includePath . './screens/AbandonPlanet/AbandonPlanet.screen.php');
10+
include($includePath . './screens/AbandonPlanet/AbandonPlanet.utils.php');
11+
include($includePath . './screens/AbandonPlanet/utils/effects/triggerUserTasksUpdates.effect.php');
12+
include($includePath . './screens/AbandonPlanet/utils/effects/tryAbandonPlanet.effect.php');
13+
include($includePath . './screens/AbandonPlanet/utils/effects/updateUserDevLog.effect.php');
14+
include($includePath . './screens/AbandonPlanet/utils/errorMappers/tryAbandonPlanet.errorMapper.php');
15+
include($includePath . './screens/AbandonPlanet/utils/validators/validateAbandonPlanet.validator.php');
16+
917
include($includePath . './screens/FirstLogin/FirstLogin.screen.php');
1018
include($includePath . './screens/FirstLogin/FirstLogin.utils.php');
1119
include($includePath . './screens/FirstLogin/utils/effects/createUserDevLogDump.effect.php');
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
namespace UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet;
4+
5+
use UniEngine\Engine\Common;
6+
use UniEngine\Engine\Includes\Helpers\World;
7+
use UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet;
8+
9+
/**
10+
* @param array $params
11+
* @param arrayRef $params['input']
12+
* @param arrayRef $params['user']
13+
* @param arrayRef $params['planet']
14+
* @param number $params['currentTimestamp']
15+
*/
16+
function render($props) {
17+
global $_Lang;
18+
19+
$input = &$props['input'];
20+
$user = &$props['user'];
21+
$planet = &$props['planet'];
22+
$currentTimestamp = $props['currentTimestamp'];
23+
24+
if (isOnVacation()) {
25+
return message($_Lang['Vacation_WarnMsg'], $_Lang['Vacation']);
26+
}
27+
28+
$effectsResult = AbandonPlanet\runEffects([
29+
'input' => &$input,
30+
'user' => &$user,
31+
'planet' => &$planet,
32+
'currentTimestamp' => $currentTimestamp,
33+
]);
34+
35+
if ($effectsResult['isSuccess']) {
36+
header("Location: {$effectsResult['payload']['redirectUrl']}");
37+
38+
return safeDie();
39+
}
40+
41+
$screenTitle = $_Lang['Abandon_TitleMain'];
42+
$localTemplateLoader = createLocalTemplateLoader(__DIR__);
43+
44+
$tplBodyParams = [
45+
'Abandon_Desc' => sprintf(
46+
$_Lang['Abandon_Desc'],
47+
(
48+
$planet['planet_type'] == World\Enums\PlanetType::Planet ?
49+
$_Lang['Abandon_Planet'] :
50+
$_Lang['Abandon_Moon']
51+
),
52+
$planet['name'],
53+
Common\Components\GalaxyPlanetLink\render([
54+
'coords' => $planet,
55+
'linkAttrs' => [
56+
'class' => 'orange',
57+
],
58+
])
59+
),
60+
'Abandon_Ins_Pass' => $user['password'],
61+
62+
'Abandon_Ins_MsgHide' => (
63+
$effectsResult['isSuccess'] === null ?
64+
'style="display: none;"' :
65+
''
66+
),
67+
'Abandon_Ins_MsgColor' => 'red',
68+
'Abandon_Ins_MsgTxt' => (
69+
$effectsResult['isSuccess'] !== null ?
70+
$effectsResult['payload']['message'] :
71+
''
72+
),
73+
];
74+
$tplBodyParams = array_merge($_Lang, $tplBodyParams);
75+
76+
$componentHTML = parsetemplate(
77+
$localTemplateLoader('body'),
78+
$tplBodyParams
79+
);
80+
81+
display($componentHTML, $screenTitle);
82+
}
83+
84+
?>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
namespace UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet;
4+
5+
use UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet;
6+
7+
/**
8+
* @param array $params
9+
* @param arrayRef $params['input']
10+
* @param arrayRef $params['user']
11+
* @param arrayRef $params['planet']
12+
* @param number $params['currentTimestamp']
13+
*/
14+
function runEffects($props) {
15+
global $_Lang;
16+
17+
$input = &$props['input'];
18+
$user = &$props['user'];
19+
$planet = &$props['planet'];
20+
$currentTimestamp = $props['currentTimestamp'];
21+
22+
if (
23+
!isset($input['action']) ||
24+
$input['action'] != 'do'
25+
) {
26+
return [
27+
'isSuccess' => null,
28+
];
29+
}
30+
31+
$confirmPassword = (
32+
isset($input['give_passwd']) ?
33+
$input['give_passwd'] :
34+
''
35+
);
36+
37+
$tryAbandonPlanetResult = AbandonPlanet\Utils\Effects\tryAbandonPlanet([
38+
'input' => [
39+
'confirmPassword' => $confirmPassword,
40+
],
41+
'user' => &$user,
42+
'planet' => &$planet,
43+
]);
44+
45+
if (!$tryAbandonPlanetResult['isSuccess']) {
46+
$errorMessage = AbandonPlanet\Utils\ErrorMappers\mapTryAbandonPlanetErrorToReadableMessage(
47+
$tryAbandonPlanetResult['error']
48+
);
49+
50+
return [
51+
'isSuccess' => false,
52+
'payload' => [
53+
'message' => $errorMessage,
54+
],
55+
];
56+
}
57+
58+
AbandonPlanet\Utils\Effects\triggerUserTasksUpdates([
59+
'user' => &$user,
60+
'planet' => &$planet,
61+
]);
62+
AbandonPlanet\Utils\Effects\updateUserDevLog([
63+
'abandonedPlanetIds' => $tryAbandonPlanetResult['payload']['deleteResult']['ids'],
64+
'currentTimestamp' => $currentTimestamp,
65+
]);
66+
67+
return [
68+
'isSuccess' => true,
69+
'payload' => [
70+
'redirectUrl' => 'overview.php?showmsg=abandon',
71+
],
72+
];
73+
}
74+
75+
?>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
header("Location: ../index.php");
4+
5+
?>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
header("Location: ../index.php");
4+
5+
?>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
namespace UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet\Utils\Effects;
4+
5+
use UniEngine\Engine\Includes\Helpers\World;
6+
7+
/**
8+
* @param array $params
9+
* @param arrayRef $params['user']
10+
* @param arrayRef $params['planet']
11+
*/
12+
function triggerUserTasksUpdates($props) {
13+
$user = &$props['user'];
14+
$planet = &$props['planet'];
15+
16+
if ($planet['planet_type'] != World\Enums\PlanetType::Planet) {
17+
return;
18+
}
19+
20+
// Prevent abandoning Planet to make mission faster
21+
Tasks_TriggerTask(
22+
$user,
23+
'COLONIZE_PLANET',
24+
[
25+
'mainCheck' => function ($JobArray, $ThisCat, $TaskID, $JobID) use ($user) {
26+
global $UserTasksUpdate;
27+
28+
$userId = $user['id'];
29+
30+
if (!empty($UserTasksUpdate[$userId]['status'][$ThisCat][$TaskID][$JobID])) {
31+
$user['tasks_done_parsed']['status'][$ThisCat][$TaskID][$JobID] = $UserTasksUpdate[$userId]['status'][$ThisCat][$TaskID][$JobID];
32+
}
33+
if ($user['tasks_done_parsed']['status'][$ThisCat][$TaskID][$JobID] <= 0) {
34+
return true;
35+
}
36+
37+
$user['tasks_done_parsed']['status'][$ThisCat][$TaskID][$JobID] -= 1;
38+
$UserTasksUpdate[$userId]['status'][$ThisCat][$TaskID][$JobID] = $user['tasks_done_parsed']['status'][$ThisCat][$TaskID][$JobID];
39+
40+
return true;
41+
}
42+
]
43+
);
44+
}
45+
46+
?>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet\Utils\Effects;
4+
5+
use UniEngine\Engine\Modules\Overview\Screens\AbandonPlanet;
6+
7+
/**
8+
* @param array $params
9+
* @param array $params['input']
10+
* @param string $params['input']['confirmPassword']
11+
* @param arrayRef $params['user']
12+
* @param arrayRef $params['planet']
13+
*/
14+
function tryAbandonPlanet($params) {
15+
$user = &$params['user'];
16+
$planet = &$params['planet'];
17+
18+
$executor = function ($input, $resultHelpers) use (&$user, &$planet) {
19+
global $_EnginePath;
20+
21+
$abandonPlanetValidationResult = AbandonPlanet\Utils\Validators\validateAbandonPlanet([
22+
'input' => $input,
23+
'user' => &$user,
24+
'planet' => &$planet,
25+
]);
26+
27+
if (!$abandonPlanetValidationResult['isSuccess']) {
28+
return $resultHelpers['createFailure'](
29+
$abandonPlanetValidationResult['error']
30+
);
31+
}
32+
33+
include("{$_EnginePath}includes/functions/DeleteSelectedPlanetorMoon.php");
34+
$DeleteResult = DeleteSelectedPlanetorMoon();
35+
36+
if ($DeleteResult['result'] !== true) {
37+
switch ($DeleteResult['reason']) {
38+
case 'tech':
39+
return $resultHelpers['createFailure']([
40+
'code' => 'ABANDON_IMPOSSIBLE_TECH_IN_PROGRESS',
41+
]);
42+
case 'sql':
43+
return $resultHelpers['createFailure']([
44+
'code' => 'ABANDON_ERROR_SQL',
45+
]);
46+
case 'fleet_current':
47+
return $resultHelpers['createFailure']([
48+
'code' => 'ABANDON_IMPOSSIBLE_FLIGHTS_IN_PROGRESS',
49+
]);
50+
case 'fleet_moon':
51+
return $resultHelpers['createFailure']([
52+
'code' => 'ABANDON_IMPOSSIBLE_FLIGHTS_ON_MOON',
53+
]);
54+
}
55+
}
56+
57+
return $resultHelpers['createSuccess']([
58+
'deleteResult' => $DeleteResult,
59+
]);
60+
};
61+
62+
return createFuncWithResultHelpers($executor)($params['input']);
63+
}
64+
65+
?>

0 commit comments

Comments
 (0)