Table of Contents

Interface IPlaceable

Namespace
MoonBark.GridPlacement.Core.Interfaces
Assembly
MoonBark.GridPlacement.Core.dll

Common interface for all placeable implementations.

Provides a contract that both engine-agnostic (POCS) and engine-specific implementations must follow, enabling interchangeability while maintaining clean separation between core logic and engine-specific functionality.

Implementation pattern: - Core.Placeable: Pure C# implementation for UI and logic - Godot.GodotPlaceableWrapper: Wraps core + adds Godot-specific methods - Future engines can add their own wrappers

public interface IPlaceable

Properties

CanMirror

Whether this placeable can be mirrored/flipped during placement Affects UI controls and available placement options

bool CanMirror { get; }

Property Value

bool

CanRotate

Whether this placeable can be rotated during placement Affects UI controls and placement validation

bool CanRotate { get; }

Property Value

bool

Category

Category identifier for grouping and filtering String-based to allow game-specific categories and runtime customization

string Category { get; }

Property Value

string

Description

Detailed description of the placeable Used for UI tooltips, help text, and contextual information

string Description { get; }

Property Value

string

FilePath

File path to the scene or resource file this placeable represents. The format is defined by the engine-specific layer that instantiates it.

string FilePath { get; }

Property Value

string

Id

Unique identifier for the placeable Used as primary key in data structures and lookup operations

string Id { get; }

Property Value

string

IsValid

Whether this placeable is currently valid/available Used by UI to enable/disable interactions and placement

bool IsValid { get; }

Property Value

bool

Name

Human-readable display name Primary label shown in UI components (menus, tooltips, etc.)

string Name { get; }

Property Value

string

ResourceCost

Resource cost required to place this object Used by UI for cost display and placement validation

PlaceableCosts ResourceCost { get; }

Property Value

PlaceableCosts

Size

Size dimensions in grid units Used for collision detection, placement validation, and UI layout

CoreVector2I Size { get; }

Property Value

CoreVector2I

Variants

Visual variants available for this placeable Multiple visual representations while sharing core gameplay logic

IEnumerable<PlaceableVariant> Variants { get; }

Property Value

IEnumerable<PlaceableVariant>