Advertisement
Guest User

FreeCiv map2html

a guest
Mar 20th, 2015
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 23.43 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # FreeCiv map to html
  4. # Created on Mac OS X
  5.  
  6. declare -i i j left
  7. declare    mapType="Classic" RiverOverlay="no" file htmlFile class
  8. declare -a lines
  9.  
  10. file="${1}"
  11. [ "${file}" = "${file%.sav}" ] && echo "The file is not a FreeCiv .sav file." && exit
  12. [ ! -e "${file}" ] && echo "File not found." && exit
  13.  
  14. # Is the map Isometric or Classic?
  15. topology_id=$( grep -A 20 '^\[map\]' "${file}" | grep '^topology_id=' | tr "\r" "\n" | cut -f 2 -d '=' )
  16. [ "${topology_id}" = '' ] && topology_id=0 # Older .sav files may not have topology_id and are Classic maps
  17.  
  18. # If topology_id = 4 5 6 7 12 13 14 or 15 then map is isometric
  19. if [ ${topology_id} -eq 4 -o ${topology_id} -eq 5 -o ${topology_id} -eq 6 -o ${topology_id} -eq 7 -o ${topology_id} -eq 12 -o ${topology_id} -eq 13 -o ${topology_id} -eq 14 -o ${topology_id} -eq 15 ] ; then
  20.     mapType="Isometric"
  21. fi
  22.  
  23. # Does the .sav file include river overlay (n###=) section?
  24. [ $(grep -q '^n[0-9][0-9][0-9]="' "${file}" ; echo $?) ] && RiverOverlay="yes"
  25.  
  26. htmlFile="${file}.html"
  27.  
  28. echo '<!DOCTYPE html><head></head><body bgcolor="black"><style media="screen" type="text/css">html, body {height: 100%;white-space: nowrap}' > "${htmlFile}"
  29.  
  30. if [ "${mapType}" = "Classic" ] ; then
  31.         echo '.tSBlank {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAMAAwAAAQNMMhJq7046827/yAWAQA7)}.tSRudl {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAMAAwAAAQaMEgJwLyzYqx3th4FflXJlWYYdCHruRt8YhEAOw==)}.tSRudr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAMAAwAAAQZMEgJwLyzYqx3th4FhlXZfeYohit7eu8WRwA7)}.tSRdl {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIRjI+py+0JogRwRndbZnt19RUAOw==)}.tSRdr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAISjI+py+0OogRpykpbhJlt3RkFADs=)}.tSRudlr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIXjA1we8nsXlMS0Zmy3jzOaoGBJ5GPWQAAOw==)}.tSRul {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIUjA1we8nsXlMS0ZkyzLr6D4ZiUAAAOw==)}.tSRur {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIUjA1we8nsXlMS0ZpynPrWD4aiVAAAOw==)}.tSRdlr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAISjI+py+0Jopy0Sghc1Llt3x0FADs=)}.tSRulr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIUjA1we8nsXlMS0Zmy3jzWD4ZiVQAAOw==)}.tSRlr {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIOjI+py+0Jopy0yoezdgUAOw==)}.tSRud {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAAYA/////yH5BAEAAAEALAAAAAAMAAwAAAIUjA1we8nsXlMS0RrxlZnv14Ef9BUAOw==)}.tSArctic {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAKIAANbW1t7e3u7u7fr6+vb29uXl5f7+/gAAACH5BAAAAAAALAAAAAAMAAwAAAM2aGqz7M0URkg0pAg5BwGSIRTTJIHmtWzKuHKmMlUkKS/qzU7jTDgYUqBSkRAEnoDCYyERAqYEADs=)}.tSDesert {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAANCvXdy8dN29dNa1ZuHDedWzY+HDe9u7cdOxYd6/dNu6cODBd8+tXuDBed/Ad9/AdiH5BAAAAAAALAAAAAAMAAwAAARf0KDAFGrjoZReMg8DYAUiVIgxIIMqCIRmGIvKcNrnVBijEQTGQIBYTA4phQCJeAwSxYdzUWAUAgXHQgA4LBQMygGDJSA2CUViMEztdtmGIIBxFAeKRaawVRQEBgQLDhEAOw==)}.tSForest {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAFCNLIufRXBpJmmYNpeqRit2HImpP4eSQ5uySn6gOTx5IRtoEj+JJXOjPJGvRQ5QCiH5BAAAAAAALAAAAAAMAAwAAARXUIHhwAMoGybXQEIQIA5TTEXhHGzQmIPpNYM4AAygFM8QZzjGQbEAJHSOSo4VQlF8jADrEFMoHI0dwlCxLnqIHYFgSOwWBW5CQDKUBaEEV0DIjKeBMSECADs=)}.tSGrassland {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAAuRBAqLAwt9AgyaBQd0AgtzAgqGAwmLBAl6AgdxAgl3Agh+AgqDAgl8AgZ2Agl+AyH5BAAAAAAALAAAAAAMAAwAAARh0KCXmkorgQVmEo/TNIAxMIaznMDDHAmTEAZpPADDeICi1I2DIXBwDRwAQQvhYAAaDBwgEUAcGghETgEIFATIwXH5GBBWw16hkA2czIADgTAQGD6+ZhcxKDwURA8INAkaEQA7)}.tSHill {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAACl0EUSJI2V2MiJlDDWDGG+QQk+MLFuGNEqRJlZ/JQ6LBhRdBECCIl+YN1aRLzl5HCH5BAAAAAAALAAAAAAMAAwAAARXsDkGAGsFAYeMecvTSF1gMMwAIAhHPMzzAE9gs9SgMoZtBo/BYnHoEQg/0DDxIAAInsNBOEhQLCbHdAFICGA3A0AnEwgOPOBQpvCeT0OdYg4QFAQp1TwCADs=)}.tSJungle {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAG52NmFeMGY9ExU9FRhEF3eFPGNsNUpKIolWC55yHh46E0pKJkq+SjaiJjZ2EhM2EiH5BAAAAAAALAAAAAAMAAwAAARTsK3nWrXNTsdY7g/hPEvDDA/zZOGTOigzjuRKkE3tkuPmTpmDirejOAqCIqmjcigOCMFBIRAkAoGEQpFgKAIIpOA5LSQeYcTBgTAcDADAA2tQPCIAOw==)}.tSLake {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAADhJoFdsw1FlvURYsE1iuUpetUVUq0FUq0ZZsT9Pp01huDxMpENWrUhctEFTqz1NpSH5BAAAAAAALAAAAAAMAAwAAARiMJ3nCmsIsNM2MANTIMvSNElSrIcjXIWzPA2RIErHPAOQOATEqTBYGBQJBkKJAjwQB0GyECAQBLIHgPB4MAIBAcbhJD0M4IDikCAUBADAW+1gOAbgeBqZANQEIz8iEgoCOREAOw==)}.tSMountain {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAABaPDU94Jm5wV7OujQ55BnV0bnOaZrW0naukd4uPaqGbbXJ7No2ocoWHTmZsPpmcjyH5BAAAAAAALAAAAAAMAAwAAARJEBAiATOVanBeSRMlBcNxFIUgUcZRnqkwMQiilLHjLI1Sm7kFz2fypHTCBgKHEggcAV4CkXAeodFG47l7BgCBLBc6AUgcW2wlAgA7)}.tSOceanDeep {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAAAIewAcgQAkiAAYfgAyigAegQAOfQAagQAIeAAPgQAIfQAOewAfgQAUfgAIdwAIdiH5BAAAAAAALAAAAAAMAAwAAARaMBihQGPrENQGBQliNE/SCNJ3ZVv3hWN5EoowPMEyEEJBNIVFwCQ47BYIhqBxKBATDKZBibAsCAQHQLBIeAKCaHNRcDQcHl4j81A4sJwseCFIPBiD8oiweyAiADs=)}.tSOcean {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAB1BqBo9nBg8pDdZuSFFrCFEpCVJrRc7mCpOsylLqhw/nyVIpiFCnxA0nBU5mhc7myH5BAAAAAAALAAAAAAMAAwAAAReEJggnloDSRZOWABhCE3jCEoRJIsAAA6jOIoSDClwOM5TIKIAwlBQABichsAB6DwejMeCEFsoWCdAjVAbGBI/USPBJUh4BcHhdTOFCA/mhyMIPNahBcNqed2bUQMJEQA7)}.tSPlains {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAGySJoKjNXOXKo2rO3u1M3mbLnWYLGiQJH+gMnyTJYalN4mnOoioOHyeMHCVKYimOiH5BAAAAAAALAAAAAAMAAwAAARg8KAglDHFoBsKEkYDAIbjBAOCMKWjFOx1zMkBjsqHAA5w+BeDxQAQGAtIhuLQQCAFyEGhsmASHYVGwcUIOBgCnxewEyg7jMegMTAMBg9B46FUBBZvxkCRThT4CgIPBAURADs=)}.tSSwamp {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAADZWMjRVeENSKS9GGyZNkDdSWDNgXSNFQCVKZTFOQ0JZTDthGC9ZWzhQHDlWGjNXGiH5BAAAAAAALAAAAAAMAAwAAARYkKDAjFVCLGeqCV0QKJhYGIBSFMmaZM7jCC2SJEG2Oc1AJwjCokHsNXiCB2DQY8YWgARgOTgMBgAG4wYQ+BCHTDTB6wUJgWnjcRQczgTATuY4BNCohX4fAQA7)}.tSTundra {width: 12px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMALMAAJOUkY2QW7W1tWaqQjZwFn+AfF2GNoqOP56enqKionWKSY6iXUpKSnZ2dnaOSl52NiH5BAAAAAAALAAAAAAMAAwAAARc8IXWVHDrLUUGYiACFECzIA1DMMhCogrDEUqRMEXzPAKAKI0ESbE4AAgPR0GAapQMC4fjRqkWCoyEI+kIAA9gAOOh0GCCCNQuuc4mghSHQj52PkAJAsHg4GPeCxEAOw==)}</style><body>' >> "${htmlFile}"
  32.     else
  33.         echo '.tIBlank {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIAAAP///wAAACH5BAEAAAAALAAAAAASAAwAAAINhI+py+0Po5y02otVAQA7)}.tIRuldr {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIXjI+pywfQ2IvrQZomRnZz7QWgN4YmUgAAOw==)}.tIRurdl {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIWjI+py40AXILywFgDzZfv+oFYRpZJAQA7)}.tIRuldb {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIZjI+pywfQ2IvrQZomdhb38FUXomWjuaVYAQA7)}.tIRurdb {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIajI+py40AXILywFgDzRe7a4DM9njlaGYqUwAAOw==)}.tIRubdl {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIajI+pywfA3pKJTvpgM1lv7n3Z54SiSaZqUgAAOw==)}.tIRubdr {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIajI+pywfA3pKJTvpgM1lvZH1OKAakeJaqUgAAOw==)}.tIRubdb {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAIABAAYA/////yH5BAEAAAEALAAAAAASAAwAAAIcjI+pywfA3pKJTvpgM1lvnn1BOFqKCV6RJ7ZfAQA7)}.tIRubdn {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAASAAwAAAQZMMhJq714AoD39RX4gRuXSaV5rmzrvnBcRQA7)}.tIRuldl {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAASAAwAAAQaMMhJq714ApDx7tfGgdVHaiMpnoF5umwsBxEAOw==)}.tIRundb {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAASAAwAAAQZMMhJq704682710AIcKJUYqGVquO1frAVAQA7)}.tIRurdr {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMBAAYA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAASAAwAAAQaMMhJq704UwB05d7EdWEAltKJmiralu8qTxEAOw==)}.tIGrassland {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAJjKlT+cOeHw4K/WrXi6dcrkyPT69FmnVCmUJBuLFQmCAwqEAwqCAwqDAwqGAwAAACH5BAEAAA8ALAAAAAASAAwAAARF8Mn5mGU0U6uU1dvVLIuHaVzHOIx6Spe1OM011xjHLLvDejNarFXzkRoNhfFjabAcpuUlVGI4Z6RPhvM0vUAyL2g71UQAADs=)}.tIOcean {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAPX3+36Syxw/oeLm80tntiRFpjNSq4ud0Bo9oGZ+wb/J5aCv2R1Aox9CpB5BowAAACH5BAEAAA8ALAAAAAASAAwAAARR8Mn5kEU0UyuYwdpkOYLDII0VXgjTmcK3oUxzIg7SNYKKGA2eI5gTdAqdz29I4pVIJocUYwmeGFCmgwCS/GzBlrSgylSlJgY3JDKMy2zvJRQBADs=)}.tISwamp {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAJytmU1gLTJOMDlTGCxMVE5rYYaZd8zWy/b39+bp5SVKiy1PbbnDrXmPZTlhHQAAACH5BAEAAA8ALAAAAAASAAwAAARJ8Mn5xBiCampFwBuHWZcDbtYSCIvldBxrYoRAKMScXe1QX6yczbEafICXpDJZudwIUGDwJPEEVoJsKYsyKmGh6ofQyoQnJLMmAgA7)}.tITundra {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAHCGT4WNc8vOw3B+WXqEZujr4/n5+H+Fc7zFr6SsmJ6qjo6XfLO5pe7w6t/h2AAAACH5BAEAAA8ALAAAAAASAAwAAARF8Mn5hh00U0sOwNrEXZ8VcgQAEMORgtJIpCunmtbhfvM+dIfLLGD5uAgBVgdXPCSVnZlJ9Bsag9PNJfDMnqqXUOYCo0QAADs=)}.tIPlains {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAJukNtXYrY6ZLaGpR8HHibO6cfr79pWeMers1eTmyfT16YeWKPHy5Lm/dK+1XQAAACH5BAEAAA8ALAAAAAASAAwAAARF8Mn5hBU0U+HWsdomfMcBAKB2jSdQDthkLQLduiR40SbujqxL6fRhkYaYC25UsgEcMYmwRgtGZZbDwnOAhmQD5PW7CkUAADs=)}.tIMountain {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAFaQQHFyW62vjPf59l5zMaPEmICJVMfUvJOTjZ6aYdnm1aqheImyd7GxnsDBqAAAACH5BAEAAA8ALAAAAAASAAwAAARU8Mn5QLuA6mlvQ9kmAQwgOF8AigBgNILQBHQQjqWxLPBcE60KgEAwJHq+ABHYGhYTixOipiRmWkRjjKoMcggBo4Fq1TgN4yXNS3EVadbbpoU2sCcRADs=)}.tIJungle {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMAAP///zaiJhM2EhU8EhpKFR46EzZ2EjeYIzekKEdaJEpKJkq+Sm52NnZfL4lWC55yHiH5BAEAAAAALAAAAAASAAwAAARZEEi5TFA1zD0DWRloLBwQVMIpjtUWGIgwWERMBIEgkNWNVxbUYmYAGHQpmIBg0S1wjQTgMDL4gkTdY+I4IheKATSx5VB3J2S5BHAwCoq4YM2WJOKOOttdjwAAOw==)}.tIHill {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAE2MKzB6F2ObS/f69q3KoZe8iT6EItHiy+Pr3cLXt83dwRZcBYOtcyNpCzt5HgAAACH5BAEAAA8ALAAAAAASAAwAAARQ8Mn5nHU0y+tCMJdWOUAHAMa5WJQFBA0gnMBiY5sDNukZ2A0exhJwGVIG26LhARE/hs/JAfQUR1apilnE5bSGoIeVIR4bS7Ko8gqq16P3JAIAOw==)}.tIDesert {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPANy7cNu5bvbt2f38+fHkxuzasPr27OLGiObOmuDBe9m3bOjSn929dt+9ctm4cgAAACH5BAEAAA8ALAAAAAASAAwAAARK8Mn5lFU0UwuA1ZsCNOSFaVagOoDqnVKqBoqjuC8mi53XBQ1GTtFoNRKMhirISOkuqmTA43DQYBVRdRqwXlFQ6wU0sRTH5DI6EwEAOw==)}.tIArctic {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMAKIHAN7e3vr6+vb29u7u7eXl5f////7+/v///yH5BAEAAAcALAAAAAASAAwAAANEeLpXJIVJVowNca4qrCEEplWDJQAWYWSKk3pe4BW096BGKXSwnf+wkipSMciEvSHF0JH9hqyNYHD8rDQbo5GGpUyjiwQAOw==)}.tIForest {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAC5kFEV1Hm+PLvX48rjMp2+VVMTTnI6qb6a8g9nhzFx+LomiUYCeNdDdw+Lr2wAAACH5BAEAAA8ALAAAAAASAAwAAARY8MkXAg2l2im3DgogHNr1VYwQAAC4FBSCgEUYqCtYPbUtKhoWDoA4HAgrgEIgvDFZDEaIpVwBFdiWgMF6UFmg1k0R7U6+wNWWypFQU2pz+wzgsuftL2AeAQA7)}.tIOceanDeep {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAFZmqhEpiPX1+jJEl3mFvAAVfouWxMjM45qkzbS82tre7QAXgAAagAAbgAAbgQAAACH5BAEAAA8ALAAAAAASAAwAAARH8Mn5ii00U+uW1ZvVNMXiYRrnrM3CkKh0vQ7D1KzzWcta+o1bS3dZBBs115FUw3CQNhOj54CFTK6pjpjimYIfkEwVFo/LlAgAOw==)}.tILake {width: 18px;height: 12px;background-repeat: no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEgAMALMPAJW62KrI4Pf6/Mnb63amzd3p8jl+t0uIvFqSwipyritzsC11sTB3sy11si52swAAACH5BAEAAA8ALAAAAAASAAwAAARK8Mn5lFU0U9ua1du1OIqHaVaiLJ1jnpLIOCrJMlelOMw9rytGY3HZ/XrGnWPp0TF6iZGyR4I5l4zEsIGzxhSzJesD+mLJ5S+aEgEAOw==)}</style><body>' >> "${htmlFile}"
  34. fi
  35.  
  36. if [ "${mapType}" = "Classic" ] ; then
  37.     lines=( $( grep '^t[0-9][0-9][0-9]=\"' "${file}" | tr -s "\r" "\n" | sed -e 's/^t.*="//' -e 's/"$//' -e 's/ /~/g' ) )
  38.     for ((i=0;i<${#lines[*]};i++)) ; do
  39.         for ((j=0;j<${#lines[${i}]};j++)) ; do
  40.             class=''
  41.             case "${lines[${i}]:${j}:1}" in
  42.                 a|A ) class="tSArctic" ;;
  43.                 d|D ) class="tSDesert" ;;
  44.                 f|F ) class="tSForest" ;;
  45.                 g|G ) class="tSGrassland" ;;
  46.                 h|H ) class="tSHill" ;;
  47.                 j|J ) class="tSJungle" ;;
  48.                 m|M ) class="tSMountain" ;;
  49.                 p|P ) class="tSPlains" ;;
  50.                 s|S ) class="tSSwamp" ;;
  51.                 t|T ) class="tSTundra" ;;
  52.                 ':' ) class="tSOceanDeep" ;;
  53.                 '~' ) class="tSOcean" ;;
  54.                 '+' ) class="tSLake" ;;
  55.                 * ) echo "Unknown character: ${line:${i}:1}"
  56.                     class="tSBlank" ;;
  57.             esac
  58.             [ "${class}" != "" ] && echo -n "<div img class=\"${class}\" style=\"position: absolute;top: $((12*${i}+10))px; left: $((12*${j}+10))px;\"></div>" >> "${htmlFile}"
  59.         done
  60.         echo  >> "${htmlFile}"
  61.     done
  62.     # River Overlay for Classic map. Old stlye river on terrain layer via capital letters not implemented (only the terrain will be generated.)
  63.     if [ "${RiverOverlay}" = "yes" ] ; then
  64.         lines=( $( grep '^n[0-9][0-9][0-9]=\"' "${file}" | tr -s "\r" "\n" | sed -e 's/^n.*="//' -e 's/"$//' ) )
  65.         for ((i=0;i<${#lines[*]};i++)) ; do
  66.             for ((j=0;j<${#lines[${i}]};j++)) ; do
  67.                 class=''
  68.                 TileAbove="${lines[$((${i}-1))]:${j}:1}"
  69.                 TileBelow="${lines[$((${i}+1))]:${j}:1}"
  70.                 TileLeft="${lines[${i}]:$((${j}-1)):1}"
  71.                 TileRight="${lines[${i}]:$((${j}+1)):1}"
  72.                 case "${lines[${i}]:${j}:1}" in
  73.                       2 )   if    [ "${TileAbove}" = "2" -a "${TileBelow}" = "2" -a "${TileLeft}" = "0" -a "${TileRight}" = "0" ] ; then
  74.                             class="tSRud"
  75.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "0" -a "${TileLeft}" = "0" -a "${TileRight}" = "0" ] ; then
  76.                             class="tSRud"
  77.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "2" -a "${TileLeft}" = "0" -a "${TileRight}" = "0" ] ; then
  78.                             class="tSRud"
  79.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "0" -a "${TileLeft}" = "2" -a "${TileRight}" = "2" ] ; then
  80.                             class="tSRlr"
  81.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "0" -a "${TileLeft}" = "0" -a "${TileRight}" = "2" ] ; then
  82.                             class="tSRlr"
  83.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "0" -a "${TileLeft}" = "2" -a "${TileRight}" = "0" ] ; then
  84.                             class="tSRlr"
  85.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "0" -a "${TileLeft}" = "0" -a "${TileRight}" = "0" ] ; then
  86.                             class="tSRlr"
  87.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "0" -a "${TileLeft}" = "2" -a "${TileRight}" = "2" ] ; then
  88.                             class="tSRulr"
  89.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "2" -a "${TileLeft}" = "2" -a "${TileRight}" = "2" ] ; then
  90.                             class="tSRdlr"
  91.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "2" -a "${TileLeft}" = "2" -a "${TileRight}" = "0" ] ; then
  92.                             class="tSRdl"
  93.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "0" -a "${TileLeft}" = "2" -a "${TileRight}" = "0" ] ; then
  94.                             class="tSRul"
  95.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "0" -a "${TileLeft}" = "0" -a "${TileRight}" = "2" ] ; then
  96.                             class="tSRur"
  97.                         elif  [ "${TileAbove}" = "0" -a "${TileBelow}" = "2" -a "${TileLeft}" = "0" -a "${TileRight}" = "2" ] ; then
  98.                             class="tSRdr"
  99.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "2" -a "${TileLeft}" = "0" -a "${TileRight}" = "2" ] ; then
  100.                             class="tSRudr"
  101.                         elif  [ "${TileAbove}" = "2" -a "${TileBelow}" = "2" -a "${TileLeft}" = "2" -a "${TileRight}" = "0" ] ; then
  102.                             class="tSRudl"
  103.                         else
  104.                             class="tSRudlr"
  105.                         fi
  106.                         echo -n "<div img class=\"${class}\" style=\"position: absolute;top: $((12*${i}+10))px; left: $((12*${j}+10))px;\"></div>" >> "${htmlFile}"
  107.                         ;;
  108.                     '0' )   ;;
  109.                       * )   echo "Unknown character: ${lines[${i}]:${j}:1}"
  110.                         echo -n "<div img class=\"tSBlank\" style=\"position: absolute;top: $((12*${i}+10))px; left: $((12*${j}+10))px;\"></div>" >> "${htmlFile}"
  111.                         ;;
  112.                 esac
  113.             done
  114.             echo  >> "${htmlFile}"
  115.         done
  116.     fi
  117. else
  118.     # For Isometric Maps
  119.     lines=( $( grep '^t[0-9][0-9][0-9]=\"' "${file}" | tr -s "\r" "\n" | sed -e 's/^t.*="//' -e 's/"$//' -e 's/ /~/g' ) )
  120.     for ((i=0;i<${#lines[*]};i++)) ; do
  121.         if [ $((${i}%2)) -eq 1 ] ; then
  122.             left=19
  123.         else
  124.             left=10
  125.         fi
  126.  
  127.         for ((j=0;j<${#lines[${i}]};j++)) ; do
  128.             class=''
  129.             case "${lines[${i}]:${j}:1}" in
  130.                 a|A )   class="tIArctic" ;;
  131.                 d|D )   class="tIDesert" ;;
  132.                 f|F )   class="tIForest" ;;
  133.                 g|G )   class="tIGrassland" ;;
  134.                 h|H )   class="tIHill" ;;
  135.                 j|J )   class="tIJungle" ;;
  136.                 m|M )   class="tIMountain" ;;
  137.                 p|P )   class="tIPlains" ;;
  138.                 s|S )   class="tISwamp" ;;
  139.                 t|T )   class="tITundra" ;;
  140.                 ':' )   class="tIOceanDeep" ;;
  141.                 '~' )   class="tIOcean" ;;
  142.                 '+' )   class="tILake" ;;
  143.                  * )    echo "Unknown character: ${lines[${i}]:${j}:1}" ; class="tIBlank" ;;
  144.             esac
  145.             [ "${class}" != "" ] && echo -n "<div img class=\"${class}\" style=\"position: absolute;top: $((${i}*7+10))px; left: $((${j}*18+${left}))px;\"></div>" >> "${htmlFile}"
  146.         done
  147.         echo  >> "${htmlFile}"
  148.     done
  149.     # River Overlay For Isometric Maps. Old stlye river on terrain layer via capital letters not implemented (only the terrain will be generated.)
  150.     if [ "${RiverOverlay}" = "yes" ] ; then
  151.         lines=( $( grep '^n[0-9][0-9][0-9]=\"' "${file}" | tr -s "\r" "\n" | sed -e 's/^n.*="//' -e 's/"$//' ) )
  152.         for ((i=0;i<${#lines[*]};i++)) ; do
  153.             if [ $((${i}%2)) -eq 1 ] ; then
  154.                 left=19
  155.             else
  156.                 left=10
  157.             fi
  158.             for ((j=0;j<${#lines[${i}]};j++)) ; do
  159.                 class=''
  160.                 if [ $((${i}%2)) -eq 0 ] ; then
  161.                     TileUpLeft="${lines[$((${i}-1))]:$((${j}-1)):1}"
  162.                     TileUpRight="${lines[$((${i}-1))]:${j}:1}"
  163.                     TileDownLeft="${lines[$((${i}+1))]:$((${j}-1)):1}"
  164.                     TileDownRight="${lines[$((${i}+1))]:${j}:1}"
  165.                 else
  166.                     TileUpLeft="${lines[$((${i}-1))]:${j}:1}"
  167.                     TileUpRight="${lines[$((${i}-1))]:$((${j}+1)):1}"
  168.                     TileDownLeft="${lines[$((${i}+1))]:${j}:1}"
  169.                     TileDownRight="${lines[$((${i}+1))]:$((${j}+1)):1}"
  170.                 fi
  171.                 case "${lines[${i}]:${j}:1}" in
  172.                       2 )   if   [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "2" ] ; then
  173.                             class="tIRurdb"
  174.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "2" ] ; then
  175.                             class="tIRurdr"
  176.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "0" ] ; then
  177.                             class="tIRurdl"
  178.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "0" ] ; then
  179.                             class="tIRurdl"
  180.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "0" ] ; then
  181.                             class="tIRurdl"
  182.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "2" ] ; then
  183.                             class="tIRuldb"
  184.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "0" ] ; then
  185.                             class="tIRuldl"
  186.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "2" ] ; then
  187.                             class="tIRuldr"
  188.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "2" ] ; then
  189.                             class="tIRubdb"
  190.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "0" ] ; then
  191.                             class="tIRubdl"
  192.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "2" ] ; then
  193.                             class="tIRubdr"
  194.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "2" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "0" ] ; then
  195.                             class="tIRubdn"
  196.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "2" -a "${TileDownRight}" = "2" ] ; then
  197.                             class="tIRundb"
  198.                         elif [ "${TileUpLeft}" = "0" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "2" ] ; then
  199.                             class="tIRuldr"
  200.                         elif [ "${TileUpLeft}" = "2" -a "${TileUpRight}" = "0" -a "${TileDownLeft}" = "0" -a "${TileDownRight}" = "0" ] ; then
  201.                             class="tIRuldr"
  202.                         else
  203.                             class="tIRubdb"
  204.                         fi
  205.                         echo -n "<div img class=\"${class}\" style=\"position: absolute;top: $((${i}*7+10))px; left: $((${j}*18+${left}))px;\"></div>" >> "${htmlFile}"
  206.                         ;;
  207.                     '0' )   ;;
  208.                       * )   echo "Unknown character: ${lines[${i}]:${j}:1}"
  209.                         echo -n "<div img class=\"tIBlank\" style=\"position: absolute;top: $((${i}*7+10))px; left: $((${j}*18+${left}))px;\"></div>" >> "${htmlFile}"
  210.                         ;;
  211.                 esac
  212.             done
  213.             echo  >> "${htmlFile}"
  214.         done
  215.     fi
  216. fi
  217. echo "</body></html>" >> "${htmlFile}"
  218. open "${htmlFile}"
  219. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement