require "prawn"
require "prawn/table"
require "pry"

class Prawn::Document
	def background_color(color)
	  tmp_color = fill_color
	  canvas do
	    fill_color color
	    fill_rectangle [bounds.left, bounds.top], bounds.right, bounds.top
	  end
	  fill_color tmp_color
	end
end

class Awakened2069
	FONT_SIZE_CHAPTER = 48
	FONT_SIZE_BODY = 10

	attr_accessor :pdf, :chapter_title

	def start_chapter(chapter_name)
		@chapter_title = chapter_name
		puts "Starting #{chapter_title}"

		pdf.start_new_page

		pdf.outline.update do
			puts "\tAdding #{@awakened2069.chapter_title} on page #{page_number}"
			section(@chapter_title, :destination => page_number)
		end

		puts "\tSetting font size"
		pdf.font_size Awakened2069::FONT_SIZE_CHAPTER
		pdf.font "Abess"
		puts "\tPrinting chapter to document"
		pdf.text chapter_title, :align => :center

		puts "\tRestoring body text"
		pdf.font "Goudy"
		pdf.font_size FONT_SIZE_BODY
	end


	def generate
		@pdf = Prawn::Document.new(:margin => 0)
		pdf.font_families.update(
			"Goudy"  => {
				:normal => "goudy.ttf",
				:bold   => "goudy-bold.ttf",
				:italic => "goudy-italic.ttf"
			},
			"Abess"  => {
				:normal => "abess.ttf"
			},
			"Lilith" => {
				:normal => "lilith.ttf"
			},
			"Goblin Hand" => {
				:normal => "VTCGoblinHand.ttf",
				:bold   => "VTCGoblinHandBold.ttf",
				:italic => "VTCGoblinHandItalic.ttf"
			},
			"Ultramarines"  => {
				:normal => "ultramarines.ttf"
			},
			"Unispace"  => {
				:normal => "unispace rg.ttf"
			}
		)

		pdf.outline.instance_variable_set(:@awakened2069, self)

		pdf.image("cover.png", :width => 612, :height => 792)

		pdf.start_new_page(:margin => 50)

		pdf.font "Ultramarines"
		pdf.font_size 72
		pdf.text "Awakened 2069", :align => :center

		pdf.font "Goudy"
		pdf.font_size 36
		pdf.text "\nGuide To The Mage: the Awakening, Second Edition Game On Discord. \n\nInvite Code:", :align => :center

		pdf.font "Unispace"
		pdf.text "25MpfjP", :align => :center

		pdf.font "Goudy"

		pdf.font_size 24
		pdf.text "\n\nAll content in this manual is inspired by the Storyteller and the players", :align => :center

		start_chapter "Introduction"



		pdf.render_file("writeup.pdf")
	end
end


awakened2069 = Awakened2069.new
awakened2069.generate