﻿@startuml

Uno *-- DrawPile
Uno *-- DiscardPile
Uno *-- "2..10" Player
Uno *-- Turn

Turn *-- "2..10" Player
Turn *-- Direction

Clockwise --|> Direction
CounterClockwise --|> Direction


Player *-- "1..*" Card

'''Actions'''
Player --> Action

PlayCardAction -u-|> Action
PlayCardAction ..> Card

PlayWildCardAction -u-|> PlayCardAction
PlayWildCardAction ..> WildCard
PlayWildCardAction --> SelectColorAction

SelectColorAction -u-|> Action
SelectColorAction --> Color
     
DrawCardAction -u-|> Action
DrawCardAction --> DrawPile
'''

DrawPile *-- Card
DiscardPile *-- Card
 
NumeredCard -u-|> Card
ActionCard -u-|> Card

WildCard -u-|> Card
DrawFourWildCard -u-|> WildCard
SimpleWildCard -u-|> WildCard

DrawTwoCard -u-|> ActionCard
SkipCard -u-|> ActionCard
ReverseCard -u-|> ActionCard

ActionCard *-- Color
NumeredCard *-- Color
NumeredCard *-- Number

class Color
{
    Blue
    Red
    Green
    Yellow
}

class Number
{
    From 0 to 9
}
@enduml