-- Dice notation taken from:
-- https://en.wikipedia.org/wiki/Dice_notation

module Roller.Types where

import Data.Word

type NumberOfDice = Word8
type NumberOfFacesOfEachDie = Word8

dieSymbol = 'd'
additionSymbol = '+'
subtractionSymbol = '-'

data DiceExpression =
    DieTerm NumberOfDice NumberOfFacesOfEachDie
    | AddedDieTerm NumberOfDice NumberOfFacesOfEachDie
    | SubtractedDieTerm NumberOfDice NumberOfFacesOfEachDie
    | ConstantTerm Word8
    | AddedConstantTerm Word8
    | SubtractedConstantTerm Word8

instance Show DiceExpression where
    show (DieTerm x y) = show x ++ show dieSymbol ++ show y
    show (AddedDieTerm x y) = show additionSymbol ++ show x ++ show dieSymbol ++ show y
    show (SubtractedDieTerm x y) = show subtractionSymbol ++ show x ++ show dieSymbol ++ show y
    show (ConstantTerm x) = show x
    show (AddedConstantTerm x) = show additionSymbol ++ show x
    show (SubtractedConstantTerm x ) = show subtractionSymbol ++ show x