src/pon2/core/requirement

This module implements Nazo Puyo requirements.

Types

Requirement = object
Nazo Puyo requirement to clear.
RequirementColor {.pure.} = enum
  All = "", Red = "赤", Green = "緑", Blue = "青", Yellow = "黄",
  Purple = "紫", Garbage = "おじゃま", Color = "色"
'c' in the RequirementKind.
RequirementKind {.pure.} = enum
  Clear = "cぷよ全て消すべし", DisappearColor = "n色消すべし",
  DisappearColorMore = "n色以上消すべし",
  DisappearCount = "cぷよn個消すべし",
  DisappearCountMore = "cぷよn個以上消すべし",
  Chain = "n連鎖するべし", ChainMore = "n連鎖以上するべし",
  ChainClear = "n連鎖&cぷよ全て消すべし",
  ChainMoreClear = "n連鎖以上&cぷよ全て消すべし",
  DisappearColorSametime = "n色同時に消すべし",
  DisappearColorMoreSametime = "n色以上同時に消すべし",
  DisappearCountSametime = "cぷよn個同時に消すべし",
  DisappearCountMoreSametime = "cぷよn個以上同時に消すべし",
  DisappearPlace = "cぷよn箇所同時に消すべし",
  DisappearPlaceMore = "cぷよn箇所以上同時に消すべし",
  DisappearConnect = "cぷよn連結で消すべし",
  DisappearConnectMore = "cぷよn連結以上で消すべし"
Kind of the requirement to clear the nazo puyo.
RequirementNumber = range[0 .. 63]
'n' in the RequirementKind.

Consts

ColorKinds = {RequirementKind.Clear, RequirementKind.DisappearCount..RequirementKind.DisappearCountMore,
              RequirementKind.ChainClear..RequirementKind.ChainMoreClear, RequirementKind.DisappearCountSametime..RequirementKind.DisappearConnectMore}
All requirement kinds containing 'c'.
NoColorKinds = {RequirementKind.DisappearColor,
                RequirementKind.DisappearColorMore, RequirementKind.Chain,
                RequirementKind.ChainMore,
                RequirementKind.DisappearColorSametime,
                RequirementKind.DisappearColorMoreSametime}
All requirement kinds not containing 'c'.
NoNumberKinds = {RequirementKind.Clear}
All requirement kinds not containing 'n'.
NumberKinds = {RequirementKind.DisappearColor..RequirementKind.DisappearConnectMore}
All requirement kinds containing 'n'.
RequirementQueryKeys = ["req-kind", "req-color", "req-number"]

Procs

func `$`(self: Requirement): string {.inline, ...raises: [], tags: [], forbids: [].}
func color(self: Requirement): RequirementColor {.inline, ...raises: [], tags: [],
    forbids: [].}
func color=(self: var Requirement; color: RequirementColor) {.inline,
    ...raises: [], tags: [], forbids: [].}
Sets the color of the requirement. If the requirement does not have a color, UnpackDefect is raised.
func initRequirement(kind: RequirementKind; color: RequirementColor): Requirement {.
    inline, ...raises: [], tags: [], forbids: [].}
Returns a requirement.
func initRequirement(kind: RequirementKind; color: RequirementColor;
                     number: RequirementNumber): Requirement {.inline,
    ...raises: [], tags: [], forbids: [].}
Returns a requirement.
func initRequirement(kind: RequirementKind; number: RequirementNumber): Requirement {.
    inline, ...raises: [], tags: [], forbids: [].}
func isSupported(self: Requirement): bool {.inline, ...raises: [], tags: [],
    forbids: [].}
Returns true if the requirement is supported.
func kind(self: Requirement): RequirementKind {.inline, ...raises: [], tags: [],
    forbids: [].}
Returns the kind of the requirement.
func kind=(self: var Requirement; kind: RequirementKind) {.inline, ...raises: [],
    tags: [], forbids: [].}
Sets the kind of the requirement.
func number(self: Requirement): RequirementNumber {.inline, ...raises: [],
    tags: [], forbids: [].}
func number=(self: var Requirement; number: RequirementNumber) {.inline,
    ...raises: [], tags: [], forbids: [].}
Sets the number of the requirement. If the requirement does not have a color, UnpackDefect is raised.
func parseRequirement(query: string; fqdn: IdeFqdn): Requirement {.inline,
    ...raises: [ValueError, KeyError], tags: [], forbids: [].}
Returns the requirement converted from the URI query. If the query is invalid, ValueError is raised.
func parseRequirement(str: string): Requirement {.inline,
    ...raises: [ValueError, KeyError], tags: [], forbids: [].}
Returns the requirement converted from the string representation. If the string is invalid, ValueError is raised.
func toUriQuery(self: Requirement; fqdn = Pon2): string {.inline, ...raises: [],
    tags: [], forbids: [].}
Returns the URI query converted from the requirement.