class Test : AbstractRole { @Attribute var expectedCostumeName = "" @Attribute var expectedActorName = "" var passed = false var square : Square override fun begin() { if (expectedCostumeName == null ) expectedCostumeName = "" if (expectedActorName == null) expectedActorName = "" PlayDirector.instance.tester.testsPending ++ super.begin() } override fun activated() { square = PlayDirector.instance.mainStage.squareAtPoint( actor.x, actor.y ) } override fun end() { if ( !passed ) { println( "${this} died before passing" ) } } override fun tick() { if (!passed && passes()) { passed = true PlayDirector.instance.tester.testsPending -- actor.event( "passed" ) } else if ( passed && !passes() ) { passed = false PlayDirector.instance.tester.testsPending ++ actor.event( "default" ) actor.event( "failed" ) } } fun passes() : boolean { val occupant = if (square.occupant == null) square.alternateOccupant else square.occupant val valid = (expectedCostumeName == "" && occupant == null) || ( occupant != null && occupant.actor.name == expectedActorName && Game.instance.resources.costumes.findName( occupant.actor.costume ) == expectedCostumeName ) return valid } }