Example #1
0
        public string GetDataAsHtml(string stratum, int floor, T8BTEMST.T8BTEMST Enemies, T8BTEMGP.T8BTEMGP EnemyGroups, T8BTEMEG.T8BTEMEG EncounterGroups, GameVersion version, string versionPostfix, GameLocale locale, WebsiteLanguage websiteLanguage, T8BTXTMT treasures, ItemDat.ItemDat items, Dictionary <uint, TSS.TSSEntry> inGameIdDict, bool surroundingTable = true, bool phpLinks = false)
        {
            StringBuilder sb = new StringBuilder();

            if (surroundingTable)
            {
                sb.Append("<div id=\"" + stratum + floor + "\">");
                sb.Append("<table class=\"necropolisfloor\">");
                sb.Append("<tr>");
                sb.Append("<th colspan=\"6\">");
                sb.Append("<div class=\"itemname\" style=\"text-align: center;\">");
                sb.Append(stratum + "-" + floor);
                sb.Append("</div>");
                sb.Append("</td>");
                sb.Append("</tr>");
            }
            for (int y = 0; y < VerticalTiles; y++)
            {
                sb.Append("<tr>");
                for (int x = 0; x < HorizontalTiles; x++)
                {
                    sb.Append(TileList[(int)(y * HorizontalTiles + x)].GetDataAsHtml(stratum, floor, Enemies, EnemyGroups, EncounterGroups, version, versionPostfix, locale, websiteLanguage, treasures, items, inGameIdDict, phpLinks: phpLinks));
                }
                sb.Append("</tr>");
                //sb.Append( "<tr><td colspan=\"" + HorizontalTiles + "\"><hr></td></tr>" );
            }
            if (surroundingTable)
            {
                sb.Append("</table>");
                sb.Append("</div>");
            }

            return(sb.ToString());
        }
Example #2
0
        public string GetDataAsHtml(string stratum, int floor, T8BTEMST.T8BTEMST Enemies, T8BTEMGP.T8BTEMGP EnemyGroups, T8BTEMEG.T8BTEMEG EncounterGroups, GameVersion version, string versionPostfix, GameLocale locale, WebsiteLanguage websiteLanguage, T8BTXTMT treasures, ItemDat.ItemDat items, Dictionary <uint, TSS.TSSEntry> inGameIdDict, bool phpLinks = false)
        {
            StringBuilder sb           = new StringBuilder();
            bool          printEnemies = Enemies != null && EnemyGroups != null && EncounterGroups != null;

            sb.Append("<td class=\"necropolistile" + RoomType + "\">");
            if (RoomType != 0)
            {
                sb.Append("<div class=\"necropolis-arrow-up\">");
                if (MoveUpAllowed > 0)
                {
                    sb.Append("<img src=\"etc/up.png\" width=\"16\" height=\"16\">");
                }
                sb.Append("</div>");
                sb.Append("<div class=\"necropolis-arrow-side\">");
                if (MoveLeftAllowed > 0)
                {
                    sb.Append("<img src=\"etc/left.png\" width=\"16\" height=\"16\">");
                }
                sb.Append("</div>");


                sb.Append("<div class=\"necropolis-data\">");

                if (printEnemies)
                {
                    foreach (uint groupId in EncounterGroups.EncounterGroupIdDict[EnemyGroup].EnemyGroupIDs)
                    {
                        if (groupId == 0xFFFFFFFFu)
                        {
                            continue;
                        }
                        foreach (int enemyId in EnemyGroups.EnemyGroupIdDict[groupId].EnemyIDs)
                        {
                            if (enemyId < 0)
                            {
                                continue;
                            }
                            var enemy = Enemies.EnemyIdDict[(uint)enemyId];
                            sb.Append("<a href=\"" + Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.Enemy, version, versionPostfix, locale, websiteLanguage, phpLinks, category: (int)enemy.Category, id: (int)enemy.InGameID) + "\">");
                            sb.Append("<img src=\"monster-icons/46px/monster-" + enemy.IconID.ToString("D3") + ".png\" title=\"" + inGameIdDict[enemy.NameStringDicID].StringEngOrJpnHtml(version, inGameIdDict, websiteLanguage) + "\" width=\"23\" height=\"23\">");
                            sb.Append("</a>");
                        }
                        sb.Append("<br>");
                    }
                }
                else
                {
                    sb.Append("<img src=\"item-icons/ICON60.png\" width=\"16\" height=\"16\"> " + (FramesToMove / 60) + " sec<br>");

                    switch (RoomType)
                    {
                    case 1:
                        sb.Append("Entrance<br>");
                        break;

                    case 2:
                    case 5: {
                        int    targetFloor;
                        string targetLinkId;
                        string targetStratum;
                        if (RoomType == 5)
                        {
                            targetFloor = (floor + FloorExitDiff);
                        }
                        else
                        {
                            targetFloor = (floor + 1);
                        }
                        if (targetFloor == 11)
                        {
                            targetStratum = ((char)(((int)stratum[0]) + 1)).ToString();
                            targetLinkId  = targetStratum + "1";
                        }
                        else
                        {
                            targetStratum = stratum;
                            targetLinkId  = targetStratum + targetFloor;
                        }

                        string targetHumanReadable;
                        if (targetFloor == 11)
                        {
                            targetHumanReadable = stratum + " Bottom";
                        }
                        else
                        {
                            targetHumanReadable = stratum + "-" + targetFloor;
                        }

                        string nextHumanReadable = "";
                        if (targetFloor == 11)
                        {
                            nextHumanReadable = targetStratum + "-1";
                        }

                        string linkStart = "<a href=\"" + (phpLinks ?
                                                           Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.NecropolisMap, version, versionPostfix, locale, websiteLanguage, true, extra: targetLinkId) :
                                                           ("#" + targetLinkId)) + "\">";
                        string linkEnd = "</a>";

                        string finalText;
                        if (targetFloor == 11)
                        {
                            if (stratum == "F")
                            {
                                finalText = $"Exit to {targetHumanReadable}";
                            }
                            else
                            {
                                finalText = $"Exit to {targetHumanReadable}<br>(Go to {linkStart}{nextHumanReadable}{linkEnd})";
                            }
                        }
                        else
                        {
                            finalText = $"Exit to {linkStart}{targetHumanReadable}{linkStart}";
                        }

                        sb.Append(finalText);
                        sb.Append("<br>");
                        break;
                    }

                    case 3:
                        //sb.Append( "Regular Room<br>" );
                        break;

                    case 4:
                        //sb.Append( "Treasure Room<br>" );
                        break;
                    }

                    if (RegularTreasure > 0)
                    {
                        // not a generic solution, but the unmodified game has all four slots identical for regular treasures
                        var treasureInfo = treasures.TreasureInfoList[(int)RegularTreasure];
                        sb.Append("<table>");
                        sb.Append("<tr>");
                        for (int i = 0; i < 3; ++i)
                        {
                            var item = items.itemIdDict[treasureInfo.Items[i]];
                            sb.Append("<td>");
                            sb.Append("<a href=\"" + Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.Item, version, versionPostfix, locale, websiteLanguage, phpLinks, id: (int)item.Data[(int)ItemData.ID], icon: (int)item.Data[(int)ItemData.Icon]) + "\">");
                            sb.Append("<img src=\"items/U_" + item.ItemString.TrimNull() + ".png\" height=\"32\" width=\"32\" title=\"" + inGameIdDict[item.NamePointer].StringEngOrJpnHtml(version, inGameIdDict, websiteLanguage) + "\">");
                            sb.Append("</a>");
                            sb.Append("</td>");
                        }
                        sb.Append("</tr>");
                        sb.Append("<tr>");
                        for (int i = 0; i < 3; ++i)
                        {
                            sb.Append("<td>");
                            sb.Append(treasureInfo.Chances[i] + "%");
                            sb.Append("</td>");
                        }
                        sb.Append("</tr>");
                        sb.Append("</table>");
                    }

                    if (SpecialTreasure > 0)
                    {
                        // unmodified game always has special treasures as one in the first slot with 100% chance
                        var treasureInfo = treasures.TreasureInfoList[(int)SpecialTreasure];
                        var item         = items.itemIdDict[treasureInfo.Items[0]];
                        sb.Append("<img src=\"item-icons/ICON" + item.Data[(int)ItemDat.ItemData.Icon] + ".png\" height=\"16\" width=\"16\"> ");
                        sb.Append("<a href=\"" + Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.Item, version, versionPostfix, locale, websiteLanguage, phpLinks, id: (int)item.Data[(int)ItemData.ID], icon: (int)item.Data[(int)ItemData.Icon]) + "\">");
                        sb.Append(inGameIdDict[item.NamePointer].StringEngOrJpnHtml(version, inGameIdDict, websiteLanguage) + "</a><br>");
                    }
                }

                sb.Append("</div>");


                sb.Append("<div class=\"necropolis-arrow-side\">");
                if (MoveRightAllowed > 0)
                {
                    sb.Append("<img src=\"etc/right.png\" width=\"16\" height=\"16\">");
                }
                sb.Append("</div>");
                sb.Append("<div class=\"necropolis-arrow-down\">");
                if (MoveDownAllowed > 0)
                {
                    sb.Append("<img src=\"etc/down.png\" width=\"16\" height=\"16\">");
                }
                sb.Append("</div>");
            }
            sb.Append("</td>");

            return(sb.ToString());
        }
Example #3
0
        public string GetDataAsHtml(GameVersion version, string versionPostfix, GameLocale locale, WebsiteLanguage websiteLanguage, TSS.TSSFile stringDic, Dictionary <uint, TSS.TSSEntry> inGameIdDict, T8BTEMEG.T8BTEMEG encounterGroups, T8BTEMGP.T8BTEMGP enemyGroups, T8BTEMST.T8BTEMST enemies, ShopData.ShopData shops, bool phpLinks = false)
        {
            StringBuilder sb = new StringBuilder();

            StringBuilder shopEnemySb    = new StringBuilder();
            List <uint>   alreadyPrinted = new List <uint>();

            for (int i = 0; i < ShopsOrEnemyGroups.Length; ++i)
            {
                if (ShopsOrEnemyGroups[i] == 0)
                {
                    continue;
                }
                if (Category == 1)
                {
                    // references to shops
                    var shop = shops.ShopDictionary[ShopsOrEnemyGroups[i]];
                    shopEnemySb.Append("<a href=\"" + Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.Shop, version, versionPostfix, locale, websiteLanguage, phpLinks, id: (int)shop.InGameID) + "\">");
                    shopEnemySb.Append(inGameIdDict[shop.StringDicID].StringEngOrJpnHtml(version, inGameIdDict, websiteLanguage));
                    shopEnemySb.Append("</a>");
                }
                else
                {
                    // references to encounter groups
                    foreach (uint groupId in encounterGroups.EncounterGroupIdDict[ShopsOrEnemyGroups[i]].EnemyGroupIDs)
                    {
                        if (groupId == 0xFFFFFFFFu)
                        {
                            continue;
                        }
                        foreach (uint id in enemyGroups.EnemyGroupIdDict[groupId].EnemyIDs)
                        {
                            if (id == 0xFFFFFFFFu)
                            {
                                continue;
                            }
                            if (alreadyPrinted.Contains(id))
                            {
                                continue;
                            }

                            var enemy = enemies.EnemyIdDict[id];
                            shopEnemySb.Append("<img src=\"monster-icons/44px/monster-" + enemy.IconID.ToString("D3") + ".png\" height=\"22\" width=\"22\"> ");
                            shopEnemySb.Append("<a href=\"" + Website.WebsiteGenerator.GetUrl(Website.WebsiteSection.Enemy, version, versionPostfix, locale, websiteLanguage, phpLinks, category: (int)enemy.Category, id: (int)enemy.InGameID) + "\">");
                            shopEnemySb.Append(inGameIdDict[enemy.NameStringDicID].StringEngOrJpnHtml(version, inGameIdDict, websiteLanguage) + "</a>");
                            shopEnemySb.Append("<br>");

                            alreadyPrinted.Add(id);
                        }
                    }
                }
            }

            int variantCount = 0;

            for (int i = 0; i < 4; ++i)
            {
                if (i >= 1 && ChangeEventTriggers[i] == 0)
                {
                    continue;
                }
                var name = inGameIdDict[NameStringDicIDs[i]];
                var desc = inGameIdDict[DescStringDicIDs[i]];
                if (i >= 1 &&
                    name.StringJpn == inGameIdDict[NameStringDicIDs[i - 1]].StringJpn &&
                    name.StringEng == inGameIdDict[NameStringDicIDs[i - 1]].StringEng &&
                    desc.StringJpn == inGameIdDict[DescStringDicIDs[i - 1]].StringJpn &&
                    desc.StringEng == inGameIdDict[DescStringDicIDs[i - 1]].StringEng &&
                    RefStrings[i] == RefStrings[i - 1]
                    )
                {
                    continue;
                }
                variantCount++;
            }
            for (int i = 0; i < 4; ++i)
            {
                if (i >= 1 && ChangeEventTriggers[i] == 0)
                {
                    continue;
                }
                var name = inGameIdDict[NameStringDicIDs[i]];
                var desc = inGameIdDict[DescStringDicIDs[i]];
                if (i >= 1 &&
                    name.StringJpn == inGameIdDict[NameStringDicIDs[i - 1]].StringJpn &&
                    name.StringEng == inGameIdDict[NameStringDicIDs[i - 1]].StringEng &&
                    desc.StringJpn == inGameIdDict[DescStringDicIDs[i - 1]].StringJpn &&
                    desc.StringEng == inGameIdDict[DescStringDicIDs[i - 1]].StringEng &&
                    RefStrings[i] == RefStrings[i - 1]
                    )
                {
                    continue;
                }

                if (i == 0)
                {
                    sb.Append("<tr id=\"location" + LocationID + "\">");
                }
                else
                {
                    sb.Append("<tr>");
                }
                sb.Append("<td>");
                if (RefStrings[i] != "")
                {
                    sb.Append("<img src=\"worldmap/U_" + RefStrings[i] + ".png\">");
                }
                sb.Append("</td>");
                sb.Append("<td>");
                if (websiteLanguage.WantsJp())
                {
                    sb.Append("<span class=\"itemname\">");
                    sb.Append(name.StringJpnHtml(version, inGameIdDict));
                    sb.Append("</span>");
                    sb.Append("<br>");
                    sb.Append(desc.StringJpnHtml(version, inGameIdDict));
                }
                if (websiteLanguage.WantsBoth())
                {
                    sb.Append("<br>");
                    sb.Append("<br>");
                }
                if (websiteLanguage.WantsEn())
                {
                    sb.Append("<span class=\"itemname\">");
                    sb.Append(name.StringEngHtml(version, inGameIdDict));
                    sb.Append("</span>");
                    sb.Append("<br>");
                    sb.Append(desc.StringEngHtml(version, inGameIdDict));
                }
                if (RefStrings[i] == "")
                {
                    sb.Append("<br>");
                }
                sb.Append("</td>");
                if (i == 0)
                {
                    sb.Append("<td rowspan=\"" + variantCount + "\">");
                    sb.Append(shopEnemySb);
                    sb.Append("</td>");
                }
                sb.Append("</tr>");
            }

            return(sb.ToString());
        }