terra-wld 0.3.0

Terraria world parser
Documentation
use crate::{
	tile::TileType,
	world::{AnglerQuest, Difficulty, Evil, MoonPhase, MoonType, World},
	world_manifest::WorldManifest,
};
use bounded_vector::bvec;
use grid::Grid;
use rand::random;
use std::collections::{HashMap, HashSet};
use terra_types::{Value, Vec2, XAxis};
use time::{Duration, Time};

impl Default for World {
	fn default() -> Self {
		const SIZE_X: i32 = 0;
		const SIZE_Y: i32 = 0;
		Self {
			name: "world".to_owned(),
			id: random(),
			uuid: None,
			times_saved: 0,
			is_favorite: false,
			left_border: XAxis::new(0),
			right_border: XAxis::new(SIZE_X * 16),
			top_border: XAxis::new(0),
			bottom_border: XAxis::new(SIZE_Y * 16),
			seed: None,
			generator_version: None,
			moon_type: MoonType::Normal,
			difficulty: Difficulty::Normal,
			is_drunk_world: false,
			is_for_the_worthy_world: false,
			is_tenth_anniversary_world: false,
			is_dont_starve_world: false,
			is_not_the_bees_world: false,
			is_remix_world: false,
			is_no_traps_world: false,
			is_zenith_world: false,
			is_blood_moon: false,
			is_solar_eclipse: false,
			is_eye_of_cthulhu_downed: false,
			is_eater_of_worlds_or_brain_of_cthulhu_downed: false,
			is_skeleton_downed: false,
			is_queen_bee_downed: false,
			is_destroyer_downed: false,
			is_twins_downed: false,
			is_skeletron_prime_downed: false,
			is_any_mechanical_boss_downed: false,
			is_plantera_downed: false,
			is_golem_downed: false,
			is_king_slime_downed: false,
			is_goblin_tinkerer_saved: false,
			is_wizard_saved: false,
			is_mechanic_saved: false,
			is_stylist_saved: false,
			is_clown_downed: false,
			is_frost_legion_downed: false,
			is_pirate_invasion_downed: false,
			is_meteor_to_spawn: false,
			is_after_party_of_doom: false,
			is_hardmode: false,
			creation_time: None,
			angler_quest: AnglerQuest::Batfish,
			cultist_delay: Duration::ZERO,
			destroyed_altar_count: 0,
			is_shadow_orb_or_crimson_heart_destroyed: false,
			destroyed_shadow_orb_or_crimson_heart_count: 0,
			dungeon: Vec2::new(0, 0),
			evil: Evil::Crimson,
			invasion: None,
			is_angler_saved: false,
			is_golfer_saved: false,
			is_tax_collector_saved: false,
			moon_phase: MoonPhase::FullMoon,
			players_finished_angler_quest_today: vec![],
			rain: None,
			slime_rain_time: Duration::ZERO,
			spawn: Vec2::new(SIZE_X / 2, SIZE_Y / 2),
			sundial_cooldown: 0.into(),
			tier_1_hardmode_ore: Some(TileType::Cobalt),
			tier_2_hardmode_ore: Some(TileType::Mythril),
			tier_3_hardmode_ore: Some(TileType::Adamantite),
			tier_1_ore: Some(TileType::Copper),
			tier_2_ore: Some(TileType::Iron),
			tier_3_ore: Some(TileType::Silver),
			tier_4_ore: Some(TileType::Gold),
			time: Time::from_hms(7, 30, 0).expect("Valid hour"),
			bestiary: HashMap::new(),
			chests: bvec![],
			difficulty_power: 1.0,
			homes: vec![],
			is_ancient_cultist_downed: false,
			is_angler_shimmered: false,
			is_arms_dealer_shimmered: false,
			is_arms_dealer_spawn_unlocked: false,
			is_bartender_saved: false,
			is_bartender_shimmered: false,
			is_blue_slime_spawn_unlocked: false,
			is_bunny_bought: false,
			is_cat_bought: false,
			is_clothier_shimmered: false,
			is_combat_book_used: false,
			is_combat_book_volume_two_used: false,
			is_copper_slime_spawn_unlocked: false,
			is_cyborg_shimmered: false,
			is_dd2_t1_downed: false,
			is_dd2_t2_downed: false,
			is_dd2_t3_downed: false,
			is_deerclops_downed: false,
			is_demolitionist_shimmered: false,
			is_demolitionist_spawn_unlocked: false,
			is_dog_bought: false,
			is_dryad_shimmered: false,
			is_dye_trader_shimmered: false,
			is_dye_trader_spawn_unlocked: false,
			is_empress_of_light_downed: false,
			is_everscream_downed: false,
			is_fishron_downed: false,
			is_goblin_army_downed: false,
			is_goblin_tinkerer_shimmered: false,
			is_golfer_shimmered: false,
			is_green_slime_spawn_unlocked: false,
			is_guide_shimmered: false,
			is_ice_queen_downed: false,
			is_lunar_apocalypse: false,
			is_martian_madness_downed: false,
			is_mechanic_shimmered: false,
			is_merchant_shimmered: false,
			is_merchant_spawn_unlocked: false,
			is_moondial_forward_time_active: false,
			is_moonlord_downed: false,
			is_mourning_wood_downed: false,
			is_nebula_pillar_active: false,
			is_nebula_pillar_downed: false,
			is_nurse_shimmered: false,
			is_nurse_spawn_unlocked: false,
			is_old_man_shimmered: false,
			is_old_slime_spawn_unlocked: false,
			is_painter_shimmered: false,
			is_party_girl_shimmered: false,
			is_party_girl_spawn_unlocked: false,
			is_peddlers_satchel_used: false,
			is_pirate_shimmered: false,
			is_princess_shimmered: false,
			is_princess_spawn_unlocked: false,
			is_pumpking_downed: false,
			is_purple_slime_spawn_unlocked: false,
			is_queen_slime_downed: false,
			is_rain_frozen: false,
			is_rainbow_slime_spawn_unlocked: false,
			is_santa_claus_shimmered: false,
			is_santa_nk1_downed: false,
			is_skeleton_merchant_shimmered: false,
			is_solar_pillar_active: false,
			is_solar_pillar_downed: false,
			is_stardust_pillar_active: false,
			is_stardust_pillar_downed: false,
			is_steampunker_shimmered: false,
			is_stylist_shimmered: false,
			is_sundial_forward_time_active: false,
			is_tax_collector_shimmered: false,
			is_town_slime_old_shimmered: false,
			is_time_frozen: false,
			is_town_bunny_shimmered: false,
			is_town_cat_shimmered: false,
			is_town_dog_shimmered: false,
			is_town_slime_blue_shimmered: false,
			is_town_slime_copper_shimmered: false,
			is_town_slime_green_shimmered: false,
			is_town_slime_purple_shimmered: false,
			is_town_slime_rainbow_shimmered: false,
			is_town_slime_red_shimmered: false,
			is_town_slime_yellow_shimmered: false,
			is_travelling_merchant_shimmered: false,
			is_truffle_shimmered: false,
			is_truffle_spawn_unlocked: false,
			is_vortex_pillar_active: false,
			is_vortex_pillar_downed: false,
			is_wind_frozen: false,
			is_witch_doctor_shimmered: false,
			is_wizard_shimmered: false,
			is_yellow_slime_spawn_unlocked: false,
			is_zoologist_shimmered: false,
			is_red_slime_unlocked: false,
			moondial_cooldown: Value::new(0),
			entities: bvec![],
			signs: bvec![],
			tile_entities: vec![],
			time_rate_power: 1.0,
			weighted_pressure_plates: HashSet::new(),
			tiles: Grid::new_with_order(0, 0, grid::Order::ColumnMajor),
			cave_back_style_changes: [0.into(); 3],
			cave_back_styles: [0; 4],
			tree_style_changes: [0.into(); 3],
			tree_styles: [0; 4],
			tree_backgrounds: [0; 3],
			tree_tops_corruption: 0,
			tree_tops_crimson: 0,
			tree_tops_desert: 0,
			tree_tops_forest: [0; 4],
			tree_tops_glowing_mushroom: 0,
			tree_tops_hallow: 0,
			tree_tops_jungle: 0,
			tree_tops_ocean: 0,
			tree_tops_snow: 0,
			tree_tops_underworld: 0,
			is_xmas_forced_today: false,
			ice_cave_background: 0,
			invasion_cooldown: 0.into(),
			is_hallowen_forced_today: false,
			cavern_level: 0.0.into(),
			cloud_bg_active: 0,
			clouds_count: 0,
			corruption_background: 0,
			crimson_background: 0,
			party_cooldown: Duration::ZERO,
			is_next_night_lantern_night: false,
			jungle_cave_background: 0,
			desert_background: 0,
			hell_background: 0,
			hallow_background: 0,
			snow_background: 0,
			ocean_background: 0,
			forest_background: 0,
			jungle_background: 0,
			mushroom_background: 0,
			underworld_background: 0,
			lantern_night: None,
			party: None,
			lantern_night_cooldown: 0.into(),
			sandstorm: None,
			surface_level: 0.0.into(),
			wind: 0.0.into(),
			is_biome_spread_disabled: false,
			kill_count: HashMap::new(),
			coin_rain_remaining: 0,
			meteor_shower_remaining: 0,
			is_dual_dungeon_seed: false,
			is_hallowen_forced_forever: false,
			is_infected_seed: false,
			is_skyblock_world: false,
			is_vampire_seed: false,
			is_xmas_forced_forever: false,
			last_played: None,
			manifest: WorldManifest::default(),
			team_spawns: None,
			claimable_banners: HashMap::new(),
		}
	}
}