feat(module): Add DemoModule with audio playback functionality and module service integration

This commit is contained in:
extio-de
2025-12-24 21:32:15 +01:00
parent eb8d08f418
commit b07f957041
7 changed files with 87 additions and 22 deletions

View File

@@ -1,13 +1,17 @@
package de.extio.game_engine;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
import de.extio.game_engine.demo.DemoModule;
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class Main {
public static void main(final String[] args) {
@@ -28,4 +32,22 @@ public class Main {
builder.run(args);
}
@Configuration
@Conditional(de.extio.game_engine.Main.StandaloneConfig.StandaloneCondition.class)
static class StandaloneConfig {
@Bean
DemoModule demoModule() {
return new DemoModule();
}
static class StandaloneCondition implements Condition {
@Override
public boolean matches(final ConditionContext context, final AnnotatedTypeMetadata metadata) {
final String env = context.getEnvironment().getProperty("game-engine.env");
return "standalone".equals(env);
}
}
}
}

View File

@@ -0,0 +1,32 @@
package de.extio.game_engine.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import de.extio.game_engine.audio.AudioController;
import de.extio.game_engine.module.AbstractClientModule;
import de.extio.game_engine.resource.StaticResource;
public class DemoModule extends AbstractClientModule {
@Autowired
private AudioController audioController;
@Override
public void onLoad() {
this.getModuleService().changeActiveState(this.getClass(), true);
this.getModuleService().changeDisplayState(this.getClass(), true);
}
@Override
public void onShow() {
this.audioController.playMusic(null, List.of(new StaticResource(List.of("audio"), "race.ogg")), true);
}
@Override
public void onHide() {
this.audioController.stopMusic();
}
}