New research and technology page
* Added legacyworlds-server-beans-technologies Maven module, including the player-level DAO and controller. * Added session classes to carry technology information, modified web client session façade accordingly * Various changes to common UI elements (forms, lists, etc...) so the start and end of some element can be drawn separately * Added controller, templates and JavaScript for research page
This commit is contained in:
parent
154f215e24
commit
6dcd59d7bc
45 changed files with 2314 additions and 178 deletions
legacyworlds-server-beans-user/src/main
java/com/deepclone/lw/beans/user/player/game
resources/configuration/session-types
|
@ -1,56 +0,0 @@
|
|||
package com.deepclone.lw.beans.user.player.game;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.deepclone.lw.beans.user.abst.AutowiredCommandDelegate;
|
||||
import com.deepclone.lw.beans.user.abst.SessionCommandHandler;
|
||||
import com.deepclone.lw.beans.user.player.GameSubTypeBean;
|
||||
import com.deepclone.lw.cmd.player.ImplementTechCommand;
|
||||
import com.deepclone.lw.interfaces.game.EmpireManagement;
|
||||
import com.deepclone.lw.interfaces.session.ServerSession;
|
||||
import com.deepclone.lw.session.Command;
|
||||
import com.deepclone.lw.session.CommandResponse;
|
||||
|
||||
|
||||
|
||||
public class ImplementTechCommandDelegateBean
|
||||
implements AutowiredCommandDelegate
|
||||
|
||||
{
|
||||
|
||||
private EmpireManagement empireManagement;
|
||||
|
||||
|
||||
@Autowired( required = true )
|
||||
public void setEmpireManager( EmpireManagement manager )
|
||||
{
|
||||
this.empireManagement = manager;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class< ? extends Command > getType( )
|
||||
{
|
||||
return ImplementTechCommand.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class< ? extends SessionCommandHandler > getCommandHandler( )
|
||||
{
|
||||
return GameSubTypeBean.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public CommandResponse execute( ServerSession session , Command cParam )
|
||||
{
|
||||
ImplementTechCommand command = (ImplementTechCommand) cParam;
|
||||
int empireId = session.get( "empireId" , Integer.class );
|
||||
if ( session.get( "vacation" , Boolean.class ) ) {
|
||||
return this.empireManagement.getOverview( empireId );
|
||||
}
|
||||
return this.empireManagement.implementTechnology( empireId , command.getTech( ) );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.deepclone.lw.beans.user.player.game.tech;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.deepclone.lw.beans.user.abst.AutowiredCommandDelegate;
|
||||
import com.deepclone.lw.beans.user.abst.SessionCommandHandler;
|
||||
import com.deepclone.lw.beans.user.player.GameSubTypeBean;
|
||||
import com.deepclone.lw.cmd.player.tech.GetResearchCommand;
|
||||
import com.deepclone.lw.interfaces.game.technologies.ResearchController;
|
||||
import com.deepclone.lw.interfaces.session.ServerSession;
|
||||
import com.deepclone.lw.session.Command;
|
||||
import com.deepclone.lw.session.CommandResponse;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Command delegate for {@link GetResearchCommand}
|
||||
*
|
||||
* <p>
|
||||
* This command delegate uses the {@link ResearchController} to obtain all information pertaining to
|
||||
* an empire's research.
|
||||
*
|
||||
* @author <a href="mailto:tseeker@legacyworlds.com">E. Benoît</a>
|
||||
*/
|
||||
class GetResearchCommandDelegateBean
|
||||
implements AutowiredCommandDelegate
|
||||
{
|
||||
/** The research controller */
|
||||
private ResearchController researchController;
|
||||
|
||||
|
||||
/**
|
||||
* Dependency injector that sets the research controller
|
||||
*
|
||||
* @param researchController
|
||||
* the research controller
|
||||
*/
|
||||
@Autowired
|
||||
public void setResearchController( ResearchController researchController )
|
||||
{
|
||||
this.researchController = researchController;
|
||||
}
|
||||
|
||||
|
||||
/** This delegate handles {@link GetResearchCommand} instances */
|
||||
@Override
|
||||
public Class< ? extends Command > getType( )
|
||||
{
|
||||
return GetResearchCommand.class;
|
||||
}
|
||||
|
||||
|
||||
/** This delegate is part of the game session sub-type */
|
||||
@Override
|
||||
public Class< ? extends SessionCommandHandler > getCommandHandler( )
|
||||
{
|
||||
return GameSubTypeBean.class;
|
||||
}
|
||||
|
||||
|
||||
/** When the command is executed, fetch relevant data from the research controller */
|
||||
@Override
|
||||
public CommandResponse execute( ServerSession session , Command command )
|
||||
{
|
||||
int empire = session.get( "empireId" , Integer.class );
|
||||
return this.researchController.getResearchData( empire );
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package com.deepclone.lw.beans.user.player.game.tech;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.deepclone.lw.beans.user.abst.AutowiredCommandDelegate;
|
||||
import com.deepclone.lw.beans.user.abst.SessionCommandHandler;
|
||||
import com.deepclone.lw.beans.user.player.GameSubTypeBean;
|
||||
import com.deepclone.lw.cmd.player.tech.ImplementTechCommand;
|
||||
import com.deepclone.lw.interfaces.game.technologies.ResearchController;
|
||||
import com.deepclone.lw.interfaces.session.ServerSession;
|
||||
import com.deepclone.lw.session.Command;
|
||||
import com.deepclone.lw.session.CommandResponse;
|
||||
import com.deepclone.lw.session.NullResponse;
|
||||
|
||||
|
||||
|
||||
public class ImplementTechCommandDelegateBean
|
||||
implements AutowiredCommandDelegate
|
||||
|
||||
{
|
||||
/** The research controller */
|
||||
private ResearchController researchController;
|
||||
|
||||
|
||||
/**
|
||||
* Dependency injector that sets the research controller
|
||||
*
|
||||
* @param researchController
|
||||
* the research controller
|
||||
*/
|
||||
@Autowired( required = true )
|
||||
public void setResearchController( ResearchController researchController )
|
||||
{
|
||||
this.researchController = researchController;
|
||||
}
|
||||
|
||||
|
||||
/** This class handles {@link ImplementTechCommand} instances */
|
||||
@Override
|
||||
public Class< ? extends Command > getType( )
|
||||
{
|
||||
return ImplementTechCommand.class;
|
||||
}
|
||||
|
||||
|
||||
/** This class is enabled for the {@link GameSubTypeBean} session type */
|
||||
@Override
|
||||
public Class< ? extends SessionCommandHandler > getCommandHandler( )
|
||||
{
|
||||
return GameSubTypeBean.class;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implement a technology
|
||||
*
|
||||
* <p>
|
||||
* If the empire is not in vacation mode, try to implement the technology. Always return a
|
||||
* {@link NullResponse}.
|
||||
*/
|
||||
@Override
|
||||
public CommandResponse execute( ServerSession session , Command cParam )
|
||||
{
|
||||
ImplementTechCommand command = (ImplementTechCommand) cParam;
|
||||
int empire = session.get( "empireId" , Integer.class );
|
||||
if ( !session.get( "vacation" , Boolean.class ) ) {
|
||||
this.researchController.implement( empire , command.getTech( ) );
|
||||
}
|
||||
return new NullResponse( );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
package com.deepclone.lw.beans.user.player.game.tech;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.deepclone.lw.beans.user.abst.AutowiredCommandDelegate;
|
||||
import com.deepclone.lw.beans.user.abst.SessionCommandHandler;
|
||||
import com.deepclone.lw.beans.user.player.GameSubTypeBean;
|
||||
import com.deepclone.lw.cmd.player.tech.UpdateResearchPrioritiesCommand;
|
||||
import com.deepclone.lw.interfaces.game.technologies.ResearchController;
|
||||
import com.deepclone.lw.interfaces.session.ServerSession;
|
||||
import com.deepclone.lw.session.Command;
|
||||
import com.deepclone.lw.session.CommandResponse;
|
||||
import com.deepclone.lw.session.NullResponse;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Command handler for research priority updates
|
||||
*
|
||||
* @author <a href="mailto:tseeker@legacyworlds.com">E. Benoît</a>
|
||||
*/
|
||||
class UpdateResearchPrioritiesCommandDelegateBean
|
||||
implements AutowiredCommandDelegate
|
||||
{
|
||||
/** The research controller */
|
||||
private ResearchController researchController;
|
||||
|
||||
|
||||
/**
|
||||
* Dependency injector that sets the research controller
|
||||
*
|
||||
* @param researchController
|
||||
* the research controller
|
||||
*/
|
||||
@Autowired( required = true )
|
||||
public void setResearchController( ResearchController researchController )
|
||||
{
|
||||
this.researchController = researchController;
|
||||
}
|
||||
|
||||
|
||||
/** This class handles {@link UpdateResearchPrioritiesCommand} instances */
|
||||
@Override
|
||||
public Class< ? extends Command > getType( )
|
||||
{
|
||||
return UpdateResearchPrioritiesCommand.class;
|
||||
}
|
||||
|
||||
|
||||
/** This class is enabled for the {@link GameSubTypeBean} session type */
|
||||
@Override
|
||||
public Class< ? extends SessionCommandHandler > getCommandHandler( )
|
||||
{
|
||||
return GameSubTypeBean.class;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update research priorities
|
||||
*
|
||||
* <p>
|
||||
* If the empire is not in vacation mode, access the research controller and update mining
|
||||
* priorities using the specified values. Return a {@link NullResponse} in all cases.
|
||||
*/
|
||||
@Override
|
||||
public CommandResponse execute( ServerSession session , Command command )
|
||||
{
|
||||
if ( !session.get( "vacation" , Boolean.class ) ) {
|
||||
int empireId = session.get( "empireId" , Integer.class );
|
||||
this.researchController.updatePriorities( empireId ,
|
||||
( (UpdateResearchPrioritiesCommand) command ).getPriorities( ) );
|
||||
}
|
||||
return new NullResponse( );
|
||||
}
|
||||
|
||||
}
|
|
@ -44,9 +44,13 @@
|
|||
|
||||
<!-- Game: empire -->
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.OverviewCommandDelegateBean" />
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.ImplementTechCommandDelegateBean" />
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.tech.ImplementTechCommandDelegateBean" />
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.UpdateEmpireMiningSettingsCommandDelegateBean" />
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.GetNewPlanetCommandDelegateBean" />
|
||||
|
||||
<!-- Game: research -->
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.tech.GetResearchCommandDelegateBean" />
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.tech.UpdateResearchPrioritiesCommandDelegateBean" />
|
||||
|
||||
<!-- Game: planet list -->
|
||||
<bean class="com.deepclone.lw.beans.user.player.game.ListPlanetsCommandDelegateBean" />
|
||||
|
|
Reference in a new issue