module soldstate; import std.stdio : writeln; import state, gumballmachine; class SoldState : State { GumballMachine gumballMachine; this(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; } void insertQuarter() { writeln("Please wait, we're already giving you a gumball"); } void ejectQuarter() { writeln("Sorry, you already turned the crank"); } void turnCrank() { writeln("Turning twice doesn't get you another gumball!"); } void dispense() { gumballMachine.releaseBall(); if (gumballMachine.getCount() > 0) { gumballMachine.setState(gumballMachine.getNoQuarterState()); } else { writeln("Oops, out of gumballs!"); gumballMachine.setState(gumballMachine.getSoldOutState()); } } void refill() {} override string toString() const { return "dispensing a gumball"; } }