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 }