# Easy2D

Easy2D is a lightweight 2D engine wrapper built on top of pygame.
It gives you a clean scene/object architecture, timing helpers, camera controls,
tilemaps, and particles so building a game is faster and cleaner.

## Install

```bash
pip install easy2d
```

## Quick Start

```python
import pygame
import easy2d as e

class Player(e.Rect):
	def __init__(self):
		super().__init__(150, 150, 32, 32, color=(70, 230, 170), gravity=0.0, floor_y=None)
		self.speed = 240

	def update(self, game):
		dx = dy = 0
		if game.key_pressed(pygame.K_a):
			dx -= self.speed * game.delta_time
		if game.key_pressed(pygame.K_d):
			dx += self.speed * game.delta_time
		if game.key_pressed(pygame.K_w):
			dy -= self.speed * game.delta_time
		if game.key_pressed(pygame.K_s):
			dy += self.speed * game.delta_time
		self.move(dx, dy)

scene = e.Scene()
player = scene.add(Player())

game = e.Game("My Easy2D Game", 960, 540)
game.set_scene(scene)
game.run()
```

## Core Concepts

- Game loop with delta-time (`game.delta_time`) and FPS tracking.
- Input helpers (`key_pressed`, `key_just_pressed`, mouse helpers).
- Scene lifecycle (`on_enter`, `on_exit`) and event forwarding.
- GameObject lifecycle (`on_added`, `on_removed`, `destroy`).
- Camera utilities (`follow`, `world_to_screen`, `screen_to_world`).
- Built-in `Rect`, `ParticleSystem`, and `TileMap`.

## Built-in Objects

- `Rect`: Basic drawable rectangle with optional gravity and simple collision helpers.
- `ParticleSystem`: Configurable particles with speed/life/size/gravity ranges.
- `TileMap`: Color tile grid with fast visible-tile drawing and palette loading.