Changeset 96


Ignore:
Timestamp:
Sep 28, 2022, 1:54:11 AM (2 years ago)
Author:
chronos
Message:
  • Added: Improvement selection dialog after new train dialog.
Location:
trunk
Files:
4 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormImages.lfm

    r93 r96  
    670670    }
    671671  end
     672  object ImageTerminal: TImage
     673    Left = 345
     674    Height = 55
     675    Top = 136
     676    Width = 63
     677    Picture.Data = {
     678      1754506F727461626C654E6574776F726B47726170686963080F000089504E47
     679      0D0A1A0A0000000D494844520000014900000149080300000021542F9A000002
     680      64504C54450000002A2A2B2828292D2D2D1313131515154D4D4D4C4C4C4F4F4F
     681      4F4F505050515151525353545454555555565656575858595B5B5C5D5D5E5E5E
     682      5F3131313030302C2C2C2D2D2D2E2E2E2F2F2F3B3B3C3A3A3B38383833333334
     683      34343535353636363E3E3F3D3D3E3C3C3D414142454546424243464647494949
     684      48484827272829292A2A2A2B2626272424242424251F1F1F2222222323232020
     685      202121211D1D1D1E1E1E1B1B1B1C1C1C17171718181819191914141416161611
     686      1111121212131313000000010101020202030303040404060606070707080808
     687      0909090A0A0A0B0B0B0C0C0C0D0D0D0E0E0F0F0F0F6A6A6B8A8A8B8B8B8C8C8C
     688      8D8D8D8E8E8E8F8F8F909090919A9A9B9C9C9DA6A6A891919391919292929494
     689      949697979898989999999A9A9A9B9C9C9D9E9E9F9F9FA0A0A0A1A1A1A2A3A3A4
     690      A4A4A5A5A5A66262626363636565666666676767686868696A6A6B6B6B6C6C6C
     691      6D6E6E6F70707171717272727374747575757676767778787979797A7A7A7B7B
     692      7B7C7C7C7D7D7D7E7F7F8080808183838484848587878889898AA7A7A9A8A8AA
     693      A9A9ABAAAAACABABADACACAEADADAFAEAEB0AFAFB1B0B0B2B1B1B2B2B2B3B3B3
     694      B4B6B6B7B7B7B8B8B8B9BABABBBBBBBCBCBCBDBDBDBFBEBEC0BFBFC1C1C1C3C2
     695      C2C4C3C3C5C4C4C6C5C5C7C6C6C8C7C7C9C8C8CAC9C9CBCACACCCBCBCDCCCCCD
     696      CECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D3D3D5D4D4D6D5D5D7D6D6D8D7D7
     697      D9D8D8DADADADCDCDCDEDEDEE0DFDFE1E0E0E2E1E1E3E2E2E4E3E3E5E4E4E6E5
     698      E5E7E6E6E8E7E7E8E8E8E9E8E8EAE9E9EBEAEAECEBEBEDECECEEEEEEF0EFEFF1
     699      F0F0F2F2F2F4F3F3F5381CBF66000000CC74524E5300373E93AE97B1B3AFAFAD
     700      ACA9A8A8A7A4A19F9FCFD1D5D5D3D3C3C4C8CDCDCBCAC0C1C3BDB8BDB8B5B7D9
     701      D7D7DBDEDEE3E0E0E3E3E6E6E9E9ECECECF0F0F5F5F5FFFFFFFFFFFFFFFFFFFF
     702      FFFFFFFFFF3E706F6D6C6B6B6A020651676866656261605F5D5B595958555452
     703      9B9A9796959391908F8D8B8A898786858281807F7E7D7C7B77767271504E4E4D
     704      4B4B4A48484646454440403E3D3B3B3938373534323230302E2E2C2C2A2A2826
     705      262424222221201F1E1D1B1917161514131111100E0E0D0D0B0A090806050402
     706      01DA76DAA100000B8749444154789CED9DFF7F144719C757ABA455544E6D13A4
     707      0A26A8682C4DABC6166C75A185027A11AA52C12F175AB45A2B865A6AAD495BC1
     708      1CB6B4A6C1C3FA05694F4A116D4B68B141E022A68025FF943BBB97BBE46E9E99
     709      67F69EE376C9E7FD7AE5979B679E79E67DBB7B73BB975DCF0300000000000000
     710      000000000000000000000000000000000000000000C01C646CA8B373A8D8EA2A
     711      D24FA9D30FE91C6B752529A7D8E797E92BB4BA9654531519906B753529669648
     712      BF0F07CBB8947AFC59F4955A5D515A99E7D730AFD515A5947CAD48DFCFB7BAA6
     713      5452BB6F2B7AB07FC760B05EA4EF0FB6BAAA1432D6A733E96381EE4C462BD2CF
     714      B4BAAED431A617898DD299BA15D0349DADAE2C65142891BE8FEFDF4E74D226B1
     715      51BAA0599457C1F29C8F6E515E25D5CBF313CF6FDFBD69CBA1F1CB34DC8049A4
     716      EF0F5CA632BC337F7B76F3AFB7155E91CA97BFA63287950F1D91CA6A20671679
     717      99CE541EFFE54D95013F71AF40C2ED37CE9EC5B2A69F25341E24239A7FA83CF1
     718      81D923AEB8BBD1848BEA6671C7AE0B22B5120C75D845FA7EC750336BF0A686D7
     719      D70DD97DA8918C07BEA69DC629A98A35643922039A588277E153BA11EFB83F7E
     720      C6A788597CE1A45CD5B574F144B637AF02EFFC1262D06FC5CD78781D358F8EF3
     721      9295CF8269B2A369057853CBA841578FC4CB78F6167A22CD3B25C313D9CCBD7B
     722      881EF4ABC76365FCB469227B85CBAFD072932FAE368C7AFDA51819F71B27B2E2
     723      A2F814428A5C934D5B8C2D340EBB2D4646EAB05B66ABF8144286B926879B33BE
     724      F7B479D8E5EE1BE551CB4C16366116016D5C936DCD19DF7C4C0BF8BD7346C371
     725      37A22927AFC953E597697CEFDC1ACBB03B9C537ED43693CD4D98077DAABC9EE6
     726      FC8CE047B6616F72CD78C1F40916B2A009F3607CE5AED2942FDF3BADC3FEDB31
     727      E38BD68CD7C94FA3A8BF324BD0945F5C2DB50E3BEA98D17021A5CC97C4679173
     728      1219A8CC8997603FA8399FD27BC63E9120EA2F8273281AAEDD50748A6E96EA5A
     729      5B3767DA4E50272F66A05656EE939FCDEDD199E3B1BD3B8D171C687A76EE8D3E
     730      C48BDC9348342ACD0DACA8049AEC5763F5C7B4384DCF469585BDA62749B349B5
     731      BC2FC5D8AB6BE95017C998679168D26CF27B9ED31292465D04B75EFEB1916693
     732      FF75386561A6D078316936B9D8B35E91E5A24E9836BA7BA7D8E44F05A65FA647
     733      E04D49B1497581D071354EE211BF02764B9156931B1BCE50656E9BDCEDF1AFCA
     734      DA98DB267FE5891D277BBD141F27A71A36F941CFE124B9992E813725C5261779
     735      8DEF9265D4BF9734F8A533CD26D7799CD3772CF2C1D7CE4673A4D8A47FB4F114
     736      654A8E27DC75A4D9E4264FE840A9AE3436FC6D29CD26977A02271E1439AFF1C3
     737      64AA4DAE7A5DE0F0A628499C0A499DC90F1F742DC695B1F63875A5CFE4167173
     738      75C4FBF0513D5365F239717175C45B5AA99E6933F9A6B8BB199C9E4B260FC6E9
     739      C7C54B9D490F266192EC08933381492960520A98940226A580492960520A9894
     740      0226A580492960520A98940226A580492960520A98940226A580492960528A84
     741      993C5DB07120883A698DD270D6F326F63591739E578A535741FD03E4416BD41B
     742      AE2A0148122FC4DA39E60C2FB045EEB7DE03636EB37A3F53E4D95B5B5D6AD2B9
     743      F52CCFE4FC56179A7CE6B3448AFC5AF94A27C710797C43ABAB4C031BECB74FBC
     744      B8B8D545A683C5D67B1D3ED2EA12D3C2231691580071B12C85B000E2635E0A5D
     745      634F00A6312D85BED3EAE2D2458E148905901BE452080B2057A8A5101640CEE8
     746      97425800B9A35D0A61011407ED52A8D545A513F2E31B00000013CB8324E62E30
     747      29054C4A019352C0A4143029054C4A019352C0A4143029054C4A019352C0A414
     748      3029054C4A019352C0A4143029054C4A019352C0A4143029054C4A019352C0A4
     749      143029054C4A019352C0A4143029054C4A01935234DFE43BEE71BCC389F7AEBA
     750      2247DC328CD4FD97C1BB3DC722EE7967F24C8E390F51EBC13D415D8A6F3B27F8
     751      47F24C4E3A0F312A6F72C439C15B301971859A7479586F8130C9CF409874B9CD
     752      DF204C52E13059AD919F0126236092042661D20D98D4019364384C566BE46780
     753      C908982481499874032675C024190E93D51AF919E690C96CDB60A1A072950AF9
     754      C1AE9A709EC9F6CC70F834066FAC309C69B786EB4C760DE60B25155A280CB665
     755      67B7A5C26436939F9DB0946B9B19CE30D93E5C7345636CB8DD10AEA835D9962B
     756      CD4E91CFCC94990293D9C1680627B60F063CB16F223291A9865B4D7615746515
     757      BA88F088D92633D13B31B1EF0955C5F6D7A37774B0EA32F926438F93DF7FDF17
     758      2BADDD0F3E17BAAC6C971693BD158FAF8DF6EFD9B36DB472ABC742AF267C9A99
     759      26DB428FBF7BB0BBD27ACBFBFBCF872E2B7526DC647B31E87FF22777D504ACDC
     760      ADA6912F6F11669303D1267D66E347D64FB76EE8FC46B4659706EAC22B544D66
     761      D5C1E5AD2757D404ACDF311EBC5E2C1F25126E3213F43EF5335DC86D9B948868
     762      162693D9E810FBD27B6A132C381A3644EF86D164BB7A2B7EF3154D11773DAC6E
     763      CF171D67926D7238E87CEF7A2268F9DF0395E12C0C26B36A9BF65EBD5A97E0EA
     764      7FAAB662D6379BCC04228BBDF5DD43FA9EF6CAB526DA642EE83B444765FF50DE
     765      20689359B5395D7C6C8D3EC1DA217547D752D66852ED16CF1A6E3AFC4D2F7ABC
     766      45924D06B5793B4C616BD506D16530196E91A58FD11996FC27DA2A69935D41C3
     767      FD779AAA78D49BAE36A926D5C6B0CB12B8253C56922695C871E313E6AE3BAD54
     768      D226D531728BA58887C35D23B9267B8339DC670B5C774479A04CAA8D7AF233E6
     769      0C0BCF9703F52683F7E2F03A5B15FDC1FBD99B5C93819E9789E3DB0C3E1F840E
     770      13260782BF4B9FB46598371DAA33197CE49DEBB116B1E658109A5893C11679E1
     771      4646E887BC305667527DDA3C66CFB0A71CAA31A95E5EC028A23B4A914C93018F
     772      B262FF18C612BFB0FA33E36EE0771E2E07D7BC1EFDC26A8455C4E3616C524DBE
     773      C68BBDC164D2BE67067CD664F273BC2A4E26D9A4F6AB8D8667689377F332DC47
     774      9BFC21B3885F24D8E4A4F523B3CC32D2E445E60DEA6FBE449A5CC42CE2CB0936
     775      B9971BBC769232695D444D334A993CBD8A9BE240724D3EC08E7E8A32D9A60DD7
     776      F00065B29F5DC4AEE49ABC991DFD73C2E4243BC3ED94C98C365CC7E2C49A3CC5
     777      8FBE9E30B99F9FE2286172393F45624D3ECF8FBE8D30F9243FC536BDC929F661
     778      D2F75F49AAC91FF0A357FD4F6FF2BDFC140FE94DBEC1CFA03E72926972AB43F8
     779      9B7A934BF919E6EB4D1E7128E2C74935B9D921FC55BDC925FC0C1FD79B3CEC50
     780      447F524D7ED721FC65BDC96BF919AE6D7C9BDC9A54932E7BF74B7A931DFC0C1D
     781      8D9BDC0C930A988C804912988449376052074C86C064044C92C0244CBA01933A
     782      60320426236092042661D20D98D401932130190193243009936EC0A40E980C81
     783      C908982481499874032675C064084C46C024094CC2A41B30A903264360320226
     784      49601226DD80491D30190293113049029330E9064CEA80C990B498FC93738FC0
     785      BE43EC71CF3B1463080B7F0D13B3F96D8C21E28801005C91145B5DC01583CBAD
     786      EAE7143029054C4A019352C0A4143029054C4A019352C0A4143029054C4A0193
     787      52C0A4143029054C4A019352C898CCE6F5C1A59C69ECDAC7264E93A71E4FA568
     788      234E35174DB7E9EE25EA1B1B36D557FB4CC64A7D595DB4599B06AD493ADC70EB
     789      EBABC84E79C3F488D905EF9AC90939D45574A70CD9E9EB6E0E081C4D1A9E27EB
     790      3886B597A193F66197F1EBD37632843BCCD271D06A27CD1427AC268FD5773A66
     791      1C49999CD04CC55E9FC3A40CE17A289353F5AFAE6454AA7DD9B64D725FAD50D0
     792      FE048394626CBE0493DC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93EC
     793      022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93
     794      EC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C
     795      93EC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93EC022CCD30C92EC0D2
     796      0C93EC022CCD30C92EC0D20C93EC022CCD30C92EC0D20C93EC022CCD30C92EC0
     797      D22C6692E45F758CDB3B9DA9EFF5B6B5D3647DA7496BA7B7EB3B9DB1D7375EDF
     798      CBDE09000000000000000000207DFC1F5A774B122869F9390000000049454E44
     799      AE426082
     800    }
     801    Proportional = True
     802    Stretch = True
     803  end
     804  object ImageLine: TImage
     805    Left = 336
     806    Height = 74
     807    Top = 32
     808    Width = 76
     809    Picture.Data = {
     810      1754506F727461626C654E6574776F726B477261706869632704000089504E47
     811      0D0A1A0A0000000D494844520000002000000020080300000044A48AC6000001
     812      B3504C5445000000000000020202000000030303060607000000000000000000
     813      0000000000000000000404040000000101000404040000000000000000000202
     814      0200000001010100000000000000000002020200000000000000000100000000
     815      0000010101000000000000000000000000000000010101000000000000000000
     816      0000000000000000000000000101010000000000000000000000000000000000
     817      0000000000000000000000000000000000000000000000000000000000000000
     818      0000000000000000000000000000000000000000000000000000010101010101
     819      0000000101010000000000000000000000000000000000000000000000000000
     820      0000000000000000000000000000000000000000000000000000000000000000
     821      0000000000000000000000000000000000000000000000000000000000000000
     822      0000000000000000000000000000000000000000000000000000000000000000
     823      0000000000000000000000000000000000000000000000000000000000000000
     824      0000000000000000000000000000000000000000000000000000000000000000
     825      000000000000000000000000000000000000000000000000BD89245100000090
     826      74524E53000101020202030405060708080909090A0B0C0C0D0D0E0F11111213
     827      1314151617181D1E2020212A2C2E31323A3B3C3D3E444546484A4D4E53545556
     828      585D5E6061626465666B6E7176808083888B8C8D90919296979B9FA7A9ABB0B3
     829      B5B7B8B9BABCBEBFC1C2C3C5C8C9CACBCCCDCECFD0D1D3D4D5D6D7D8DADCDDDE
     830      DFE0E1E2E5E6E9EDEEEFF0F1F2F6F7F8F9FCFDFEB418677E0000019349444154
     831      789C95936753C240108663A3C502880DC4865D444501C5820DEC05047B4754AA
     832      222A7614151448B23FD903C71966EE1CC7E7CB66669FDCBD7BB950D43FC8A305
     833      DF0F42510E51D01CD88AD3B5DCB1DB4E148C1090A6ABF2067A096D5EEB2C84FB
     834      345D5D1AC3133BD3918709720F0B6C328148720047124C285B7B86CFAB0BC4D5
     835      27441C34BE47C9389C352B944A4563801924F4296A00BC99901237A325B473E4
     836      6608B634205ACED9914AFC242AB6DF201579444452F0BA21C6842A571298D83B
     837      22C64062079FA2A0691A2ED56D08758835AB48878D4266DE13934352B9C3E0AF
     838      A38B8AE85A1F63202C50BA720D1FC74E84EB830B2D89304111822C4EA598C0D7
     839      39E0D13281B03CB0362D8F10A21F3C3F217B4821FF3A6A7A72135E16E6100B2F
     840      DCBA498009D5E1EC903E3C64E1D41E44ED56AB75D91EE5B6CC42C22646F0CAD2
     841      55EA664877F2CF2978DD36B81B1B428CDEB2F39DF998200F66873CC13FB774F5
     842      1EE287FB08679C0B2E122EA5C004FE1AA14824ACF1327AE2BF67044F79BACA3C
     843      BF4CA11AD3F1334BE94DF54481C817248E802E60EE8F7C0000000049454E44AE
     844      426082
     845    }
     846    Proportional = True
     847    Stretch = True
     848  end
    672849end
  • trunk/Forms/UFormImages.pas

    r93 r96  
    1111
    1212  TFormImages = class(TForm)
     13    ImageLine: TImage;
    1314    ImageCarriage: TImage;
    1415    ImageFastForward: TImage;
     16    ImageTerminal: TImage;
    1517    ImagePause: TImage;
    1618    ImagePlay: TImage;
     
    2022    ImageTunnel: TImage;
    2123    ImageScreenshot: TImage;
    22   private
    23     { private declarations }
    24   public
    25     { public declarations }
    2624  end;
    2725
  • trunk/Forms/UFormMain.pas

    r95 r96  
    244244  CopyImage(Engine.ImageLocomotive.Bitmap, FormImages.ImageLocomotive.Picture.Bitmap);
    245245  CopyImage(Engine.ImageLocomotive.BitmapDisabled, FormImages.ImageLocomotive.Picture.Bitmap, True);
    246   CopyImage(Engine.ImageNewTrain.Bitmap, FormImages.ImageLocomotive.Picture.Bitmap);
    247   CopyImage(Engine.ImageNewTrain.BitmapDisabled, FormImages.ImageLocomotive.Picture.Bitmap, True);
     246  CopyImage(Engine.ImageLine.Bitmap, FormImages.ImageLine.Picture.Bitmap);
     247  CopyImage(Engine.ImageLine.BitmapDisabled, FormImages.ImageLine.Picture.Bitmap, True);
     248  CopyImage(Engine.ImageTerminal.Bitmap, FormImages.ImageTerminal.Picture.Bitmap);
     249  CopyImage(Engine.ImageTerminal.BitmapDisabled, FormImages.ImageTerminal.Picture.Bitmap, True);
     250  CopyImage(Engine.ImageTunnel.Bitmap, FormImages.ImageTunnel.Picture.Bitmap);
     251  CopyImage(Engine.ImageTunnel.BitmapDisabled, FormImages.ImageTunnel.Picture.Bitmap, True);
    248252  CopyImage(Engine.ImageCarriage.Bitmap, FormImages.ImageCarriage.Picture.Bitmap);
    249253  CopyImage(Engine.ImageCarriage.BitmapDisabled, FormImages.ImageCarriage.Picture.Bitmap, True);
     
    261265    BitmapInvert(Engine.ImageLocomotive.Bitmap);
    262266    BitmapInvert(Engine.ImageLocomotive.BitmapDisabled);
    263     BitmapInvert(Engine.ImageNewTrain.Bitmap);
    264     BitmapInvert(Engine.ImageNewTrain.BitmapDisabled);
     267    BitmapInvert(Engine.ImageLine.Bitmap);
     268    BitmapInvert(Engine.ImageLine.BitmapDisabled);
     269    BitmapInvert(Engine.ImageTerminal.Bitmap);
     270    BitmapInvert(Engine.ImageTerminal.BitmapDisabled);
     271    BitmapInvert(Engine.ImageTunnel.Bitmap);
     272    BitmapInvert(Engine.ImageTunnel.BitmapDisabled);
    265273    BitmapInvert(Engine.ImageCarriage.Bitmap);
    266274    BitmapInvert(Engine.ImageCarriage.BitmapDisabled);
     
    274282    BitmapInvert(Engine.ImageFastForward.BitmapDisabled);
    275283  end;
     284  Engine.ImageNewTrain.Bitmap.Assign(Engine.ImageLocomotive.Bitmap);
     285  Engine.ImageNewTrain.BitmapDisabled.Assign(Engine.ImageLocomotive.BitmapDisabled);
    276286end;
    277287
  • trunk/Languages/BigMetro.cs.po

    r95 r96  
    4040msgstr "Big Metro"
    4141
     42#: uengine.scarriage
     43msgid "Carriage"
     44msgstr "Vagón"
     45
    4246#: uengine.scontinue
    4347msgctxt "uengine.scontinue"
     
    9296msgstr "Jazyk"
    9397
     98#: uengine.sline
     99msgid "Line"
     100msgstr "Linka"
     101
    94102#: uengine.slondon
    95103msgid "London"
     
    99107msgid "New high score!"
    100108msgstr "Nové vysoké skóre!"
     109
     110#: uengine.snewimprovement
     111msgid "Select a new improvement for your metro"
     112msgstr "Vyber nové vylepšení pro tvé metro"
    101113
    102114#: uengine.snewtrain
     
    148160msgstr "Stanice musí mít MapStation"
    149161
     162#: uengine.sterminal
     163msgid "Terminal"
     164msgstr "Terminál"
     165
    150166#: uengine.stokyo
    151167msgid "Tokyo"
     
    155171msgid "Train"
    156172msgstr "Vlak"
     173
     174#: uengine.stunnel
     175msgid "Tunnel"
     176msgstr "Tunel"
    157177
    158178#: uengine.sweek
  • trunk/Languages/BigMetro.de.po

    r95 r96  
    4343msgstr "Big Metro"
    4444
     45#: uengine.scarriage
     46msgid "Carriage"
     47msgstr ""
     48
    4549#: uengine.scontinue
    4650#, fuzzy
     
    102106msgstr "Sprache"
    103107
     108#: uengine.sline
     109msgid "Line"
     110msgstr ""
     111
    104112#: uengine.slondon
    105113msgid "London"
     
    109117msgid "New high score!"
    110118msgstr "Neuer Highscore!"
     119
     120#: uengine.snewimprovement
     121msgid "Select a new improvement for your metro"
     122msgstr ""
    111123
    112124#: uengine.snewtrain
     
    161173msgstr ""
    162174
     175#: uengine.sterminal
     176msgid "Terminal"
     177msgstr ""
     178
    163179#: uengine.stokyo
    164180msgid "Tokyo"
     
    167183#: uengine.strain
    168184msgid "Train"
     185msgstr ""
     186
     187#: uengine.stunnel
     188msgid "Tunnel"
    169189msgstr ""
    170190
  • trunk/Languages/BigMetro.fr.po

    r95 r96  
    4343msgstr "Big Metro"
    4444
     45#: uengine.scarriage
     46msgid "Carriage"
     47msgstr ""
     48
    4549#: uengine.scontinue
    4650#, fuzzy
     
    102106msgstr "Langue"
    103107
     108#: uengine.sline
     109msgid "Line"
     110msgstr ""
     111
    104112#: uengine.slondon
    105113msgid "London"
     
    109117msgid "New high score!"
    110118msgstr "Nouveau highscore!"
     119
     120#: uengine.snewimprovement
     121msgid "Select a new improvement for your metro"
     122msgstr ""
    111123
    112124#: uengine.snewtrain
     
    161173msgstr ""
    162174
     175#: uengine.sterminal
     176msgid "Terminal"
     177msgstr ""
     178
    163179#: uengine.stokyo
    164180msgid "Tokyo"
     
    167183#: uengine.strain
    168184msgid "Train"
     185msgstr ""
     186
     187#: uengine.stunnel
     188msgid "Tunnel"
    169189msgstr ""
    170190
  • trunk/Languages/BigMetro.pot

    r95 r96  
    3030msgstr ""
    3131
     32#: uengine.scarriage
     33msgid "Carriage"
     34msgstr ""
     35
    3236#: uengine.scontinue
    3337msgctxt "uengine.scontinue"
     
    8286msgstr ""
    8387
     88#: uengine.sline
     89msgid "Line"
     90msgstr ""
     91
    8492#: uengine.slondon
    8593msgid "London"
     
    8896#: uengine.snewhighscore
    8997msgid "New high score!"
     98msgstr ""
     99
     100#: uengine.snewimprovement
     101msgid "Select a new improvement for your metro"
    90102msgstr ""
    91103
     
    138150msgstr ""
    139151
     152#: uengine.sterminal
     153msgid "Terminal"
     154msgstr ""
     155
    140156#: uengine.stokyo
    141157msgid "Tokyo"
     
    144160#: uengine.strain
    145161msgid "Train"
     162msgstr ""
     163
     164#: uengine.stunnel
     165msgid "Tunnel"
    146166msgstr ""
    147167
  • trunk/UControls.pas

    r95 r96  
    8080procedure TControl.MouseUp(Position: TPoint);
    8181begin
    82   if Bounds.Contains(Position) then
     82  if Enabled and Bounds.Contains(Position) then
    8383  if Assigned(FOnClick) then FOnClick(Self);
    8484end;
  • trunk/UEngine.pas

    r95 r96  
    148148  end;
    149149
    150   TGameState = (gsNotStarted, gsRunning, gsPaused, gsGameOver, gsMenu, gsNewWeek);
     150  TGameState = (gsNotStarted, gsRunning, gsPaused, gsGameOver, gsMenu, gsNewWeek,
     151    gsNewImprovement);
     152
     153  TMetroImprovement = (miNone, miTunnel, miTerminal, miLine, miCarriage);
     154  TMetroImprovementSet = set of TMetroImprovement;
    151155
    152156  { TEngine }
     
    188192    procedure DrawGameOver(Canvas: TCanvas; CanvasSize: TPoint);
    189193    procedure DrawNewWeek(Canvas: TCanvas; CanvasSize: TPoint);
     194    procedure DrawNewImprovement(Canvas: TCanvas; CanvasSize: TPoint);
    190195    procedure DrawStationPassengerOverload(Canvas: TCanvas);
    191196    procedure DrawLines(Canvas: TCanvas);
     
    211216    procedure ButtonFastForward(Sender: TObject);
    212217    procedure ButtonNewTrain(Sender: TObject);
     218    procedure ButtonNewImprovement1(Sender: TObject);
     219    procedure ButtonNewImprovement2(Sender: TObject);
    213220    procedure ButtonBackClick(Sender: TObject);
    214221    procedure DarkModeChanged(Sender: TObject);
     
    217224    procedure UpdateInterface;
    218225    procedure InitCities;
     226    function GetImprovementText(Improvement: TMetroImprovement): string;
     227    function GetImprovementBitmap(Improvement: TMetroImprovement): TBitmap;
     228    procedure EvaluateImprovement(Improvement: TMetroImprovement);
    219229  public
    220230    Week: Integer;
     
    243253    ImageFastForward: TImage;
    244254    ImageCarriage: TImage;
     255    ImageTerminal: TImage;
     256    ImageTunnel: TImage;
     257    ImageLine: TImage;
    245258    ImageNewTrain: TImage;
     259    ImageNewImprovement1: TImage;
     260    ImageNewImprovement2: TImage;
     261    AvailableImprovements: TMetroImprovementSet;
     262    Improvement1: TMetroImprovement;
     263    Improvement2: TMetroImprovement;
    246264    HighestServedPassengerCount: Integer;
    247265    HighestServedDaysCount: Integer;
     
    324342  SStationWithoutMapStation = 'Station have to have MapStation';
    325343  SNewTrain = 'You get a new train for your metro';
     344  SNewImprovement = 'Select a new improvement for your metro';
    326345  SWeek = 'week';
    327346  STrain = 'Train';
     
    339358  SContinue = 'Continue';
    340359  SRestart = 'Try again';
     360  STerminal = 'Terminal';
     361  SLine = 'Line';
     362  SCarriage = 'Carriage';
     363  STunnel = 'Tunnel';
    341364
    342365  // Cities
     
    16861709
    16871710procedure TEngine.ButtonNewTrain(Sender: TObject);
     1711var
     1712  Improvements: TList<TMetroImprovement>;
     1713  Improvement: TMetroImprovement;
     1714  Index: Integer;
    16881715begin
    16891716  Trains.AddNew;
    1690   if Random < 0.2 then Carriages.AddNew;
     1717  State := gsNewImprovement;
     1718  if Lines.Count <= (High(LineColors) - Low(LineColors)) then
     1719    AvailableImprovements := AvailableImprovements + [miLine]
     1720    else AvailableImprovements := AvailableImprovements - [miLine];
     1721
     1722  Improvements := TList<TMetroImprovement>.Create;
     1723  try
     1724    for Improvement := Low(TMetroImprovement) to High(TMetroImprovement) do
     1725    if Improvement in AvailableImprovements then begin
     1726      Improvements.Add(Improvement);
     1727    end;
     1728
     1729    Index := Random(Integer(Improvements.Count));
     1730    Improvement1 := Improvements[Index];
     1731    Improvements.Delete(Index);
     1732
     1733    if Improvements.Count > 0 then begin
     1734      Index := Random(Integer(Improvements.Count));
     1735      Improvement2 := Improvements[Index];
     1736    end else Improvement2 := miNone;
     1737
     1738    if Improvement1 <> miNone then
     1739      ImageNewImprovement1.Bitmap.Assign(GetImprovementBitmap(Improvement1));
     1740    ImageNewImprovement1.Enabled := Improvement1 <> miNone;
     1741
     1742    if Improvement2 <> miNone then
     1743      ImageNewImprovement2.Bitmap.Assign(GetImprovementBitmap(Improvement2));
     1744    ImageNewImprovement2.Enabled := Improvement2 <> miNone;
     1745  finally
     1746    Improvements.Free;
     1747  end;
     1748  Redraw;
     1749end;
     1750
     1751procedure TEngine.ButtonNewImprovement1(Sender: TObject);
     1752begin
     1753  EvaluateImprovement(Improvement1);
     1754  State := gsRunning;
     1755  Redraw;
     1756end;
     1757
     1758procedure TEngine.ButtonNewImprovement2(Sender: TObject);
     1759begin
     1760  EvaluateImprovement(Improvement2);
    16911761  State := gsRunning;
    16921762  Redraw;
     
    17501820    AddNew(SParis);
    17511821    AddNew(STokyo);
     1822  end;
     1823end;
     1824
     1825function TEngine.GetImprovementText(Improvement: TMetroImprovement): string;
     1826begin
     1827  case Improvement of
     1828    miCarriage: Result := SCarriage;
     1829    miTerminal: Result := STerminal;
     1830    miTunnel: Result := STunnel;
     1831    miLine: Result := SLine;
     1832  end;
     1833end;
     1834
     1835function TEngine.GetImprovementBitmap(Improvement: TMetroImprovement): TBitmap;
     1836begin
     1837  case Improvement of
     1838    miCarriage: Result := ImageCarriage.Bitmap;
     1839    miTerminal: Result := ImageTerminal.Bitmap;
     1840    miTunnel: Result := ImageTunnel.Bitmap;
     1841    miLine: Result := ImageLine.Bitmap;
     1842  end;
     1843end;
     1844
     1845procedure TEngine.EvaluateImprovement(Improvement: TMetroImprovement);
     1846begin
     1847  case Improvement of
     1848    miLine: Lines.AddNew;
     1849    miCarriage: Carriages.AddNew;
     1850    //miTunnel: Tunnels.AddNew;
     1851    //miTerminal: Terminals.AddNew;
    17521852  end;
    17531853end;
     
    20872187    TextSize := TextExtent(Text);
    20882188    TextOut((CanvasSize.X - TextSize.Width) div 2, Y, Text);
     2189  end;
     2190end;
     2191
     2192procedure TEngine.DrawNewImprovement(Canvas: TCanvas; CanvasSize: TPoint);
     2193var
     2194  Text: string;
     2195  TextSize: TSize;
     2196  Y: Integer;
     2197  X: Integer;
     2198const
     2199  ImageZoom = 4;
     2200begin
     2201  with Canvas do begin
     2202    Pen.Color := Self.Colors.Text;
     2203    Pen.Style := psSolid;
     2204    Pen.Width := ScaleX(2, 96);
     2205    Brush.Color := Self.Colors.Background2;
     2206    Brush.Style := bsSolid;
     2207    Rectangle(Bounds(CanvasSize.X div 4, CanvasSize.Y div 4, CanvasSize.X div 2, CanvasSize.Y div 2));
     2208    Pen.Style := psClear;
     2209    X := CanvasSize.X div 4 + ScaleX(10, 96);
     2210    Y := CanvasSize.Y div 4 + ScaleX(10, 96);
     2211
     2212    Text := IntToStr(Week) + '. ' + SWeek;
     2213    Font.Size := 30;
     2214    Font.Color := Self.Colors.Text;
     2215    TextSize := TextExtent(Text);
     2216    TextOut(X, Y, Text);
     2217    Y := Y + Round(1.1 * TextSize.Height);
     2218
     2219    Text := SNewImprovement;
     2220    Font.Size := 14;
     2221    Font.Color := Self.Colors.Text;
     2222    TextSize := TextExtent(Text);
     2223    TextOut(X, Y, Text);
     2224    Y := Y + Round(1.1 * TextSize.Height);
     2225
     2226    if Improvement1 <> miNone then begin
     2227      ImageNewImprovement1.Canvas := Canvas;
     2228      ImageNewImprovement1.Bounds := Bounds(CanvasSize.X div 2 - CanvasSize.X div 8 -
     2229        ImageNewImprovement1.Bitmap.Width * ImageZoom div 2,
     2230        (CanvasSize.Y - ImageNewImprovement1.Bitmap.Height * ImageZoom) div 2,
     2231        ImageNewImprovement1.Bitmap.Width * ImageZoom,
     2232        ImageNewImprovement1.Bitmap.Height * ImageZoom);
     2233      ImageNewImprovement1.Paint;
     2234    end;
     2235
     2236    if Improvement2 <> miNone then begin
     2237      ImageNewImprovement2.Canvas := Canvas;
     2238      ImageNewImprovement2.Bounds := Bounds(CanvasSize.X div 2 + CanvasSize.X div 8 -
     2239        ImageNewImprovement2.Bitmap.Width * ImageZoom div 2,
     2240        (CanvasSize.Y - ImageNewImprovement2.Bitmap.Height * ImageZoom) div 2,
     2241        ImageNewImprovement2.Bitmap.Width * ImageZoom,
     2242        ImageNewImprovement2.Bitmap.Height * ImageZoom);
     2243     ImageNewImprovement2.Paint;
     2244    end;
     2245
     2246    Y := (CanvasSize.Y - ImageLocomotive.Bitmap.Height * ImageZoom) div 2 +
     2247      Round(ImageLocomotive.Bitmap.Height * ImageZoom * 1.1);
     2248
     2249    if Improvement1 <> miNone then begin
     2250      Text := GetImprovementText(Improvement1);
     2251      Font.Size := 20;
     2252      Font.Color := Self.Colors.Text;
     2253      TextSize := TextExtent(Text);
     2254      TextOut(CanvasSize.X div 2 - CanvasSize.X div 8 - TextSize.Width div 2, Y, Text);
     2255    end;
     2256
     2257    if Improvement2 <> miNone then begin
     2258      Text := GetImprovementText(Improvement2);
     2259      Font.Size := 20;
     2260      Font.Color := Self.Colors.Text;
     2261      TextSize := TextExtent(Text);
     2262      TextOut(CanvasSize.X div 2 + CanvasSize.X div 8 - TextSize.Width div 2, Y, Text);
     2263    end;
    20892264  end;
    20902265end;
     
    25012676    if State = gsNewWeek then begin
    25022677      ImageNewTrain.MouseUp(Position);
     2678    end else
     2679    if State = gsNewImprovement then begin
     2680      ImageNewImprovement1.MouseUp(Position);
     2681      ImageNewImprovement2.MouseUp(Position);
    25032682    end
    25042683    else
     
    27132892procedure TEngine.Clear;
    27142893begin
    2715   Week := 0;
     2894  Week := 1;
    27162895  Trains.Clear;
    27172896  Passengers.Clear;
     
    27282907begin
    27292908  Clear;
     2909  AvailableImprovements := [miCarriage, miLine];
    27302910  ShapeCount := 3;
    27312911  ServedPassengerCount := 0;
     
    28122992  Trains := TMetroTrains.Create;
    28132993  Carriages := TMetroCarriages.Create;
     2994  ImageTunnel := TImage.Create;
     2995  ImageLine := TImage.Create;
     2996  ImageTerminal := TImage.Create;
    28142997  ImagePassenger := TImage.Create;
    28152998  ImageLocomotive := TImage.Create;
     
    28233006  ImageNewTrain := TImage.Create;
    28243007  ImageNewTrain.OnClick := ButtonNewTrain;
     3008  ImageNewImprovement1 := TImage.Create;
     3009  ImageNewImprovement1.OnClick := ButtonNewImprovement1;
     3010  ImageNewImprovement2 := TImage.Create;
     3011  ImageNewImprovement2.OnClick := ButtonNewImprovement2;
    28253012  //if FileExists(ImagePassengerName) then
    28263013  //  ImagePassenger.Picture.LoadFromFile(ImagePassengerName);
     
    28393026  FreeAndNil(Trains);
    28403027  FreeAndNil(Carriages);
     3028  FreeAndNil(ImageTunnel);
     3029  FreeAndNil(ImageTerminal);
     3030  FreeAndNil(ImageLine);
     3031  FreeAndNil(ImageNewImprovement1);
     3032  FreeAndNil(ImageNewImprovement2);
    28413033  FreeAndNil(ImageNewTrain);
    28423034  FreeAndNil(ImagePlay);
     
    28903082    DrawNewWeek(Canvas, CanvasSize);
    28913083  end else
     3084  if State = gsNewImprovement then begin
     3085    DrawNewImprovement(Canvas, CanvasSize);
     3086  end else
    28923087  if State in [gsRunning, gsPaused] then begin
    28933088    DrawGameControls(Canvas, CanvasSize);
Note: See TracChangeset for help on using the changeset viewer.