unit Game.Chivalry.MedievalWarfare; interface uses System.Generics.Collections, Game.Chivalry, Game.Intf; type { I haven't actually done any research into the dedicated server for the other Chivalry game, so for now most stuff is implemented in the base Chivalry class. } TChivalryMedievalWarfareGame = class(TChivalryGame) protected procedure LoadSupportedMapList(AList: TList); override; public class function GetGameName: string; override; end; implementation uses System.Classes, System.IniFiles, System.SysUtils, Resources, Game.Map, Game.Registry; { TChivalryMedievalWarfareGame } class function TChivalryMedievalWarfareGame.GetGameName: string; begin Result := 'Chivalry: Medieval Warfare'; end; procedure TChivalryMedievalWarfareGame.LoadSupportedMapList(AList: TList); var mapListFileName: string; mapList: TMemIniFile; categories: TStringList; categoryName: string; maps: TStringList; mapIndex: Integer; begin mapListFileName := GetAssetPath('Chivalry.MedievalWarfare.MapList.ini'); if not FileExists(mapListFileName) then exit; mapList := TMemIniFile.Create(mapListFileName); try categories := nil; maps := nil; try categories := TStringList.Create; maps := TStringList.Create; mapList.ReadSections(categories); for categoryName in categories do begin maps.Clear; mapList.ReadSectionValues(categoryName, maps); for mapIndex := 0 to Pred(maps.Count) do AList.Add(TGameMap.Create(Trim(maps.Names[mapIndex]), Trim(maps.ValueFromIndex[mapIndex]), Trim(categoryName))); end; finally FreeAndNil(maps); FreeAndNil(categories); end; finally FreeAndNil(mapList); end; end; initialization TGameRegistry.Register(TChivalryMedievalWarfareGame); end.