# -*- mode: python -*-
# coding=utf-8

# DOOM build script
# TTimo <ttimo@idsoftware.com>
# http://scons.sourceforge.net

#*****************************************************************************
#                    The Dark Mod GPL Source Code
# 
# This file is part of the The Dark Mod Source Code, originally based 
# on the Doom 3 GPL Source Code as published in 2011.
# 
# The Dark Mod Source Code is free software: you can redistribute it 
# and/or modify it under the terms of the GNU General Public License as 
# published by the Free Software Foundation, either version 3 of the License, 
# or (at your option) any later version. For details, see LICENSE.TXT.
# 
# Project: The Dark Mod (http://www.thedarkmod.com/)
# 
#*****************************************************************************

import sys, os
import scons_utils

Import( 'GLOBALS' )
Import( GLOBALS )
Import( 'g_env_game' )

game_string = ' \
	Actor.cpp \
	AF.cpp \
	AFEntity.cpp \
	BrittleFracture.cpp \
	Camera.cpp \
	Entity.cpp \
	Emitter.cpp \
	FX.cpp \
	Game_local.cpp \
	GameEdit.cpp \
	IK.cpp \
	Item.cpp \
	Light.cpp \
	Misc.cpp \
	Moveable.cpp \
	Mover.cpp \
	Player.cpp \
	PlayerIcon.cpp \
	PlayerView.cpp \
	Projectile.cpp \
	Pvs.cpp \
	SecurityCamera.cpp \
	SearchManager.cpp \
	SmokeParticles.cpp \
	Sound.cpp \
	Target.cpp \
	Trigger.cpp \
	Weapon.cpp \
	WorldSpawn.cpp \
	ai/AAS.cpp \
	ai/AAS_debug.cpp \
	ai/AAS_pathing.cpp \
	ai/AAS_routing.cpp \
	ai/AI.cpp \
	ai/AI_events.cpp \
	ai/AI_pathing.cpp \
	ai/MoveState.cpp \
	ai/tdmAASFindEscape.cpp \
	anim/Anim.cpp \
	anim/Anim_Blend.cpp \
	anim/Anim_Import.cpp \
	anim/Anim_Testmodel.cpp \
	gamesys/Class.cpp \
	gamesys/DebugGraph.cpp \
	gamesys/Event.cpp \
	gamesys/SaveGame.cpp \
	gamesys/SysCmds.cpp \
	gamesys/SysCvar.cpp \
	gamesys/TypeInfo.cpp \
	physics/Clip.cpp \
	physics/Force.cpp \
	physics/Force_Constant.cpp \
	physics/Force_Drag.cpp \
	physics/Force_Field.cpp \
	physics/Force_Push.cpp \
	physics/Force_Spring.cpp \
	physics/Physics.cpp \
	physics/Physics_Actor.cpp \
	physics/Physics_AF.cpp \
	physics/Physics_Base.cpp \
	physics/Physics_Liquid.cpp \
	physics/Physics_Monster.cpp \
	physics/Physics_Parametric.cpp \
	physics/Physics_Player.cpp \
	physics/Physics_RigidBody.cpp \
	physics/Physics_Static.cpp \
	physics/Physics_StaticMulti.cpp \
	physics/Push.cpp \
	script/Script_Compiler.cpp \
	script/Script_Doc_Export.cpp \
	script/Script_Interpreter.cpp \
	script/Script_Program.cpp \
	script/Script_Thread.cpp'

darkmod_string = ' \
	AIComm_Message.cpp \
	AIVehicle.cpp \
	BinaryFrobMover.cpp \
	BloodMarker.cpp \
	ButtonStateTracker.cpp \
	DarkmodAASHidingSpotFinder.cpp \
	DarkModGlobals.cpp \
	darkmodHidingSpotTree.cpp \
	darkModLAS.cpp \
	decltdm_matinfo.cpp \
	declxdata.cpp \
	DifficultyManager.cpp \
	DifficultySettings.cpp \
	DownloadMenu.cpp \
	EscapePointEvaluator.cpp \
	EscapePointManager.cpp \
	Force_Grab.cpp \
	Func_Shooter.cpp \
	FrobDoor.cpp \
	FrobButton.cpp \
	FrobDoorHandle.cpp \
	FrobHandle.cpp \
	FrobHelper.cpp \
	FrobLever.cpp \
	FrobLock.cpp \
	FrobLockHandle.cpp \
	Grabber.cpp \
	HidingSpotSearchCollection.cpp \
	AbsenceMarker.cpp \
	Intersection.cpp \
	IniFile.cpp \
	LightGem.cpp \
	Liquid.cpp \
	MeleeWeapon.cpp \
	ModMenu.cpp \
	MultiStateMover.cpp \
	MultiStateMoverButton.cpp \
	MultiStateMoverPosition.cpp \
	OverlaySys.cpp \
	PositionWithinRangeFinder.cpp \
	ProjectileResult.cpp \
	PVSToAASMapping.cpp \
	PickableLock.cpp \
	Relations.cpp \
	SndProp.cpp \
	SndPropLoader.cpp \
	TimerManager.cpp \
	UserManager.cpp \
	Inventory/Category.cpp \
	Inventory/Cursor.cpp \
	Inventory/Inventory.cpp \
	Inventory/InventoryItem.cpp \
	Inventory/WeaponItem.cpp \
	Missions/Download.cpp \
	Missions/DownloadManager.cpp \
	Missions/MissionDB.cpp \
	Missions/ModInfo.cpp \
	Missions/ModInfoDecl.cpp \
	Missions/MissionManager.cpp \
	Objectives/CampaignStatistics.cpp \
	Objectives/MissionData.cpp \
	Objectives/MissionStatistics.cpp \
	Objectives/Objective.cpp \
	Objectives/ObjectiveComponent.cpp \
	Objectives/ObjectiveCondition.cpp \
	Objectives/ObjectiveLocation.cpp \
	Http/HttpConnection.cpp \
	Http/HttpRequest.cpp \
	Http/MessageTcp.cpp \
	gamesys/Automation.cpp \
	ZipLoader/ZipLoader.cpp \
	Shop/LootRuleSet.cpp \
	Shop/Shop.cpp \
	Shop/ShopItem.cpp \
	StimResponse/Response.cpp \
	StimResponse/ResponseEffect.cpp \
	StimResponse/Stim.cpp \
	StimResponse/StimResponse.cpp \
	StimResponse/StimResponseCollection.cpp \
	StimResponse/StimResponseTimer.cpp \
	ai/AreaManager.cpp \
	ai/CommunicationSubsystem.cpp \
	ai/DoorInfo.cpp \
	ai/Mind.cpp \
	ai/Memory.cpp \
	ai/MovementSubsystem.cpp \
	ai/Subsystem.cpp \
	ai/Conversation/ConversationSystem.cpp \
	ai/Conversation/Conversation.cpp \
	ai/Conversation/ConversationCommand.cpp \
	ai/EAS/EAS.cpp \
	ai/EAS/RouteInfo.cpp \
	ai/EAS/RouteNode.cpp \
	ai/States/AgitatedSearchingState.cpp \
	ai/States/AlertIdleState.cpp \
	ai/States/BlindedState.cpp \
	ai/States/CombatState.cpp \
	ai/States/AgitatedSearchingStateLanternBot.cpp \
	ai/States/ConversationState.cpp \
	ai/States/DeadState.cpp \
	ai/States/EmergeFromCoverState.cpp \
	ai/States/FailedKnockoutState.cpp \
	ai/States/FleeState.cpp \
	ai/States/FleeDoneState.cpp \
	ai/States/IdleSleepState.cpp \
	ai/States/IdleState.cpp \
	ai/States/KnockedOutState.cpp \
	ai/States/LostTrackOfEnemyState.cpp \
	ai/States/ObservantState.cpp \
	ai/States/PainState.cpp \
	ai/States/PocketPickedState.cpp \
	ai/States/SearchingState.cpp \
	ai/States/State.cpp \
	ai/States/StayInCoverState.cpp \
	ai/States/SuspiciousState.cpp \
	ai/States/SwitchOnLightState.cpp \
	ai/States/ExamineRopeState.cpp \
	ai/States/TakeCoverState.cpp \
	ai/States/UnreachableTargetState.cpp \
	ai/States/HitByMoveableState.cpp \
	ai/Tasks/ChaseEnemyRangedTask.cpp \
	ai/Tasks/ChaseEnemyTask.cpp \
	ai/Tasks/CombatTask.cpp \
	ai/Tasks/CommunicationTask.cpp \
	ai/Tasks/CommWaitTask.cpp \
	ai/Tasks/FleeTask.cpp \
	ai/Tasks/FollowActorTask.cpp \
	ai/Tasks/GreetingBarkTask.cpp \
	ai/Tasks/GuardSpotTask.cpp \
	ai/Tasks/HandleDoorTask.cpp \
	ai/Tasks/HandleElevatorTask.cpp \
	ai/Tasks/IdleAnimationTask.cpp \
	ai/Tasks/InteractionTask.cpp \
	ai/Tasks/InvestigateSpotTask.cpp \
	ai/Tasks/MeleeCombatTask.cpp \
	ai/Tasks/MoveToCoverTask.cpp \
	ai/Tasks/MoveToPositionTask.cpp \
	ai/Tasks/PathAnimTask.cpp \
	ai/Tasks/PathCornerTask.cpp \
	ai/Tasks/PathCycleAnimTask.cpp \
	ai/Tasks/PathHideTask.cpp \
	ai/Tasks/PathInteractTask.cpp \
	ai/Tasks/PathLookatTask.cpp \
	ai/Tasks/PathShowTask.cpp \
	ai/Tasks/PathSetMovetypeTask.cpp \
	ai/Tasks/PathSitTask.cpp \
	ai/Tasks/PathSleepTask.cpp \
	ai/Tasks/PathTask.cpp \
	ai/Tasks/PathTurnTask.cpp \
	ai/Tasks/PathWaitForTriggerTask.cpp \
	ai/Tasks/PathWaitTask.cpp \
	ai/Tasks/PathWakeupTask.cpp \
	ai/Tasks/PlayAnimationTask.cpp \
	ai/Tasks/AnimalPatrolTask.cpp \
	ai/Tasks/RandomHeadturnTask.cpp \
	ai/Tasks/RandomTurningTask.cpp \
	ai/Tasks/RangedCombatTask.cpp \
	ai/Tasks/RepeatedBarkTask.cpp \
	ai/Tasks/ResolveMovementBlockTask.cpp \
	ai/Tasks/SingleBarkTask.cpp \
	ai/Tasks/ScriptTask.cpp \
	ai/Tasks/ThrowObjectTask.cpp \
	ai/Tasks/WaitTask.cpp \
	ai/Tasks/WanderInLocationTask.cpp \
	SEED.cpp \
	ModelGenerator.cpp \
	ImageMapManager.cpp \
	LightController.cpp \
	StaticMulti.cpp \
	RawVector.cpp'

game_list = scons_utils.BuildList( '../../game', game_string )
darkmod_list = scons_utils.BuildList( '../../game/', darkmod_string )
full_list = game_list + darkmod_list

local_env = g_env_game.Clone()

ret = []
for f in full_list:
	ret += local_env.StaticObject( source = f )
Return( 'ret' )
