Package org.menacheri.zombie.game

Source Code of org.menacheri.zombie.game.ZombieSpringConfig

package org.menacheri.zombie.game;

import java.util.HashMap;
import java.util.Map;

import org.menacheri.jetserver.app.Game;
import org.menacheri.jetserver.app.GameRoom;
import org.menacheri.jetserver.app.impl.SimpleGame;
import org.menacheri.jetserver.app.impl.GameRoomSession.GameRoomSessionBuilder;
import org.menacheri.jetserver.protocols.Protocol;
import org.menacheri.jetserver.service.LookupService;
import org.menacheri.jetserver.service.impl.SimpleLookupService;
import org.menacheri.zombie.domain.Defender;
import org.menacheri.zombie.domain.World;
import org.menacheri.zombie.domain.Zombie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

/**
* This class contains the spring configuration for the jetserver library user.
* The only bean that should compulsorily be declared is lookupService bean.
* Otherwise the program will terminate with a context load error from spring
* framework. The other beans declared can also be created using **new**
* operator as per programmer convenience.
*
* @author Abraham Menacherry.
*
*/
@Configuration
@ImportResource("classpath:/beans/beans.xml")
public class ZombieSpringConfig
{
  @Autowired
  @Qualifier("messageBufferProtocol")
  private Protocol messageBufferProtocol;
 
  @Autowired
  @Qualifier("webSocketProtocol")
  private Protocol webSocketProtocol;
 
  public @Bean Game zombieGame()
  {
    Game game = new SimpleGame(1,"Zombie");
    return game;
  }
 
  public @Bean(name="Zombie_ROOM_1") GameRoom zombieRoom1()
  {
    GameRoomSessionBuilder sessionBuilder = new GameRoomSessionBuilder();
    sessionBuilder.parentGame(zombieGame()).gameRoomName("Zombie_ROOM_1").protocol(messageBufferProtocol);
    ZombieRoom room = new ZombieRoom(sessionBuilder);
    room.setDefender(defender());
    room.setZombie(zombie());
   
    return room;
  }
 
  public @Bean(name="Zombie_ROOM_2") GameRoom zombieRoom2()
  {
    GameRoomSessionBuilder sessionBuilder = new GameRoomSessionBuilder();
    sessionBuilder.parentGame(zombieGame()).gameRoomName("Zombie_ROOM_2").protocol(webSocketProtocol);
    ZombieRoom room = new ZombieRoom(sessionBuilder);
    room.setDefender(defender());
    room.setZombie(zombie());
   
    return room;
  }
 
  public @Bean World world()
  {
    World world = new World();
    world.setAlive(2000000000);
    world.setUndead(1);
    return world;
  }
 
  public @Bean Defender defender()
  {
    Defender defender = new Defender();
    defender.setWorld(world());
    return defender;
  }
 
  public @Bean Zombie zombie()
  {
    Zombie zombie = new Zombie();
    zombie.setWorld(world());
    return zombie;
  }
 
 
  public @Bean(name="lookupService") LookupService lookupService()
  {
    Map<String,GameRoom> refKeyGameRoomMap = new HashMap<String, GameRoom>();
    refKeyGameRoomMap.put("Zombie_ROOM_1_REF_KEY_1", zombieRoom1());
    refKeyGameRoomMap.put("Zombie_ROOM_1_REF_KEY_2", zombieRoom2());
    LookupService service = new SimpleLookupService(refKeyGameRoomMap);
    return service;
  }
}
TOP

Related Classes of org.menacheri.zombie.game.ZombieSpringConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.