Skip to main content

Colony Events Expanded

Events Definition

This file defines the colony events expanded structure within the Roll Claw domain model.

Implementation

Colony Events Expanded Definition

File: domain/events/colony_events_expanded.pseudo

// Colony Events - Expanded Domain Events

// Base Event
class ColonyEvent {
// Identity
string id

// Properties
Date date
Time time
string description
string type
List<Cat> involvedCats
string notes
Person reporter
Location location

// Methods
function getRelatedEvents()
function getCausedBy()
function getImpactedCats()
}

// Cat Lifecycle Events

class BirthEvent extends ColonyEvent {
Cat mother
List<Cat> kittens
Cat fatherIfKnown
RelationshipConfidence paternalConfidence

constructor() {
super.type = "birth"
}
}

class DeathEvent extends ColonyEvent {
string cause // "medical condition", "dog attack", "accident", "euthanasia" etc.
MedicalCondition relatedCondition // if applicable
string circumstanceDetails

constructor() {
super.type = "death"
}
}

class DisappearanceEvent extends ColonyEvent {
Sighting lastSighting
string circumstances

constructor() {
super.type = "disappearance"
}
}

class AdoptionEvent extends ColonyEvent {
Person adopter
string newName // if renamed

constructor() {
super.type = "adoption"
}
}

// Health Events

class MedicalProcedureEvent extends ColonyEvent {
MedicalProvider provider
string procedureType // "spay", "neuter", "vaccination", "dental", etc.
string procedureDetails
string outcome

constructor() {
super.type = "medical_procedure"
}
}

class VaccinationEvent extends MedicalProcedureEvent {
string vaccineType // "rabies", "FIV/FVCP", etc.
Date expirationDate

constructor() {
super.type = "vaccination"
}
}

class TNREvent extends MedicalProcedureEvent {
boolean isEarTipped
string earTippedSide // "left" or "right"

constructor() {
super.type = "tnr"
}
}

class QuarantineEvent extends ColonyEvent {
string reason
Date startDate
Date endDate
string outcome

constructor() {
super.type = "quarantine"
}
}

class InjuryEvent extends ColonyEvent {
string injuryDescription
MedicalCondition resultingCondition
string treatmentProvided

constructor() {
super.type = "injury"
}
}

class IllnessEvent extends ColonyEvent {
string symptoms
string diagnosis
string treatmentPlan

constructor() {
super.type = "illness"
}
}

// Location Events

class RelocationEvent extends ColonyEvent {
Colony sourceColony
Colony destinationColony
string reason
boolean isTemporary

constructor() {
super.type = "relocation"
}
}

class TerritoryChangeEvent extends ColonyEvent {
Location previousMainLocation
Location newMainLocation
string reason

constructor() {
super.type = "territory_change"
}
}

class AccessLevelChangeEvent extends ColonyEvent {
string previousAccess // "outdoor_only", "indoor_access", "indoor_only"
string newAccess
string reason

constructor() {
super.type = "access_change"
}
}

// Social Events

class SocialBondEvent extends ColonyEvent {
List<Cat> catGroup
string bondType // "friendship", "maternal", "paternal", "siblings"
string groupName // e.g., "Diamond Dogs"

constructor() {
super.type = "social_bond"
}
}

class ConflictEvent extends ColonyEvent {
List<Cat> involvedCats
string severity // "mild", "moderate", "severe"
string resolution

constructor() {
super.type = "conflict"
}
}

class IntegrationEvent extends ColonyEvent {
Cat newCat
List<Cat> existingGroup
string outcomeStatus

constructor() {
super.type = "integration"
}
}

// Equipment Events

class EquipmentAddedEvent extends ColonyEvent {
Equipment addedEquipment
Location installation
string purpose

constructor() {
super.type = "equipment_added"
}
}

class EquipmentMaintenanceEvent extends ColonyEvent {
Equipment equipment
string maintenanceType // "cleaning", "repair", "replacement"
string details

constructor() {
super.type = "equipment_maintenance"
}
}

class EquipmentFailureEvent extends ColonyEvent {
Equipment equipment
string failureDescription
string impact
string resolutionPlan

constructor() {
super.type = "equipment_failure"
}
}

// Resource Events

class FeedingScheduleEvent extends ColonyEvent {
string previousSchedule
string newSchedule
string reason

constructor() {
super.type = "feeding_schedule"
}
}

class ResourceDeliveryEvent extends ColonyEvent {
string resourceType // "food", "medication", "supplies", etc.
int quantity
string supplier
Map<string, string> details

constructor() {
super.type = "resource_delivery"
}
}

class ResourceDepletionEvent extends ColonyEvent {
string resourceType
string impact
boolean isEmergency

constructor() {
super.type = "resource_depletion"
}
}

class InventoryCheckEvent extends ColonyEvent {
Map<string, int> inventoryLevels
List<string> neededItems

constructor() {
super.type = "inventory_check"
}
}

// Environmental Events

class WeatherEventImpact extends ColonyEvent {
string weatherCondition // "snow", "rain", "extreme heat", etc.
string impact
string mitigationEfforts

constructor() {
super.type = "weather_impact"
}
}

class ThreatEvent extends ColonyEvent {
string threatType // "stray dog", "construction", "human interference", etc.
string severityLevel
string responseActions

constructor() {
super.type = "threat"
}
}

class EnvironmentalChangeEvent extends ColonyEvent {
string changeType // "construction", "renovation", "landscaping", etc.
string impact
string adaptationPlan

constructor() {
super.type = "environmental_change"
}
}

// Identification Events

class NicknameAssignmentEvent extends ColonyEvent {
Cat cat
string nickname

constructor() {
super.type = "nickname_assignment"
}
}

class MicrochipEvent extends ColonyEvent {
Cat cat
string chipNumber
MedicalProvider provider

constructor() {
super.type = "microchip"
}
}

class IdentityUpdateEvent extends ColonyEvent {
Cat cat
Map<string, string> updatedAttributes // "name", "description", "pattern", etc.
string reason

constructor() {
super.type = "identity_update"
}
}

// Maintenance Events

class LitterBoxMaintenanceEvent extends ColonyEvent {
Equipment litterBox
string maintenanceType // "cleaning", "replacement", "relocation"
string notes

constructor() {
super.type = "litter_box_maintenance"
}
}

class FeedingStationMaintenanceEvent extends ColonyEvent {
Equipment feedingStation
string maintenanceType // "cleaning", "refill", "repair"
string notes

constructor() {
super.type = "feeding_station_maintenance"
}
}

class WaterStationMaintenanceEvent extends ColonyEvent {
Equipment waterStation
string maintenanceType // "cleaning", "refill", "repair"
string notes

constructor() {
super.type = "water_station_maintenance"
}
}

// Colony Status Events

class ColonyStatusChangeEvent extends ColonyEvent {
string previousStatus // "active", "inactive", "relocated"
string newStatus
string reason

constructor() {
super.type = "colony_status_change"
}
}

class CaretakerAssignmentEvent extends ColonyEvent {
Person caretaker
string role // "primary", "backup", "specialist", etc.
string responsibilities

constructor() {
super.type = "caretaker_assignment"
}
}

class ColonyMergeEvent extends ColonyEvent {
Colony sourceColony
Colony targetColony
string reason
List<Cat> relocatedCats

constructor() {
super.type = "colony_merge"
}
}

// Community Events

class VolunteerEvent extends ColonyEvent {
Person volunteer
string activityType
int hoursContributed
string achievements

constructor() {
super.type = "volunteer_activity"
}
}

class CommunityInteractionEvent extends ColonyEvent {
string interactionType // "education", "complaint", "assistance"
Person communityMember
string outcome

constructor() {
super.type = "community_interaction"
}
}

class DonationEvent extends ColonyEvent {
Person donor
string donationType // "financial", "supplies", "equipment"
string value
string allocation

constructor() {
super.type = "donation"
}
}
  • See the Domain Model Overview for more information on how this component fits into the overall domain model.