diff --git a/modules/overview/_includes.php b/modules/overview/_includes.php index fde288bd6..20316d7c9 100644 --- a/modules/overview/_includes.php +++ b/modules/overview/_includes.php @@ -26,6 +26,8 @@ include($includePath . './screens/Overview/components/AdminAlerts/AdminAlerts.component.php'); include($includePath . './screens/Overview/components/EmailChangeInfo/EmailChangeInfo.component.php'); + include($includePath . './screens/Overview/components/Morale/Morale.component.php'); + include($includePath . './screens/Overview/components/Morale/Morale.utils.php'); include($includePath . './screens/Overview/components/NewMessagesInfo/NewMessagesInfo.component.php'); include($includePath . './screens/Overview/components/NewSurveysInfo/NewSurveysInfo.component.php'); include($includePath . './screens/Overview/components/PlanetsListElement/PlanetsListElement.component.php'); diff --git a/modules/overview/screens/Overview/components/Morale/Morale.component.php b/modules/overview/screens/Overview/components/Morale/Morale.component.php new file mode 100644 index 000000000..735d14e42 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/Morale.component.php @@ -0,0 +1,66 @@ + '', + 'globalJS' => '', + ]; + } + + $user = &$props['user']; + $currentTimestamp = $props['currentTimestamp']; + + $localTemplateLoader = createLocalTemplateLoader(__DIR__); + + $moraleLevelColor = null; + + if ($user['morale_level'] > 0) { + $moraleLevelColor = 'lime'; + } else if ($user['morale_level'] == 0) { + $moraleLevelColor = ''; + } else if ($user['morale_level'] > -50) { + $moraleLevelColor = 'orange'; + } else { + $moraleLevelColor = 'red'; + } + + $moraleStatusData = Morale\Utils\getMoraleStatusData([ + 'user' => &$user, + 'currentTimestamp' => $currentTimestamp, + ]); + + $tplBodyParams = [ + 'Insert_Morale_Level' => $user['morale_level'], + 'Insert_Morale_Color' => $moraleLevelColor, + 'Insert_Morale_Status' => $moraleStatusData['text'], + 'Insert_Morale_Points' => sprintf( + $_Lang['Box_Morale_Points'], + prettyNumber($user['morale_points']) + ), + ]; + $tplBodyParams = array_merge($_Lang, $tplBodyParams); + + $componentHTML = parsetemplate( + $localTemplateLoader('body'), + $tplBodyParams + ); + + return [ + 'componentHTML' => $componentHTML, + 'globalJS' => $moraleStatusData['globalJS'], + ]; +} + +?> diff --git a/modules/overview/screens/Overview/components/Morale/Morale.utils.php b/modules/overview/screens/Overview/components/Morale/Morale.utils.php new file mode 100644 index 000000000..c35a31a22 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/Morale.utils.php @@ -0,0 +1,80 @@ + $_Lang['Box_Morale_NoChanges'], + 'globalJS' => null, + ]; + } + + $moraleSentiment = ( + $userMoraleLevel > 0 ? + 'Pos' : + 'Neg' + ); + $moraleDroptimeRemaining = $user['morale_droptime'] - $currentTimestamp; + + if ($moraleDroptimeRemaining > 0) { + return [ + 'text' => sprintf( + $_Lang["Box_Morale_DropStartIn_{$moraleSentiment}"], + pretty_time( + $moraleDroptimeRemaining, + true, + 'D' + ) + ), + 'globalJS' => InsertJavaScriptChronoApplet( + 'morale', + '', + $user['morale_droptime'], + true + ), + ]; + } + + $moraleDropInterval = ( + $userMoraleLevel > 0 ? + MORALE_DROPINTERVAL_POSITIVE : + MORALE_DROPINTERVAL_NEGATIVE + ); + $moraleDropNextTimepoint = ( + ($user['morale_lastupdate'] == 0) ? + ($user['morale_droptime'] + $moraleDropInterval) : + ($user['morale_lastupdate'] + $moraleDropInterval) + ); + + return [ + 'text' => sprintf( + $_Lang["Box_Morale_Dropping_{$moraleSentiment}"], + pretty_time( + $moraleDropNextTimepoint - $currentTimestamp, + true, + 'D' + ) + ), + 'globalJS' => InsertJavaScriptChronoApplet( + 'morale', + '', + $moraleDropNextTimepoint, + true + ), + ]; +} + +?> diff --git a/modules/overview/screens/Overview/components/Morale/body.tpl b/modules/overview/screens/Overview/components/Morale/body.tpl new file mode 100644 index 000000000..214173922 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/body.tpl @@ -0,0 +1,18 @@ +
+ {Box_Morale_Header} + (?) + | +
+ {Insert_Morale_Level}% + {Insert_Morale_Status} + |
+
---|
{Insert_Morale_Points} | +
{Box_Morale_Header}(?) | -
{Insert_Morale_Level}% {Insert_Morale_Status} |
-
---|
{Box_Morale_Points} | -