186 lines
4.2 KiB
Python
186 lines
4.2 KiB
Python
# ==========================================
|
|
# WINDOW / DISPLAY SETTINGS
|
|
# ==========================================
|
|
|
|
SCREEN_WIDTH = 1280
|
|
SCREEN_HEIGHT = 720
|
|
FPS = 60
|
|
VSYNC = True
|
|
FULLSCREEN = False
|
|
|
|
GAME_TITLE = "Terraria Clone"
|
|
|
|
BACKGROUND_COLOR = (135, 206, 235) # Sky blue
|
|
|
|
# ==========================================
|
|
# TILE SETTINGS
|
|
# ==========================================
|
|
|
|
TILE_SIZE = 32
|
|
CHUNK_SIZE = 16 # 16x16 tiles per chunk
|
|
RENDER_DISTANCE = 3 # how many chunks visible around player
|
|
|
|
# Tile IDs
|
|
AIR = 0
|
|
DIRT = 1
|
|
GRASS = 2
|
|
STONE = 3
|
|
WOOD = 4
|
|
LEAVES = 5
|
|
IRON_ORE = 6
|
|
GOLD_ORE = 7
|
|
COPPER_ORE = 8
|
|
COAL_ORE = 9
|
|
|
|
# Items
|
|
ITEM_WOOD = 100
|
|
ITEM_STONE = 101
|
|
ITEM_IRON = 102
|
|
ITEM_GOLD = 103
|
|
ITEM_COPPER = 104
|
|
ITEM_COAL = 105
|
|
|
|
# Weapons
|
|
ITEM_IRON_SWORD = 200
|
|
ITEM_WOODEN_SWORD = 201
|
|
ITEM_GOLD_SWORD = 202
|
|
|
|
# Tile properties
|
|
TILE_PROPERTIES = {
|
|
AIR: {"solid": False, "color": (0, 0, 0), "drop": None},
|
|
DIRT: {"solid": True, "color": (139, 69, 19), "drop": ITEM_STONE},
|
|
GRASS: {"solid": True, "color": (34, 177, 76), "drop": ITEM_STONE},
|
|
STONE: {"solid": True, "color": (100, 100, 100), "drop": ITEM_STONE},
|
|
WOOD: {"solid": True, "color": (160, 82, 45), "drop": ITEM_WOOD},
|
|
LEAVES: {"solid": False, "color": (34, 139, 34), "drop": None},
|
|
IRON_ORE: {"solid": True, "color": (180, 180, 180), "drop": ITEM_IRON},
|
|
GOLD_ORE: {"solid": True, "color": (255, 215, 0), "drop": ITEM_GOLD},
|
|
COPPER_ORE: {"solid": True, "color": (210, 120, 60), "drop": ITEM_COPPER},
|
|
COAL_ORE: {"solid": True, "color": (40, 40, 40), "drop": ITEM_COAL},
|
|
}
|
|
|
|
# ==========================================
|
|
# WORLD GENERATION
|
|
# ==========================================
|
|
|
|
WORLD_WIDTH = 200 # in tiles
|
|
WORLD_HEIGHT = 100 # in tiles
|
|
|
|
SEED = 42
|
|
|
|
SURFACE_LEVEL = 40
|
|
CAVE_THRESHOLD = 0.4
|
|
ORE_THRESHOLD = 0.75
|
|
|
|
NOISE_SCALE = 0.05
|
|
OCTAVES = 4
|
|
|
|
PERLIN_SCALE = 80.0
|
|
PERLIN_OCTAVES = 6
|
|
PERLIN_PERSISTENCE = 0.5
|
|
PERLIN_LACUNARITY = 2.0
|
|
|
|
# ==========================================
|
|
# PLAYER SETTINGS
|
|
# ==========================================
|
|
|
|
PLAYER_WIDTH = 28
|
|
PLAYER_HEIGHT = 48
|
|
|
|
PLAYER_SPEED = 250
|
|
PLAYER_ACCELERATION = 2000
|
|
PLAYER_FRICTION = -0.15
|
|
|
|
GRAVITY = 2200
|
|
MAX_FALL_SPEED = 1000
|
|
|
|
JUMP_FORCE = -700
|
|
DOUBLE_JUMP = False
|
|
|
|
MAX_HEALTH = 100
|
|
|
|
# ==========================================
|
|
# CAMERA SETTINGS
|
|
# ==========================================
|
|
|
|
CAMERA_SMOOTHING = 0.1
|
|
CAMERA_OFFSET_Y = -100
|
|
|
|
# ==========================================
|
|
# INVENTORY SETTINGS
|
|
# ==========================================
|
|
|
|
INVENTORY_SIZE = 40
|
|
HOTBAR_SIZE = 10
|
|
STACK_LIMIT = 999
|
|
|
|
INVENTORY_SLOT_SIZE = 40
|
|
INVENTORY_PADDING = 4
|
|
|
|
HOTBAR_VISIBLE = True
|
|
HOTBAR_SLOT_COUNT = 8
|
|
|
|
# ==========================================
|
|
# COMBAT SETTINGS
|
|
# ==========================================
|
|
|
|
WEAPON_STATS = {
|
|
ITEM_WOODEN_SWORD: {"name": "Wooden Sword", "damage": 8, "cooldown": 0.6, "knockback": 300, "color": (160, 82, 45)},
|
|
ITEM_IRON_SWORD: {"name": "Iron Sword", "damage": 15, "cooldown": 0.8, "knockback": 400, "color": (180, 180, 180)},
|
|
ITEM_GOLD_SWORD: {"name": "Gold Sword", "damage": 20, "cooldown": 1.0, "knockback": 500, "color": (255, 215, 0)},
|
|
}
|
|
|
|
ATTACK_RANGE = 60
|
|
ATTACK_COOLDOWN = 0.5
|
|
|
|
# ==========================================
|
|
# BLOCK BREAKING / PLACING
|
|
# ==========================================
|
|
|
|
BREAK_RANGE = 5
|
|
BREAK_TIME = {
|
|
DIRT: 0.3, GRASS: 0.3, STONE: 0.8,
|
|
WOOD: 0.5, IRON_ORE: 1.2, GOLD_ORE: 1.5,
|
|
COPPER_ORE: 1.0, COAL_ORE: 0.9,
|
|
}
|
|
|
|
PLACE_RANGE = 5
|
|
|
|
# ==========================================
|
|
# ENEMY SETTINGS
|
|
# ==========================================
|
|
|
|
MAX_ENEMIES = 10
|
|
ENEMY_SPAWN_RATE = 5 # seconds
|
|
ENEMY_SPEED = 100
|
|
ENEMY_HEALTH = 50
|
|
ENEMY_GRAVITY = 2200
|
|
ENEMY_KNOCKBACK_RESISTANCE = 0.8
|
|
|
|
# Added missing constants for combat
|
|
ENEMY_ATTACK_DAMAGE = 10
|
|
ENEMY_ATTACK_RANGE = 50
|
|
|
|
# ==========================================
|
|
# PHYSICS SETTINGS
|
|
# ==========================================
|
|
|
|
TERMINAL_VELOCITY = 1200
|
|
COLLISION_STEPS = 4
|
|
|
|
# ==========================================
|
|
# LIGHTING
|
|
# ==========================================
|
|
|
|
ENABLE_LIGHTING = False
|
|
LIGHT_RADIUS = 5
|
|
|
|
# ==========================================
|
|
# DEBUG SETTINGS
|
|
# ==========================================
|
|
|
|
DEBUG_MODE = True
|
|
SHOW_FPS = True
|
|
SHOW_COLLIDERS = False
|
|
SHOW_CHUNK_BORDERS = False
|