Changeset 96
- Timestamp:
- Sep 28, 2022, 1:54:11 AM (2 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/UFormImages.lfm
r93 r96 670 670 } 671 671 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 672 849 end -
trunk/Forms/UFormImages.pas
r93 r96 11 11 12 12 TFormImages = class(TForm) 13 ImageLine: TImage; 13 14 ImageCarriage: TImage; 14 15 ImageFastForward: TImage; 16 ImageTerminal: TImage; 15 17 ImagePause: TImage; 16 18 ImagePlay: TImage; … … 20 22 ImageTunnel: TImage; 21 23 ImageScreenshot: TImage; 22 private23 { private declarations }24 public25 { public declarations }26 24 end; 27 25 -
trunk/Forms/UFormMain.pas
r95 r96 244 244 CopyImage(Engine.ImageLocomotive.Bitmap, FormImages.ImageLocomotive.Picture.Bitmap); 245 245 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); 248 252 CopyImage(Engine.ImageCarriage.Bitmap, FormImages.ImageCarriage.Picture.Bitmap); 249 253 CopyImage(Engine.ImageCarriage.BitmapDisabled, FormImages.ImageCarriage.Picture.Bitmap, True); … … 261 265 BitmapInvert(Engine.ImageLocomotive.Bitmap); 262 266 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); 265 273 BitmapInvert(Engine.ImageCarriage.Bitmap); 266 274 BitmapInvert(Engine.ImageCarriage.BitmapDisabled); … … 274 282 BitmapInvert(Engine.ImageFastForward.BitmapDisabled); 275 283 end; 284 Engine.ImageNewTrain.Bitmap.Assign(Engine.ImageLocomotive.Bitmap); 285 Engine.ImageNewTrain.BitmapDisabled.Assign(Engine.ImageLocomotive.BitmapDisabled); 276 286 end; 277 287 -
trunk/Languages/BigMetro.cs.po
r95 r96 40 40 msgstr "Big Metro" 41 41 42 #: uengine.scarriage 43 msgid "Carriage" 44 msgstr "Vagón" 45 42 46 #: uengine.scontinue 43 47 msgctxt "uengine.scontinue" … … 92 96 msgstr "Jazyk" 93 97 98 #: uengine.sline 99 msgid "Line" 100 msgstr "Linka" 101 94 102 #: uengine.slondon 95 103 msgid "London" … … 99 107 msgid "New high score!" 100 108 msgstr "Nové vysoké skóre!" 109 110 #: uengine.snewimprovement 111 msgid "Select a new improvement for your metro" 112 msgstr "Vyber nové vylepšení pro tvé metro" 101 113 102 114 #: uengine.snewtrain … … 148 160 msgstr "Stanice musí mít MapStation" 149 161 162 #: uengine.sterminal 163 msgid "Terminal" 164 msgstr "Terminál" 165 150 166 #: uengine.stokyo 151 167 msgid "Tokyo" … … 155 171 msgid "Train" 156 172 msgstr "Vlak" 173 174 #: uengine.stunnel 175 msgid "Tunnel" 176 msgstr "Tunel" 157 177 158 178 #: uengine.sweek -
trunk/Languages/BigMetro.de.po
r95 r96 43 43 msgstr "Big Metro" 44 44 45 #: uengine.scarriage 46 msgid "Carriage" 47 msgstr "" 48 45 49 #: uengine.scontinue 46 50 #, fuzzy … … 102 106 msgstr "Sprache" 103 107 108 #: uengine.sline 109 msgid "Line" 110 msgstr "" 111 104 112 #: uengine.slondon 105 113 msgid "London" … … 109 117 msgid "New high score!" 110 118 msgstr "Neuer Highscore!" 119 120 #: uengine.snewimprovement 121 msgid "Select a new improvement for your metro" 122 msgstr "" 111 123 112 124 #: uengine.snewtrain … … 161 173 msgstr "" 162 174 175 #: uengine.sterminal 176 msgid "Terminal" 177 msgstr "" 178 163 179 #: uengine.stokyo 164 180 msgid "Tokyo" … … 167 183 #: uengine.strain 168 184 msgid "Train" 185 msgstr "" 186 187 #: uengine.stunnel 188 msgid "Tunnel" 169 189 msgstr "" 170 190 -
trunk/Languages/BigMetro.fr.po
r95 r96 43 43 msgstr "Big Metro" 44 44 45 #: uengine.scarriage 46 msgid "Carriage" 47 msgstr "" 48 45 49 #: uengine.scontinue 46 50 #, fuzzy … … 102 106 msgstr "Langue" 103 107 108 #: uengine.sline 109 msgid "Line" 110 msgstr "" 111 104 112 #: uengine.slondon 105 113 msgid "London" … … 109 117 msgid "New high score!" 110 118 msgstr "Nouveau highscore!" 119 120 #: uengine.snewimprovement 121 msgid "Select a new improvement for your metro" 122 msgstr "" 111 123 112 124 #: uengine.snewtrain … … 161 173 msgstr "" 162 174 175 #: uengine.sterminal 176 msgid "Terminal" 177 msgstr "" 178 163 179 #: uengine.stokyo 164 180 msgid "Tokyo" … … 167 183 #: uengine.strain 168 184 msgid "Train" 185 msgstr "" 186 187 #: uengine.stunnel 188 msgid "Tunnel" 169 189 msgstr "" 170 190 -
trunk/Languages/BigMetro.pot
r95 r96 30 30 msgstr "" 31 31 32 #: uengine.scarriage 33 msgid "Carriage" 34 msgstr "" 35 32 36 #: uengine.scontinue 33 37 msgctxt "uengine.scontinue" … … 82 86 msgstr "" 83 87 88 #: uengine.sline 89 msgid "Line" 90 msgstr "" 91 84 92 #: uengine.slondon 85 93 msgid "London" … … 88 96 #: uengine.snewhighscore 89 97 msgid "New high score!" 98 msgstr "" 99 100 #: uengine.snewimprovement 101 msgid "Select a new improvement for your metro" 90 102 msgstr "" 91 103 … … 138 150 msgstr "" 139 151 152 #: uengine.sterminal 153 msgid "Terminal" 154 msgstr "" 155 140 156 #: uengine.stokyo 141 157 msgid "Tokyo" … … 144 160 #: uengine.strain 145 161 msgid "Train" 162 msgstr "" 163 164 #: uengine.stunnel 165 msgid "Tunnel" 146 166 msgstr "" 147 167 -
trunk/UControls.pas
r95 r96 80 80 procedure TControl.MouseUp(Position: TPoint); 81 81 begin 82 if Bounds.Contains(Position) then82 if Enabled and Bounds.Contains(Position) then 83 83 if Assigned(FOnClick) then FOnClick(Self); 84 84 end; -
trunk/UEngine.pas
r95 r96 148 148 end; 149 149 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; 151 155 152 156 { TEngine } … … 188 192 procedure DrawGameOver(Canvas: TCanvas; CanvasSize: TPoint); 189 193 procedure DrawNewWeek(Canvas: TCanvas; CanvasSize: TPoint); 194 procedure DrawNewImprovement(Canvas: TCanvas; CanvasSize: TPoint); 190 195 procedure DrawStationPassengerOverload(Canvas: TCanvas); 191 196 procedure DrawLines(Canvas: TCanvas); … … 211 216 procedure ButtonFastForward(Sender: TObject); 212 217 procedure ButtonNewTrain(Sender: TObject); 218 procedure ButtonNewImprovement1(Sender: TObject); 219 procedure ButtonNewImprovement2(Sender: TObject); 213 220 procedure ButtonBackClick(Sender: TObject); 214 221 procedure DarkModeChanged(Sender: TObject); … … 217 224 procedure UpdateInterface; 218 225 procedure InitCities; 226 function GetImprovementText(Improvement: TMetroImprovement): string; 227 function GetImprovementBitmap(Improvement: TMetroImprovement): TBitmap; 228 procedure EvaluateImprovement(Improvement: TMetroImprovement); 219 229 public 220 230 Week: Integer; … … 243 253 ImageFastForward: TImage; 244 254 ImageCarriage: TImage; 255 ImageTerminal: TImage; 256 ImageTunnel: TImage; 257 ImageLine: TImage; 245 258 ImageNewTrain: TImage; 259 ImageNewImprovement1: TImage; 260 ImageNewImprovement2: TImage; 261 AvailableImprovements: TMetroImprovementSet; 262 Improvement1: TMetroImprovement; 263 Improvement2: TMetroImprovement; 246 264 HighestServedPassengerCount: Integer; 247 265 HighestServedDaysCount: Integer; … … 324 342 SStationWithoutMapStation = 'Station have to have MapStation'; 325 343 SNewTrain = 'You get a new train for your metro'; 344 SNewImprovement = 'Select a new improvement for your metro'; 326 345 SWeek = 'week'; 327 346 STrain = 'Train'; … … 339 358 SContinue = 'Continue'; 340 359 SRestart = 'Try again'; 360 STerminal = 'Terminal'; 361 SLine = 'Line'; 362 SCarriage = 'Carriage'; 363 STunnel = 'Tunnel'; 341 364 342 365 // Cities … … 1686 1709 1687 1710 procedure TEngine.ButtonNewTrain(Sender: TObject); 1711 var 1712 Improvements: TList<TMetroImprovement>; 1713 Improvement: TMetroImprovement; 1714 Index: Integer; 1688 1715 begin 1689 1716 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; 1749 end; 1750 1751 procedure TEngine.ButtonNewImprovement1(Sender: TObject); 1752 begin 1753 EvaluateImprovement(Improvement1); 1754 State := gsRunning; 1755 Redraw; 1756 end; 1757 1758 procedure TEngine.ButtonNewImprovement2(Sender: TObject); 1759 begin 1760 EvaluateImprovement(Improvement2); 1691 1761 State := gsRunning; 1692 1762 Redraw; … … 1750 1820 AddNew(SParis); 1751 1821 AddNew(STokyo); 1822 end; 1823 end; 1824 1825 function TEngine.GetImprovementText(Improvement: TMetroImprovement): string; 1826 begin 1827 case Improvement of 1828 miCarriage: Result := SCarriage; 1829 miTerminal: Result := STerminal; 1830 miTunnel: Result := STunnel; 1831 miLine: Result := SLine; 1832 end; 1833 end; 1834 1835 function TEngine.GetImprovementBitmap(Improvement: TMetroImprovement): TBitmap; 1836 begin 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; 1843 end; 1844 1845 procedure TEngine.EvaluateImprovement(Improvement: TMetroImprovement); 1846 begin 1847 case Improvement of 1848 miLine: Lines.AddNew; 1849 miCarriage: Carriages.AddNew; 1850 //miTunnel: Tunnels.AddNew; 1851 //miTerminal: Terminals.AddNew; 1752 1852 end; 1753 1853 end; … … 2087 2187 TextSize := TextExtent(Text); 2088 2188 TextOut((CanvasSize.X - TextSize.Width) div 2, Y, Text); 2189 end; 2190 end; 2191 2192 procedure TEngine.DrawNewImprovement(Canvas: TCanvas; CanvasSize: TPoint); 2193 var 2194 Text: string; 2195 TextSize: TSize; 2196 Y: Integer; 2197 X: Integer; 2198 const 2199 ImageZoom = 4; 2200 begin 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; 2089 2264 end; 2090 2265 end; … … 2501 2676 if State = gsNewWeek then begin 2502 2677 ImageNewTrain.MouseUp(Position); 2678 end else 2679 if State = gsNewImprovement then begin 2680 ImageNewImprovement1.MouseUp(Position); 2681 ImageNewImprovement2.MouseUp(Position); 2503 2682 end 2504 2683 else … … 2713 2892 procedure TEngine.Clear; 2714 2893 begin 2715 Week := 0;2894 Week := 1; 2716 2895 Trains.Clear; 2717 2896 Passengers.Clear; … … 2728 2907 begin 2729 2908 Clear; 2909 AvailableImprovements := [miCarriage, miLine]; 2730 2910 ShapeCount := 3; 2731 2911 ServedPassengerCount := 0; … … 2812 2992 Trains := TMetroTrains.Create; 2813 2993 Carriages := TMetroCarriages.Create; 2994 ImageTunnel := TImage.Create; 2995 ImageLine := TImage.Create; 2996 ImageTerminal := TImage.Create; 2814 2997 ImagePassenger := TImage.Create; 2815 2998 ImageLocomotive := TImage.Create; … … 2823 3006 ImageNewTrain := TImage.Create; 2824 3007 ImageNewTrain.OnClick := ButtonNewTrain; 3008 ImageNewImprovement1 := TImage.Create; 3009 ImageNewImprovement1.OnClick := ButtonNewImprovement1; 3010 ImageNewImprovement2 := TImage.Create; 3011 ImageNewImprovement2.OnClick := ButtonNewImprovement2; 2825 3012 //if FileExists(ImagePassengerName) then 2826 3013 // ImagePassenger.Picture.LoadFromFile(ImagePassengerName); … … 2839 3026 FreeAndNil(Trains); 2840 3027 FreeAndNil(Carriages); 3028 FreeAndNil(ImageTunnel); 3029 FreeAndNil(ImageTerminal); 3030 FreeAndNil(ImageLine); 3031 FreeAndNil(ImageNewImprovement1); 3032 FreeAndNil(ImageNewImprovement2); 2841 3033 FreeAndNil(ImageNewTrain); 2842 3034 FreeAndNil(ImagePlay); … … 2890 3082 DrawNewWeek(Canvas, CanvasSize); 2891 3083 end else 3084 if State = gsNewImprovement then begin 3085 DrawNewImprovement(Canvas, CanvasSize); 3086 end else 2892 3087 if State in [gsRunning, gsPaused] then begin 2893 3088 DrawGameControls(Canvas, CanvasSize);
Note:
See TracChangeset
for help on using the changeset viewer.