Projectdd/settings.py

235 lines
4.7 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
# Tiles
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},
# ORES
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 noise settings for smoother terrain
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 settings
HOTBAR_VISIBLE = True
HOTBAR_SLOT_COUNT = 8
# ==========================================
# COMBAT SETTINGS
# ==========================================
# Weapon stats
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 # pixels
ATTACK_COOLDOWN = 0.5 # seconds
# ==========================================
# BLOCK BREAKING / PLACING
# ==========================================
BREAK_RANGE = 5 # tiles
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_DAMAGE = 10
ENEMY_HEALTH = 50
ENEMY_GRAVITY = 2200 # Enemies affected by gravity
ENEMY_KNOCKBACK_RESISTANCE = 0.8 # How much knockback affects enemies
# ==========================================
# PHYSICS SETTINGS
# ==========================================
TERMINAL_VELOCITY = 1200
COLLISION_STEPS = 4
# ==========================================
# LIGHTING (for future use)
# ==========================================
ENABLE_LIGHTING = False
LIGHT_RADIUS = 5
# ==========================================
# DEBUG SETTINGS
# ==========================================
DEBUG_MODE = True
SHOW_FPS = True
SHOW_COLLIDERS = False
SHOW_CHUNK_BORDERS = False
# ==========================================
# DEBUG SETTINGS
# ==========================================
DEBUG_MODE = True
SHOW_FPS = True
SHOW_COLLIDERS = False
SHOW_CHUNK_BORDERS = False