class Portcullis : Item { @Attribute var requires = "" @Attribute var dx = 0 @Attribute var dy = 1 var open = true var formattedRequires = "" override fun activated() { super.activated() val preferences = Game.instance.preferences.node( "completed" ) if ( requires != "" ) { for ( req in requires.split(",") ) { req = req.trim() if (! preferences.getBoolean( req.replace( '/', '.'), false) ) { open = false formattedRequires += ( if (formattedRequires == "") "" else ", ") + format(req) } } } if (open) { replaceAction( Delay( 1 ) then MoveBy( actor.position, 1, Vector2( dx * gridSize(), dy * gridSize()), Eases.easeInOut ) ) } } fun format( req : String ) : String { val index = req.indexOf( "/" ) if ( index >= 0 ) { req = req.substring( 0, index ) + " (" + req.substring( index +1 ) + ")" } return req.substring( 0, 1 ).toUpperCase() + req.substring( 1 ) } override fun squashable( direction : int ) = open override fun canPush( direction : int, speed : int, strength : int ) : boolean { if ( formattedRequires != "" ) { if ( ! PlayDirector.instance.player.isTalking() ) { PlayDirector.instance.player.speak( "Requires : \n${formattedRequires}", 2 ) } } return false } }