Привет всем кто давно меня не читал. Год назад я начал увлекаться настольными играми, в частности коллекционной карточной игрой Magic the Gathering. Недавно готовясь к выходу нового сэта по этой игре, я решил создать генератор прокси карт, чтобы протестировать сэт до его выхода.
Как это работает? Внесите информацию обо всех картах в таблицу Excel. Чтобы считать эту информацию я использовал библиотеку CSharpJExcel - очень мощная вещь в сравнении с MyXls которую я использовал раньше. Кроме того MyXls не умеет читать xls файлы, а только записывать. Хотя конечно вы можете использовать более продвинутые технологии для хранения информации в том числе и базы данных.
Изготовьте шаблон для карт на векторном редакторе. Мой шаблон вы можете видеть ниже, я использовал редактор Inkscape. Пространство использовано так, чтобы разместить на одном листе А4 15 карт (как раз 1 бустер).
На рисунке изображён шаблон с уже подставленным текстом карт, в чистом же шаблоне все поля пустые.
Далее сохраните шаблон в формате SVG. Тут собственно и заключается вся хитрость. SVG очень удобный формат т.к. является расширением XML. Мне необязательно разбираться в этом формате, чтобы программно модифицировать содержание тестовых полей.
Для того чтобы подготовить шаблон забейте в текстовые поля легко узнаваемый текст, откройте его в вордпаде и найдите теги этих текстовых полей. В найденные теги добавьте свойство-идентификатор.
<text
SpecialID="Name1"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="852.19617"
y="-233.12511"
id="text3769"
sodipodi:linespacing="125%"
transform="matrix(0,1,-1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan3773"
x="852.19617"
y="-233.12511">ABRA-KADABRA</tspan></text>
Здесь красным выделен узнаваемый текст, синим - свойство идентификатор, которое нужно дописать.
С помощью LinqToXML (System.Xml.Linq) можно легко открыть шаблон найти теги содержащие идентификаторы и изменить их содержании, затем сохранить шаблон в новом файле, так и сделайте. Вот и всё, карты готовы к печати. Вырежьте распечатанные карты и вставьте их в протекторы вместе со старыми картами для жёсткости. Осталось только заметить, что формат оказался пробелозависимым, открывайте файл с использованием модификатора PreserveWhitespace:
XDocument doc = XDocument.Load("Sample.svg", LoadOptions.PreserveWhitespace);
Теперь, когда технология отработана я могу изготовить прокси и для UselessWars.