- commit
- f5c235947f8b88072479f9bb70c6be53e9548077
- parent
- 179aeca909190755f73c8c4feaa7e8077eecddfd
- author
- Dami <dami.etoile@gmail.com>
| M | takuzu/ | 54 | ++++++++++++++++-------------- |
| M | takuzuplus/ | 8 | ++++- |
@@ -10,6 +10,11 @@ import (
1010 1111 type printAdapter struct{}1212 13+var defaultTakuzuRules = []string{14+ "No three equal adjacent in any row or column.",15+ "Each row/column has equal 0 and 1 counts, and rows/columns are unique.",16+}17+1318 func (printAdapter) CanonicalGameType() string { return "Takuzu" }1419 func (printAdapter) Aliases() []string { return []string{"takuzu"} }1520 @@ -26,14 +31,21 @@ func (printAdapter) RenderPDFBody(pdf *fpdf.Fpdf, payload any) error {
2631 }2732 2833 func RenderTakuzuPDFBody(pdf *fpdf.Fpdf, data *pdfexport.TakuzuData) {34+ RenderTakuzuPDFBodyWithRules(pdf, data, defaultTakuzuRules)35+}36+37+func RenderTakuzuPDFBodyWithRules(pdf *fpdf.Fpdf, data *pdfexport.TakuzuData, rules []string) {2938 if data == nil || data.Size <= 0 {3039 return3140 }41+ if len(rules) == 0 {42+ rules = defaultTakuzuRules43+ }3244 3345 size := data.Size3446 pageW, pageH := pdf.GetPageSize()3547 pageNo := pdf.PageNo()36- area := pdfexport.PuzzleBoardRect(pageW, pageH, pageNo, 2)48+ area := pdfexport.PuzzleBoardRect(pageW, pageH, pageNo, len(rules))3749 cellSize := pdfexport.FitCompactCellSize(size, size, area)3850 if cellSize <= 0 {3951 return@@ -86,32 +98,22 @@ func RenderTakuzuPDFBody(pdf *fpdf.Fpdf, data *pdfexport.TakuzuData) {
8698 pdf.SetLineWidth(pdfexport.OuterBorderLineMM)8799 pdf.Rect(startX, startY, blockW, blockH, "D")88100 89- ruleY := pdfexport.InstructionY(startY+blockH, pageH, 2)101+ ruleY := pdfexport.InstructionY(startY+blockH, pageH, len(rules))90102 pdfexport.SetInstructionStyle(pdf)91- pdf.SetXY(area.X, ruleY)92- pdf.CellFormat(93- area.W,94- pdfexport.InstructionLineHMM,95- "No three equal adjacent in any row or column.",96- "",97- 0,98- "C",99- false,100- 0,101- "",102- )103- pdf.SetXY(area.X, ruleY+pdfexport.InstructionLineHMM)104- pdf.CellFormat(105- area.W,106- pdfexport.InstructionLineHMM,107- "Each row/column has equal 0 and 1 counts, and rows/columns are unique.",108- "",109- 0,110- "C",111- false,112- 0,113- "",114- )103+ for i, rule := range rules {104+ pdf.SetXY(area.X, ruleY+float64(i)*pdfexport.InstructionLineHMM)105+ pdf.CellFormat(106+ area.W,107+ pdfexport.InstructionLineHMM,108+ rule,109+ "",110+ 0,111+ "C",112+ false,113+ 0,114+ "",115+ )116+ }115117 }116118 117119 func drawTakuzuRelations(pdf *fpdf.Fpdf, data *pdfexport.TakuzuData, startX, startY, cellSize float64) {@@ -9,6 +9,12 @@ import (
99 1010 type printAdapter struct{}1111 12+var takuzuPlusRules = []string{13+ "No three equal adjacent in any row or column.",14+ "Each row/column has equal 0 and 1 counts, and rows/columns are unique.",15+ "= means equal neighbors; x means opposite neighbors.",16+}17+1218 func (printAdapter) CanonicalGameType() string { return "Takuzu+" }1319 func (printAdapter) Aliases() []string { return []string{"takuzu plus", "binario+", "binario plus"} }1420 @@ -19,7 +25,7 @@ func (printAdapter) BuildPDFPayload(save []byte) (any, error) {
1925 func (printAdapter) RenderPDFBody(pdf *fpdf.Fpdf, payload any) error {2026 switch data := payload.(type) {2127 case *pdfexport.TakuzuData:22- takuzu.RenderTakuzuPDFBody(pdf, data)28+ takuzu.RenderTakuzuPDFBodyWithRules(pdf, data, takuzuPlusRules)2329 }2430 return nil2531 }