Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Name Space
- #===============================================================================
- module Quests
- # class variable to store quessts
- @@quests = {
- :main => [],
- :sub => []
- }
- # adds quest to a list of possible quests
- def self.registerQuest(id, style, description, parent=nil)
- type = parent.nil? ? :sub : :main
- @@quests[type].push(Quest.new(id, style, description, parent))
- end
- # gets quest from ID
- def self.getQuest(id)
- type, i = self.getTypeIndex(id)
- return nil if nil
- return @@quests[type][i]
- end
- # sets quest as completed
- def self.completeQuest(id)
- type, i = self.getTypeIndex(id)
- @@quests[type][i].status = "complete"
- end
- # gets quest type and index from ID
- def self.getTypeIndex(id)
- for t in [:main, :sub]
- i = 0
- for q in @@quests[t]
- return t, i if q.id == id
- i += 1
- end
- end
- return nil
- end
- end
- #===============================================================================
- # Quest Object
- #===============================================================================
- class Quest
- # attribute access
- attr_accessor :id
- attr_accessor :style
- attr_accessor :description
- attr_accessor :parent
- attr_accessor :started
- # constructor
- def initialize(id, style, description, parent=nil)
- # quest ID
- @id = id
- # styling
- @style = style
- # quest description
- @description = description
- # parent (main) quest ID if applicable
- @parent = parent.nil? ? id : parent
- # status of the quest
- @status = "started"
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement