I read FlashApe’s blog entry a little too quick… I thought it said “InnKeeper” and was like, “Wow! A D&D Flash post NOT by me!!!”
…but it was IntKeeper.
Pissed, I wrote this class to satiate my delusion. You can check an object in and out of rooms if any are available.
class InnKeeper extends Object { static private var rooms_obj:Object = {}; static var private SUITE:Number = 0; static var private NOBLE:Number = 1; static var private LUXURY:Number = 2; static var private COMMON:Number = 3; function InnKeeper() { } static public function getARoom(tennant:Object):Boolean { if(InnKeeper.isRoomAvailable() == false) { return false; } else { var bestRoom:Number = InnKeeper.getBestRoom(); if(bestRoom == -1) { // nice try hacker... return false; } InnKeeper.rooms_obj[bestRoom] = tennant; return true; } } static public function checkOut(obj:Object):Boolean { for(var p in InnKeeper.rooms_obj) { if(InnKeeper.rooms_obj[p] == obj) { InnKeeper.rooms_obj[p] == null; return true; } } return false; } static public function isRoomAvailable():Boolean { if(InnKeeper.rooms_obj[InnKeeper.SUITE] != null) { if(InnKeeper.rooms_obj[InnKeeper.NOBLE] != null) { if(InnKeeper.rooms_obj[InnKeeper.LUXURY] != null) { if(InnKeeper.rooms_obj[InnKeeper.COMMON] != null) { return false; } else { return true; } } else { return true; } } else { return true; } } else { return true; } } static private function getBestRoom():Number { if(InnKeeper.rooms_obj[InnKeeper.SUITE] != null) { if(InnKeeper.rooms_obj[InnKeeper.NOBLE] != null) { if(InnKeeper.rooms_obj[InnKeeper.LUXURY] != null) { if(InnKeeper.rooms_obj[InnKeeper.COMMON] != null) { return -1; } else { return InnKeeper.COMMON; } } else { return InnKeeper.LUXURY; } } else { return InnKeeper.NOBLE; } } else { return InnKeeper.SUITE; } } }