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.MoveRequest;
009 import com.croftsoft.apps.chat.request.Request;
010 import com.croftsoft.apps.chat.response.MoveResponse;
011 import com.croftsoft.apps.chat.user.User;
012
013 /*********************************************************************
014 * Moves an avatar.
015 *
016 * @version
017 * 2003-06-10
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 MoveServer
025 extends AbstractServer
026 //////////////////////////////////////////////////////////////////////
027 //////////////////////////////////////////////////////////////////////
028 {
029
030 private final ChatWorld chatWorld;
031
032 //////////////////////////////////////////////////////////////////////
033 //////////////////////////////////////////////////////////////////////
034
035 public MoveServer ( 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 MoveRequest moveRequest = ( MoveRequest ) request;
050
051 ModelId modelId = user.getModelId ( );
052
053 if ( modelId == null )
054 {
055 return new MoveResponse ( true, true, false );
056 }
057
058 ChatModel chatModel = chatWorld.getChatModel ( modelId );
059
060 if ( chatModel == null )
061 {
062 return new MoveResponse ( true, false, true );
063 }
064
065 chatModel.setDestination ( moveRequest.getDestination ( ) );
066
067 return null;
068 }
069
070 //////////////////////////////////////////////////////////////////////
071 //////////////////////////////////////////////////////////////////////
072 }