# Variables
SRC_DIR = src
BIN_DIR = bin
RES_DIR = $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/resources
JAR_FILE = $(BIN_DIR)/DorfJavaTik.jar
JAVAC = javac
JAVA = java
JAVADOC = javadoc
MAIN = com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage

# Compilation flags
JFLAGS = -d $(BIN_DIR) -encoding UTF-8 -sourcepath $(SRC_DIR)
JARFLAGS = cfe

# Default rule
all: clean compile copy-resources jar

# Rule to compile the java files
compile:
	@echo "Compilation des fichiers source java..."
	@if not exist "$(BIN_DIR)" mkdir $(BIN_DIR)
	@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/controller/*.java
	@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/model/*.java
	@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/util/*.java
	@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/view/*.java

# Rule to copy resources
copy-resources:
	@echo "Copying resources..."
	@xcopy /Y /I "$(RES_DIR)" "$(BIN_DIR)\com\charpentierbalocchi\dorfjavatik\resources\"

# Rule to create the jar file
jar: compile
	@echo "Création du fichier .jar ..."
	@jar $(JARFLAGS) $(JAR_FILE) $(MAIN) -C $(BIN_DIR) .

# Rule to run the application
run: jar
	@echo "Lancement du jeu..."
	@$(JAVA) -jar $(JAR_FILE)

# Rule to generate Javadoc
javadoc:
	@echo "Generating Javadoc..."
	@$(JAVADOC) -d $(BIN_DIR)/docs -sourcepath $(SRC_DIR) -subpackages com.charpentierbalocchi.dorfjavatik

# Rule to clean the project
clean:
	@echo "Nettoyage en cours..."
	@if exist "$(BIN_DIR)" rd /s /q $(BIN_DIR)

.PHONY: all compile run jar javadoc clean copy-resources