Packages

class CavernRotationService extends AnyRef

A service that assists routine access to a series of game zones through the manipulation of connections between transmit point structures.

The caverns were a group of game zones that were intended to be situated underground. Access to the caverns was only sometimes possible through the use of special above-ground warp gates called geowarps (geowarp gates) and those geowarps were not always functional. Usually, two caverns were available at a time and connections to these caverns were fixed to specific active geowarp gates. The changing availability of the caverns through the change of geowarp gate activity was colloquially referred to as a "rotation" since it followed a predictable cycle. The cycle was not just one of time but one of route as one specific geowarp gates would open to the same destination cavern.

The client controls warp gate destinations. The server can only confirm those destinations. The connectivity of a geowarp gate to a cavern warp gate had to have been determined by opening the cavern with an appropriate packet and checking the map description of the cavern gates. The description text explains which of the geowarp gates in whichever zone has been connected; and, where usually static and inanimate, that geowarp gate will bubble online and begin to rotate and have a complementary destination map description. Opening different combinations of caverns changes the destination these warp gate pairs will connect and not always being connected at all. The warp gate pairs for the cavern connections must be re-evaluated for each combination and with each rotation and all relevant pairings must be defined in advance.

Source
CavernRotationService.scala
See also

ActorContext

Building

ChatMsg

Config.app.game.cavernRotation

GalaxyService

GalaxyAction.LockedZoneUpdate

GalaxyResponse.UnlockedZoneUpdate

InterstellarClusterService

org.log4s.getLogger

resources/zonemaps/lattice.json

SessionActor

SessionActor.SendResponse

StashBuffer

WarpGate

Zone

ZoneForcedCavernConnectionsMessage

ZoneInfoMessage

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CavernRotationService
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new CavernRotationService(context: ActorContext[Command], buffer: StashBuffer[Command])

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def active(galaxyService: ActorRef): Behavior[Command]
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  10. val firstClosingWarningAtMinutes: Int

    how long before any given cavern closure that the first closing message is shown (minutes)

  11. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. def hurryNextRotation(galaxyService: ActorRef, forcedRotationOverride: Boolean = false): Unit

    Progress to the next significant cavern rotation event.

    If the time until the next rotation is greater than the time where the cavern closing warning would be displayed, progress to that final cavern closing warning.

    Progress to the next significant cavern rotation event.

    If the time until the next rotation is greater than the time where the cavern closing warning would be displayed, progress to that final cavern closing warning. Adjust the timing for that advancement. If the final cavern closing warning was already displayed, just perform the cavern rotation.

    galaxyService

    callback to update the server and clients; should be the reference to GalaxyService, hence the literal name

    forcedRotationOverride

    force a cavern rotation in a case where a closing warning would be displayed instead

    See also

    GalaxyService

  14. def hurryRotationToZoneLock(zoneid: String, galaxyService: ActorRef): Boolean

    na

    na

    zoneid

    zone to lock next

    galaxyService

    callback to update the server and clients; should be the reference to GalaxyService, hence the literal name

    returns

    true, if the target zone is locked when complete; false, otherwise

    See also

    GalaxyService

  15. def hurryRotationToZoneUnlock(zoneid: String, galaxyService: ActorRef): Boolean

    na

    na

    zoneid

    zone to unlock next

    galaxyService

    callback to update the server and clients; should be the reference to GalaxyService, hence the literal name

    returns

    true, if the target zone is unlocked when complete; false, otherwise

    See also

    GalaxyService

  16. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  17. var lockTimer: Cancellable

    timer for cavern rotation - the cavern closing warning

  18. def lockTimerToDisplayWarning(duration: FiniteDuration, counter: Int = firstClosingWarningAtMinutes): Unit

    Update the timer for the cavern closing message.

    Update the timer for the cavern closing message.

    duration

    new time until message display

    counter

    the counter that indicates the next message to display

  19. def manageCaverns(zones: Seq[Zone]): Boolean

    na

    na

    zones

    the zones for submission

    returns

    true, if the setup has been completed; false, otherwise

  20. var managedZones: List[ZoneMonitor]

    monitors for the cavern zones

  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. var nextToLock: Int

    index of the next cavern that will lock

  23. var nextToUnlock: Int

    index of the next cavern that will unlock

  24. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  25. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  26. def reportRotationOrder(sendToSession: ActorRef): Unit

    na

    na

    sendToSession

    callback reference

  27. def retimeZonesUponForcedAdvancement(advanceTimeBy: FiniteDuration, galaxyService: ActorRef): Unit

    If the natural process of switching between caverns is hurried, advance the previous start time of each zone monitor to give the impression of the hastened rotation.

    If the natural process of switching between caverns is hurried, advance the previous start time of each zone monitor to give the impression of the hastened rotation. This does not actually affect the functional timers nor is it in response to an actual zone rotation event. It only affects the backup parameters of the timers that are maintained by the zone monitors.

    advanceTimeBy

    amount of time advancement

    galaxyService

    callback to update the zone timers; should be the reference to GalaxyService, hence the literal name

    See also

    GalaxyService

  28. def retimeZonesUponForcedRotation(galaxyService: ActorRef): Unit

    If the zones are forced to rotate before the timer would normally complete, correct all of the zone monitors to give the impression of the rotation that occurred.

    If the zones are forced to rotate before the timer would normally complete, correct all of the zone monitors to give the impression of the rotation that occurred. Only affect the backup parameters of the timers that are maintained by the zone monitors. Do not actually affect the functional timers.

    galaxyService

    callback to update the zone timers; should be the reference to GalaxyService, hence the literal name

    See also

    GalaxyService

  29. def sendCavernRotationUpdates(sendToSession: ActorRef): Unit

    sendToSession

    callback reference

  30. var simultaneousUnlockedZones: Int
  31. def start(): Behavior[Command]
  32. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  33. val timeBetweenRotationsHours: Float

    time between individual cavern rotation events (hours)

  34. var timeToCompleteAllRotationsHours: Float

    period of all caverns having rotated (hours)

  35. def toString(): String
    Definition Classes
    AnyRef → Any
  36. var unlockTimer: Cancellable

    timer for cavern rotation - the actual opening and closing functionality

  37. def unlockTimerToSwitchZone(duration: FiniteDuration): Unit

    Update the timer for the zone switching process.

    Update the timer for the zone switching process.

    duration

    new time until switching

  38. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  39. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  40. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  41. def zoneRotationFunc(galaxyService: ActorRef): Unit

    Actually perform zone rotation as determined by the managed zone monitors and the timers.

    The process of zone rotation occurs by having a zone that is determined to be closing and a zone that is determied to be opening and a potential series of zones "in between" the two that are also open.

    Actually perform zone rotation as determined by the managed zone monitors and the timers.

    The process of zone rotation occurs by having a zone that is determined to be closing and a zone that is determied to be opening and a potential series of zones "in between" the two that are also open. All of the currently opened zones are locked and the zone to be permanently closed is forgotten. The zone that should be opening is added to the aforementioned sequence of zones and then the zones in that sequence are opened. The zones that would otherwise be unaffected by a single zone opening and a single cone closing must be affected because the cavern gates will not connect to the same geowarp gates with the change in the sequence. After the rotation, the indices to the next closing zone and next opening zone are updated. Modifying the zone monitor timekeeping and the actual timers and the indices are the easy parts.

    galaxyService

    callback to update the server and clients; should be the reference to GalaxyService, hence the literal name

    See also

    GalaxyService

Inherited from AnyRef

Inherited from Any

Ungrouped