sync: restore source from Google Drive
Sync changed files to Google Drive / sync (push) Successful in 1h45m13s
Sync changed files to Google Drive / sync (push) Successful in 1h45m13s
This commit is contained in:
1 parent
e2d8247e91
commit
7063d1b1c9
993 files changed
+949976
No files matched your search
@@ -0,0 +1,88 @@
|
||||
unit KM_MapUtilsExt;
|
||||
{$I KaM_Remake.inc}
|
||||
interface
|
||||
uses
|
||||
KM_Defaults, KM_Maps, KM_MapTypes;
|
||||
|
||||
function TryOpenMapPDF(aMap: TKMMapInfo): Boolean;
|
||||
|
||||
function GetGoalDescription(aPlayer1, aPlayer2: TKMHandID; aGoalType: TKMGoalType; aGoalCondition: TKMGoalCondition;
|
||||
aColPlayer1, aColPlayer2, aColTxt, aColBld: Cardinal): string;
|
||||
|
||||
implementation
|
||||
uses
|
||||
SysUtils,
|
||||
KM_Resource, KM_ResTexts, KM_ResHouses, KM_ResTypes,
|
||||
KM_CommonShellUtils, KM_CommonUtils;
|
||||
|
||||
|
||||
function TryOpenMapPDF(aMap: TKMMapInfo): Boolean;
|
||||
var
|
||||
pdfPath: string;
|
||||
begin
|
||||
Result := False;
|
||||
if aMap = nil then Exit;
|
||||
|
||||
pdfPath := aMap.DetermineReadmeFilePath;
|
||||
if pdfPath <> '' then
|
||||
Result := ShellOpenFile(pdfPath);
|
||||
end;
|
||||
|
||||
|
||||
// Format mission goal description
|
||||
function GetGoalDescription(aPlayer1, aPlayer2: TKMHandID; aGoalType: TKMGoalType; aGoalCondition: TKMGoalCondition;
|
||||
aColPlayer1, aColPlayer2, aColTxt, aColBld: Cardinal): string;
|
||||
type
|
||||
TKMGoalTypeDescWordKind = (dwkFirst, dwkSecond);
|
||||
const
|
||||
GOAL_TYPE_DESC_TX: array[TKMGoalType, TKMGoalTypeDescWordKind] of Integer = (
|
||||
(TX_MAPED_GOALS_TYPE_NONE, TX_MAPED_GOALS_TYPE_NONE),
|
||||
(TX_GOAL_CONDITION_DESC_WIN_WORD, TX_GOAL_CONDITION_DESC_DESTROYED_WORD),
|
||||
(TX_GOAL_CONDITION_DESC_SURVIVE_WORD, TX_GOAL_CONDITION_DESC_SAVED_WORD)
|
||||
);
|
||||
|
||||
GOAL_COND_DESC_WORD_TX: array[TKMGoalCondition] of Integer = (
|
||||
TX_MAPED_GOALS_CONDITION_NONE,
|
||||
TX_MAPED_GOALS_CONDITION_TUTORIAL,
|
||||
TX_MAPED_GOALS_CONDITION_TIME,
|
||||
TX_MAPED_GOALS_CONDITION_BUILDS,
|
||||
TX_MAPED_GOALS_CONDITION_TROOPS,
|
||||
TX_MAPED_GOALS_CONDITION_UNKNOWN,
|
||||
TX_MAPED_GOALS_CONDITION_ASSETS,
|
||||
TX_MAPED_GOALS_CONDITION_SERFS,
|
||||
TX_MAPED_GOALS_CONDITION_ECONOMY
|
||||
);
|
||||
|
||||
var
|
||||
I: Integer;
|
||||
goalCondStr, housesStr: string;
|
||||
begin
|
||||
case aGoalCondition of
|
||||
gcBuildings:
|
||||
begin
|
||||
housesStr := '';
|
||||
for I := Low(GOAL_BUILDINGS_HOUSES) to High(GOAL_BUILDINGS_HOUSES) do
|
||||
begin
|
||||
if housesStr <> '' then
|
||||
housesStr := housesStr + ', ';
|
||||
|
||||
housesStr := housesStr + gRes.Houses[GOAL_BUILDINGS_HOUSES[I]].HouseName;
|
||||
end;
|
||||
goalCondStr := Format(gResTexts[TX_GOAL_CONDITION_COND_DESC_BUILDINGS], [WrapWrappedColor(housesStr, aColBld)]);
|
||||
end;
|
||||
else
|
||||
goalCondStr := gResTexts[GOAL_COND_DESC_WORD_TX[aGoalCondition]];
|
||||
end;
|
||||
|
||||
// Format text out of string like:
|
||||
// 'For player %0:s to %1:s player's %2:s %3:s must be %4:s'
|
||||
// We want to get smth like (depends of the locale, ofc)
|
||||
// 'For player 1 to win player's 2 troops must be destroyed'
|
||||
Result := Format(gResTexts[TX_GOAL_CONDITION_DESC_PATTERN], [WrapColor(aPlayer1 + 1, aColPlayer1),
|
||||
WrapColor(gResTexts[GOAL_TYPE_DESC_TX[aGoalType, dwkFirst]], aColTxt),
|
||||
WrapColor(aPlayer2 + 1, aColPlayer2),
|
||||
WrapColor(goalCondStr, aColTxt),
|
||||
WrapColor(gResTexts[GOAL_TYPE_DESC_TX[aGoalType, dwkSecond]], aColTxt)]);
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in new issue
Block a user