Code: Select all
procedure TForm1.Button1Click(Sender: TObject);
var
pc: PChar;
begin
try
if Init(True, 0) <> 1 then
begin
MessageDlg('Failed to initialize unit syncer!', mtError, [mbOK], 0);
Exit;
end
else RichEdit1.Lines.Add('Unit syncer initialized');
InitArchiveScanner;
RichEdit1.Lines.Add('Number of maps: ' + IntToStr(GetMapCount));
pc := GetMapName(0);
RichEdit1.Lines.Add('First map''s name: ' + pc);
UnInit;
except
RichEdit1.Lines.Add('Failed!');
Exit;
end;
end;
Code: Select all
type
Float = Single;
PMapInfo = ^TMapInfo;
TMapInfo =
record
description: PChar;
tidalStrength: Integer;
gravity: Integer;
maxMetal: Float;
extractorRadius: Integer;
minWind: Integer;
maxWind: Integer;
end;
function Init(isServer: Boolean; id: Integer): Integer; stdcall; external 'UnitSync.dll' name 'Init';
procedure UnInit; stdcall; external 'UnitSync.dll' name 'UnInit';
function ProcessUnits: Integer; external 'UnitSync.dll' name 'ProcessUnits';
function GetCurrentList: PChar; stdcall; external 'UnitSync.dll' name 'GetCurrentList';
procedure AddClient(id: Integer; unitList: PChar); external 'UnitSync.dll' name 'AddClient';
procedure RemoveClient(id: Integer); external 'UnitSync.dll' name 'RemoveClient';
function GetClientDiff(id: Integer): PChar; external 'UnitSync.dll' name 'GetClientDiff';
procedure InstallClientDiff(diff: PChar); external 'UnitSync.dll' name 'InstallClientDiff';
function GetUnitCount: Integer; external 'UnitSync.dll' name 'GetUnitCount';
function GetUnitName(unit_: Integer): PChar; external 'UnitSync.dll' name 'GetUnitName';
function GetFullUnitName(unit_: Integer): PChar; external 'UnitSync.dll' name 'GetFullUnitName';
function IsUnitDisabled(unit_: Integer): Integer; external 'UnitSync.dll' name 'IsUnitDisabled';
function IsUnitDisabledByClient(unit_: Integer; clientId: Integer): Integer; external 'UnitSync.dll' name 'IsUnitDisabledByClient';
function InitArchiveScanner: Integer; stdcall; external 'UnitSync.dll' name 'InitArchiveScanner';
procedure AddArchive(name: PChar); stdcall; external 'UnitSync.dll' name 'AddArchive';
procedure AddAllArchives(root: PChar); stdcall; external 'UnitSync.dll' name 'AddAllArchives';
function GetMapCount: Integer; external 'UnitSync.dll' name 'GetMapCount';
function GetMapName(index: Integer): PChar; external 'UnitSync.dll' name 'GetMapName';
function GetMapInfo(name: PChar; outInfo: PMapInfo): Integer; external 'UnitSync.dll' name 'GetMapInfo';
// GetMinimap returns void*, I cast it as PByte though
function GetMinimap(filename: PChar; miplevel: Integer): PByte; external 'UnitSync.dll' name 'GetMinimap';
function GetPrimaryModCount: Integer; external 'UnitSync.dll' name 'GetPrimaryModCount';
function GetPrimaryModName(index: Integer): PChar; external 'UnitSync.dll' name 'GetPrimaryModName';
function GetPrimaryModIndex(name: PChar): Integer; external 'UnitSync.dll' name 'GetPrimaryModIndex';