/*	verifyOXP.plist
	
	Various things used internally by the OXP verifier.
*/

{
	stages =
	(
		OOCheckRequiresPListVerifierStage,
		OOCheckDemoShipsPListVerifierStage,
		OOCheckEquipmentPListVerifierStage,
		OOTextureVerifierStage,
		OOCheckShipDataPListVerifierStage,
		OOAIStateMachineVerifierStage
	);
	excludeStages =
	(
		/*	Add stages here to stop them from being used. For instance, to
			skip the texture verification, create a verifyOXP.plist file in
			your AddOns folder with the following content:
				{ excludeStages = ( "OOTextureVerifierStage" ); }
		*/
	);
	
	logControlOverride =
	{
		// Note: only yes and no here, no inherit or $metaclass
		dataCache.rebuild.pathsChanged = no;
		
		verifyOXP = yes;
		verifyOXP.stage = yes;
		verifyOXP.verbose = no;
	};
	logShowMessageClassOverride = no;
	
	knownRootDirectories =
	(
		// Folder names that are meaningful inside an OXP (or Resources)
		"AIs",
		"Config",
		"Images",
		"Models",
		"Music",
		"Schemata",
		"Scripts",
		"Shaders",
		"Sounds",
		"Textures"
	);
	
	knownFiles =
	{
		// Files the game uses directly.
		"Config" =
		(
			"autoAImap.plist",
			"characters.plist",
			"commodities.plist",
			"customsounds.plist",
			"demoships.plist",
			"descriptions.plist",
			"equipment.plist",
			"hud.plist",
			"illegal_goods.plist",
			"keyconfig.plist",
			"material-defaults.plist",
			"missiontext.plist",
			"nebulatextures.plist",
			"planetinfo.plist",
			"requires.plist",
			"script.plist",
			"script.js",
			"shipdata.plist",
			"shipyard.plist",
			"speech_pronunciation_guide.plist",
			"startextures.plist",
			"world-scripts.plist"
		);
		"Sounds" =
		(
			"afterburner1.ogg",
			"witchabort.ogg",
			"warning.ogg",
			"trumblesqueal.ogg",
			"trumble.ogg",
			"sell.ogg",
			"hit.ogg",
			"guiclick.ogg",
			"ecm.ogg",
			"buy.ogg",
			"breakpattern.ogg",
			"boop.ogg",
			"bigbang.ogg",
			"beep.ogg",
			"afterburner2.ogg",
			"scoop.ogg",
			"missile.ogg",
			"laserhits.ogg",
			"laser.ogg",
			"hullbang.ogg"
		);
		"Music" =
		(
			"BlueDanube.ogg",
			"OoliteTheme.ogg"
		);
		"Textures" =
		(
			"blur256.png",
			"asciitext.png",
			"trumblekit.png"
		);
	};
	
	junkFiles =
	(
		// Files generated by operating systems and tools which can be ignored.
		".DS_Store",
		"Thumbs.db",
		"zipinfo.txt"
	);
	
	skipDirectories =
	(
		// Directories to silently skip (version control systems make these).
		".svn",
		"CVS"
	);
	
	readMeNames =
	{
		stems =
		(
			"readme",
			"read me",
			"read_me",
			"read me now",
			"read me first",
			"readme!",
			"read me!",
			"read_me!",
			"read me now!",
			"read me first!"
		);
		extensions =
		(
			"",
			".txt",
			".html",
			".htm",
			".rtf",
			".doc",
			".1st"
		);
	};
	
	requiresPListSupportedKeys =
	(
		"version",
		"max_version"
	);
	
	debugGraphvizTempate =
	{
		/*	Bits needed to generate graphviz code describing verifier stage
			dependency relationships. This is generated (and written to the
			current working directory) if the preference
			"oxp-verifier-dump-debug-graphviz" is set to YES.
		*/
		preamble = "// OXPVerifier stage dependencies:\n\ndigraph stagedeps\n{\n\tgraph [charset=\"UTF-8\", label=\"OXPVerifier dependency graph\\n%@\", labelloc=t, labeljust=l];\n\tnode [shape=box];\n\t\n\tstart [label=Start shape=Mdiamond];\n\tend [label=End shape=Msquare];\n\t\n";
		node = "\tst%p [label=\"%@\\n“%@”\"];\n";
		
		forwardPreamble = "\t\n\t// Forward arcs, from dependencies to dependents.\n\t// These indicate acceptable execution orders.\n\tedge [arrowhead=normal, color=blue];\n";
		forwardArc = "\tst%p -> st%p;\n";
		startArc = "\tstart -> st%p;\n";
		
		backwardPreamble = "\t\n\t// Backward arcs, from dependents to dependencies.\n\t// There should be one backwards arc for each forward arc.\n\tedge [arrowhead=dot, color=green, constraint=false];\n";
		backwardArc = "\tst%p -> st%p;\n";
		endArc = "\tst%p -> end [constraint=true, arrowhead=none, arrowtail=dot];\n";
		
		postamble = "}\n";
	};
	
	shipdataPListSettings =
	{
		knownShipKeys =
		(
			"like_ship",
			"max_flight_speed",
			"max_flight_roll",
			"max_flight_pitch",
			"max_flight_yaw",
			"thrust",
			"accuracy",
			"max_energy",
			"energy_recharge_rate",
			"forward_weapon_type",
			"aft_weapon_type",
			"weapon_energy",
			"scanner_range",
			"missiles",
			"has_ecm",
			"has_scoop",
			"has_escape_pod",
			"has_energy_bomb",
			"has_fuel_injection",
			"has_cloaking_device",
			"has_military_jammer",
			"has_military_scanner_filter",
			"fragment_chance",
			"has_shield_booster",
			"has_shield_enhancer",
			"fuel",
			"bounty",
			"ai_type",
			"max_cargo",
			"likely_cargo",
			"extra_cargo",
			"cargo_carried",
			"cargo_type",
			"model",
			"materials",
			"shaders",
			"smooth",
			"density",
			"name",
			"display_name",
			"roles",
			"exhaust",
			"is_hulk",
			"subentities",
			"frangible",
			"laser_color",
			"scanClass",
			"launch_actions",
			"script_actions",
			"death_actions",
			"setup_actions",
			"escorts",
			"beacon",
			"rotational_velocity",
			"track_contacts",
			"weapon_position_forward",
			"weapon_position_aft",
			"weapon_position_port",
			"weapon_position_starboard",
			"weapon_offset_x",
			"scoop_position",
			"heat_insulation",
			"pilot",
			"unpiloted",
			"escort-role",
			"escort-ship",
			"cargo_carried",
			"missile_launch_position",
			"missile_role",
			"escape_pod_model",
			"aft_eject_position",
			"auto_ai",
			"script",
			"conditions",
			"script_info",
			"is_submunition",
			"isCarrier",
			"no_boulders",
			"hyperspace_motor_spin_time",
			"throw_sparks",
			"cloak_passive"
		);
		knownStationKeys =
		(
			"rotating",
			"defense_ship",
			"defense_ship_role",
			"has_npc_traffic",
			"hasShipyard",
			"port_radius",
			"port_dimensions",
			"equivalent_tech_level",
			"max_scavengers",
			"max_defense_ships",
			"max_police",
			"equipment_price_factor",
			"requires_docking_clearance"
		);
		knownPlayerKeys =
		(
			"extra_equipment",
			"hud",
			"view_position_forward",
			"view_position_aft",
			"view_position_port",
			"view_position_starboard",
			"custom_views",
			"max_missiles"
		);
	};
}
