// RSDKv5 Basic Object Template
// Object Name: [OBJECT_NAME]
// Type ID: [TYPE_ID]
// Description: [BRIEF_DESCRIPTION]

// ============================================
// CREATE FUNCTION - Object initialization
// ============================================
Create:
    // Position and movement
    self.position.x = [X_POSITION]
    self.position.y = [Y_POSITION]
    self.velocity.x = 0
    self.velocity.y = 0
    
    // State
    self.active = true
    self.visible = true
    self.direction = 0  // 0=left, 1=right
    
    // Sprite and animation
    self.spriteIndex = [SPRITE_INDEX]
    self.animIndex = 0
    self.frameIndex = 0
    self.animSpeed = 0
    
    // Collision hitbox
    self.hitbox[0].left = -16
    self.hitbox[0].top = -16
    self.hitbox[0].right = 16
    self.hitbox[0].bottom = 16
    
    // Custom properties
    self.timer = 0
    self.state = 0
    
    return

// ============================================
// UPDATE FUNCTION - Per-frame logic
// ============================================
Update:
    // Update timer
    self.timer += 1
    
    // Custom state machine
    if self.state == 0
        // State 0: [DESCRIPTION]
        [STATE_0_LOGIC]
        
        // Transition to state 1
        if [TRANSITION_CONDITION]
            self.state = 1
        endif
    elif self.state == 1
        // State 1: [DESCRIPTION]
        [STATE_1_LOGIC]
    endif
    
    // Movement
    self.position.x += self.velocity.x
    self.position.y += self.velocity.y
    
    // Animation
    Animate()
    
    return

// ============================================
// DRAW FUNCTION - Rendering
// ============================================
Draw:
    // Draw sprite with current animation frame
    DrawSprite(self.spriteIndex, self.animIndex, self.position.x, self.position.y, self.direction, 0)
    
    // Debug: draw hitbox (remove in release)
    // DrawRectangle(self.position.x + self.hitbox[0].left, 
    //              self.position.y + self.hitbox[0].top,
    //              self.hitbox[0].right - self.hitbox[0].left,
    //              self.hitbox[0].bottom - self.hitbox[0].top,
    //              0xFF000080)
    
    return

// ============================================
// STAGELOAD FUNCTION - Called when stage loads
// ============================================
StageLoad:
    // One-time setup for static objects
    // Called only once when the stage is loaded
    
    return

// ============================================
// HELPER FUNCTIONS (if needed)
// ============================================
// CheckPlayerRange:
//     // Check if player is within range
//     player = GetPlayer()
//     dx = abs(player.position.x - self.position.x)
//     dy = abs(player.position.y - self.position.y)
//     if dx < [RANGE_X] && dy < [RANGE_Y]
//         return true
//     endif
//     return false
