Sha256: 0d66e99cb251a5351c4f62041973744244db862529a31409597c8b1b3bed8c76

Contents?: true

Size: 781 Bytes

Versions: 1

Compression:

Stored size: 781 Bytes

Contents

# frozen_string_literal: true

# An openable and lockable portal.
#
class Door < Portal
  include Gamefic::Standard::Openable
  include Gamefic::Standard::Lockable

  def post_initialize
    update_reverse_open
    update_reverse_lock
  end

  def open=(bool)
    super
    reverse&.lock_key = lock_key
    update_reverse_open
    update_reverse_lock
  end

  def locked=(bool)
    super
    update_reverse_lock
  end

  def two_way_lock_key=(key)
    self.lock_key = key
    reverse&.lock_key = key
  end

  private

  def update_reverse_open
    rev = find_reverse
    rev&.open = open? unless rev&.open? == open?
  end

  def update_reverse_lock
    rev = find_reverse
    rev&.locked = locked? unless rev&.locked? == locked?
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gamefic-standard-3.3.0 lib/gamefic-standard/entities/door.rb