# Agrarian MVP Implementation Notes

This first implementation creates the C++ foundation for the Phase 1 survival MVP. It is intentionally small and system-oriented: the goal is to make the first playable loop possible without creating throwaway prototype logic that will have to be replaced later.

## Added C++ Systems

- `AgrarianTypes`
  - Shared item, survival, and weather data types.
- `AgrarianInteractable`
  - Interface for anything the player can use/gather/activate.
- `AgrarianSurvivalComponent`
  - Replicated health, stamina, hunger, thirst, body temperature, and injury state.
  - Server-authoritative decay and survival damage.
  - Basic ambient temperature exposure from `AgrarianGameState`.
- `AgrarianInventoryComponent`
  - Replicated inventory item stacks.
  - Server-authoritative add/remove helpers.
- `AgrarianGameState`
  - Replicated world time, weather state, and ambient temperature.
- `AgrarianResourceNode`
  - Interactable gatherable actor that grants inventory items and depletes.
- `AgrarianCampfire`
  - Interactable fire actor using wood as fuel.
  - Applies warmth to nearby characters.
- `AgrarianShelterActor`
  - Primitive replicated shelter actor with a protection volume placeholder.
- `AgrarianGameCharacter`
  - Now owns survival and inventory components.
  - Has a server-authoritative interaction trace flow.
- `AgrarianGameGameMode`
  - Now uses `AgrarianGameState`.

## What This Enables Immediately

With simple Blueprint children and placeholder meshes, the project can now support:

- A player with replicated survival stats.
- A player inventory.
- Gathering resource nodes into inventory.
- Lighting/feeding a campfire with gathered wood.
- Warmth from the campfire affecting body temperature.
- Replicated day/night/weather state.
- Primitive shelter placement as a world actor once a placement UI is added.

## Required Editor Setup

These C++ classes need Blueprint/content setup inside Unreal:

- Create or update a player Blueprint derived from `AgrarianGameCharacter`.
- Assign the existing movement/look/jump input actions as before.
- Create an `IA_Interact` input action.
- Add `IA_Interact` to the active input mapping context, suggested key `E` / gamepad face button.
- Assign `IA_Interact` to the character's `InteractAction` property.
- Create Blueprint children:
  - `BP_AGR_Resource_Wood` from `AgrarianResourceNode`
  - `BP_AGR_Campfire` from `AgrarianCampfire`
  - `BP_AGR_PrimitiveShelter` from `AgrarianShelterActor`
- Assign placeholder meshes to each Blueprint.
- Place several resource nodes and at least one campfire in the test map.
- Confirm the active GameMode derives from `AgrarianGameGameMode`.

## First Playable Test

The first playable test should verify:

- Start the map as one player.
- Look at a resource node and press interact.
- Wood appears in the player's inventory component.
- Interact with the campfire.
- One wood is removed and the campfire lights.
- Standing near the lit campfire raises/maintains body temperature.
- Hunger and thirst decay over time.
- Server authority is respected in multiplayer.

## Known Limits

- No visual HUD has been added yet.
- No crafting UI has been added yet.
- No building placement flow has been added yet.
- No save/load persistence has been added yet.
- No wildlife has been added yet.
- No packaged build was compiled in this environment.

These are the next MVP tasks, not blockers for this foundation.
