001         package com.croftsoft.apps.chat.server;
002    
003         import com.croftsoft.core.animation.model.ModelId;
004         import com.croftsoft.core.lang.NullArgumentException;
005    
006         import com.croftsoft.apps.chat.model.ChatModel;
007         import com.croftsoft.apps.chat.model.ChatWorld;
008         import com.croftsoft.apps.chat.request.CreateModelRequest;
009         import com.croftsoft.apps.chat.request.Request;
010         import com.croftsoft.apps.chat.response.CreateModelResponse;
011         import com.croftsoft.apps.chat.user.User;
012    
013         /*********************************************************************
014         * Makes an avatar.
015         *
016         * @version
017         *   2003-06-17
018         * @since
019         *   2003-06-06
020         * @author
021         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
022         *********************************************************************/
023    
024         public final class  CreateModelServer
025           extends AbstractServer
026         //////////////////////////////////////////////////////////////////////
027         //////////////////////////////////////////////////////////////////////
028         {
029    
030         private final ChatWorld  chatWorld;
031    
032         //////////////////////////////////////////////////////////////////////
033         //////////////////////////////////////////////////////////////////////
034    
035         public  CreateModelServer ( ChatWorld  chatWorld )
036         //////////////////////////////////////////////////////////////////////
037         {
038           NullArgumentException.check ( this.chatWorld = chatWorld );
039         }
040    
041         //////////////////////////////////////////////////////////////////////
042         //////////////////////////////////////////////////////////////////////
043    
044         public Object  serve (
045           User     user,
046           Request  request )
047         //////////////////////////////////////////////////////////////////////
048         {
049           CreateModelRequest  createModelRequest
050             = ( CreateModelRequest ) request;
051    
052           double  x = createModelRequest.getX ( );
053    
054           double  y = createModelRequest.getY ( );
055    
056           ModelId  modelId = user.getModelId ( );
057    
058           if ( modelId != null )
059           {
060             ChatModel  chatModel = chatWorld.getChatModel ( modelId );
061    
062             if ( chatModel != null )
063             {
064               x = chatModel.getCenterX ( );
065    
066               y = chatModel.getCenterY ( );
067             }
068    
069             chatWorld.removeModel ( modelId );
070           }
071    
072           modelId = chatWorld.createModel (
073             createModelRequest.getAvatarType ( ), x, y );
074    
075           user.setModelId ( modelId );
076    
077           return new CreateModelResponse ( modelId );
078         }
079    
080         //////////////////////////////////////////////////////////////////////
081         //////////////////////////////////////////////////////////////////////
082         }