# Copyright (C) 2010 Deveaux Duncan
# 
# This file is part of Hikou no mizu.
# 
# Hikou no mizu 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.
# 
# Hikou no mizu is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Hikou no mizu.  If not, see <http://www.gnu.org/licenses/>.

#Phony targets
.PHONY : clean, mrproper

#Implicit rules deactivation
.SUFFIXES :

#Main executable creation : "hikouNoMizu"
all : main.o Animation.o AnimationManager.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o Player.o Condition.o ImageEngine.o GameEngine.o GraphicsEngine.o PhysicsEngine.o FightInterface.o MainMenu.o CharactersMenu.o Fight.o Button.o TextButton.o ImageButton.o Menu.o TextMenu.o
	g++ -Wl,-subsystem,windows -o ../hikouNoMizu main.o Animation.o AnimationManager.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o Player.o Condition.o ImageEngine.o GameEngine.o GraphicsEngine.o PhysicsEngine.o FightInterface.o MainMenu.o CharactersMenu.o Fight.o Button.o TextButton.o ImageButton.o Menu.o TextMenu.o -L"C:\Program Files\SFML\lib" -lsfml-graphics -lsfml-window -lsfml-system

main.o : main.cpp Engines/GameEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c main.cpp -o main.o

Animation.o : Animation/Animation.cpp Animation/Animation.hpp Engines/Graphics/ImageEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Animation/Animation.cpp -o Animation.o

AnimationManager.o : Animation/AnimationManager.cpp Animation/AnimationManager.hpp Animation/Animation.hpp extlibs/TinyXML/tinyxml.h Engines/Graphics/GraphicsEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Animation/AnimationManager.cpp -o AnimationManager.o

ImageEngine.o : Engines/Graphics/ImageEngine.cpp Engines/Graphics/ImageEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Engines/Graphics/ImageEngine.cpp -o ImageEngine.o

tinystr.o : extlibs/TinyXML/tinystr.cpp extlibs/TinyXML/tinystr.h
	g++ -I. -I"C:/Program Files/SFML/include" -c extlibs/TinyXML/tinystr.cpp -o tinystr.o

tinyxml.o : extlibs/TinyXML/tinyxml.cpp extlibs/TinyXML/tinyxml.h extlibs/TinyXML/tinystr.h
	g++ -I. -I"C:/Program Files/SFML/include" -c extlibs/TinyXML/tinyxml.cpp -o tinyxml.o

tinyxmlerror.o : extlibs/TinyXML/tinyxmlerror.cpp extlibs/TinyXML/tinyxml.h
	g++ -I. -I"C:/Program Files/SFML/include" -c extlibs/TinyXML/tinyxmlerror.cpp -o tinyxmlerror.o

tinyxmlparser.o : extlibs/TinyXML/tinyxmlparser.cpp extlibs/TinyXML/tinyxml.h
	g++ -I. -I"C:/Program Files/SFML/include" -c extlibs/TinyXML/tinyxmlparser.cpp -o tinyxmlparser.o

Player.o : Player/Player.cpp Player/Player.hpp Animation/AnimationManager.hpp Engines/Graphics/GraphicsEngine.hpp Engines/Physics/PhysicsObject.hpp Engines/Physics/PhysicsEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Player/Player.cpp -o Player.o

Condition.o : Player/Condition.cpp Player/Condition.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Player/Condition.cpp -o Condition.o

GameEngine.o : Engines/GameEngine.cpp Engines/GameEngine.hpp Screens/MainMenu/MainMenu.hpp Screens/CharactersMenu/CharactersMenu.hpp Screens/Fight/Fight.hpp Screens/Screen.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Engines/GameEngine.cpp -o GameEngine.o

GraphicsEngine.o : Engines/Graphics/GraphicsEngine.cpp Engines/Graphics/GraphicsEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Engines/Graphics/GraphicsEngine.cpp -o GraphicsEngine.o

PhysicsEngine.o : Engines/Physics/PhysicsEngine.cpp Engines/Physics/PhysicsEngine.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Engines/Physics/PhysicsEngine.cpp -o PhysicsEngine.o

FightInterface.o : GUI/Complex/FightInterface.cpp GUI/Complex/FightInterface.hpp Engines/Graphics/GraphicsEngine.hpp Player/Player.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Complex/FightInterface.cpp -o FightInterface.o

##Screens
MainMenu.o : Screens/MainMenu/MainMenu.cpp Screens/MainMenu/MainMenu.hpp Screens/Screen.hpp Engines/GameEngine.hpp GUI/Complex/Menu/TextMenu.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Screens/MainMenu/MainMenu.cpp -o MainMenu.o

CharactersMenu.o : Screens/CharactersMenu/CharactersMenu.cpp Screens/CharactersMenu/CharactersMenu.hpp Screens/Screen.hpp Engines/GameEngine.hpp GUI/Complex/Menu/TextMenu.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Screens/CharactersMenu/CharactersMenu.cpp -o CharactersMenu.o

Fight.o : Screens/Fight/Fight.cpp Screens/Fight/Fight.hpp Screens/Screen.hpp Engines/GameEngine.hpp Player/Player.hpp Engines/Graphics/GraphicsEngine.hpp Engines/Physics/PhysicsEngine.hpp GUI/Complex/FightInterface.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c Screens/Fight/Fight.cpp -o Fight.o

##GUI
#Basic
Button.o : GUI/Basic/Buttons/Button.cpp GUI/Basic/Buttons/Button.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Basic/Buttons/Button.cpp -o Button.o

TextButton.o : GUI/Basic/Buttons/TextButton.cpp GUI/Basic/Buttons/TextButton.hpp GUI/Basic/Buttons/Button.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Basic/Buttons/TextButton.cpp -o TextButton.o

ImageButton.o : GUI/Basic/Buttons/ImageButton.cpp GUI/Basic/Buttons/ImageButton.hpp GUI/Basic/Buttons/Button.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Basic/Buttons/ImageButton.cpp -o ImageButton.o

#Complex
Menu.o : GUI/Complex/Menu/Menu.cpp GUI/Complex/Menu/Menu.hpp extlibs/TinyXML/tinyxml.h
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Complex/Menu/Menu.cpp -o Menu.o

TextMenu.o : GUI/Complex/Menu/TextMenu.cpp GUI/Complex/Menu/TextMenu.hpp GUI/Complex/Menu/Menu.hpp GUI/Basic/Buttons/TextButton.hpp
	g++ -I. -I"C:/Program Files/SFML/include" -c GUI/Complex/Menu/TextMenu.cpp -o TextMenu.o

#Temporary files deletion
clean :
	del *.o

#Temporary files and main executable deletion
mrproper : clean
	del ../hikouNoMizu