00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Aria.h"
00027 #include "ArNetworking.h"
00028 #include <math.h>
00029
00030
00046
00047
00048 void exampleHomeDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt);
00049 void exampleDotsDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt);
00050 void exampleXDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt);
00051 void exampleArrowsDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt);
00052
00053 int main(int argc, char **argv)
00054 {
00055 Aria::init();
00056 ArServerBase server;
00057
00058 ArArgumentParser parser(&argc, argv);
00059 ArServerSimpleOpener simpleOpener(&parser);
00060
00061
00062
00063 parser.loadDefaultArguments();
00064 if (!simpleOpener.parseArgs() || !parser.checkHelpAndWarnUnparsed())
00065 {
00066 simpleOpener.logOptions();
00067 exit(1);
00068 }
00069
00070
00071
00072 if (!simpleOpener.open(&server))
00073 {
00074 if (simpleOpener.wasUserFileBad())
00075 printf("Error: Bad user/password/permissions file.\n");
00076 else
00077 printf("Error: Could not open server port. Use -help to see options.\n");
00078 exit(1);
00079 }
00080
00081
00082
00083 ArServerInfoDrawings drawings(&server);
00084
00085
00086 drawings.addDrawing(
00087
00088 new ArDrawingData("polyLine", ArColor(255, 0, 0), 2, 49),
00089 "exampleDrawing_Home",
00090 new ArGlobalFunctor2<ArServerClient*, ArNetPacket*>(&exampleHomeDrawingNetCallback)
00091 );
00092 drawings.addDrawing(
00093 new ArDrawingData("polyDots", ArColor(0, 255, 0), 250, 48),
00094 "exampleDrawing_Dots",
00095 new ArGlobalFunctor2<ArServerClient*, ArNetPacket*>(&exampleDotsDrawingNetCallback)
00096 );
00097 drawings.addDrawing(
00098 new ArDrawingData("polySegments", ArColor(0, 0, 0), 4, 52),
00099 "exampleDrawing_XMarksTheSpot",
00100 new ArGlobalFunctor2<ArServerClient*, ArNetPacket*>(&exampleXDrawingNetCallback)
00101 );
00102 drawings.addDrawing(
00103 new ArDrawingData("polyArrows", ArColor(255, 0, 255), 500, 100),
00104 "exampleDrawing_Arrows",
00105 new ArGlobalFunctor2<ArServerClient*, ArNetPacket*>(&exampleArrowsDrawingNetCallback)
00106 );
00107
00108
00109
00110 simpleOpener.checkAndLog();
00111
00112
00113 server.runAsync();
00114
00115 printf("Server is now running...\n");
00116
00117
00118
00119
00120
00121 ArKeyHandler *keyHandler;
00122 if ((keyHandler = Aria::getKeyHandler()) == NULL)
00123 {
00124 keyHandler = new ArKeyHandler;
00125 Aria::setKeyHandler(keyHandler);
00126 printf("To exit, press escape.\n");
00127 }
00128
00129
00130
00131 while(true) ArUtil::sleep(10000);
00132
00133 Aria::shutdown();
00134 exit(0);
00135 }
00136
00137
00138
00139
00140
00141
00142 void exampleHomeDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt) {
00143 ArNetPacket reply;
00144
00145
00146 reply.byte4ToBuf(7);
00147
00148
00149
00150 reply.byte4ToBuf(-500); reply.byte4ToBuf(500);
00151 reply.byte4ToBuf(-500); reply.byte4ToBuf(-500);
00152 reply.byte4ToBuf(500); reply.byte4ToBuf(-500);
00153 reply.byte4ToBuf(500); reply.byte4ToBuf(500);
00154 reply.byte4ToBuf(0); reply.byte4ToBuf(1000);
00155 reply.byte4ToBuf(-500); reply.byte4ToBuf(500);
00156 reply.byte4ToBuf(500); reply.byte4ToBuf(500);
00157
00158 client->sendPacketUdp(&reply);
00159 }
00160
00161 void exampleDotsDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt) {
00162 ArNetPacket reply;
00163
00164 unsigned int tik = ArUtil::getTime() % 200;
00165 double t = tik / 5.0;
00166
00167
00168 reply.byte4ToBuf(3);
00169
00170
00171 reply.byte4ToBuf(3000);
00172 reply.byte4ToBuf((int) (sin(t) * 1000));
00173
00174
00175 reply.byte4ToBuf(3500);
00176 reply.byte4ToBuf((int) (sin(t+500) * 1000));
00177
00178
00179 reply.byte4ToBuf(4000);
00180 reply.byte4ToBuf((int) (sin(t+1000) * 1000));
00181
00182 client->sendPacketUdp(&reply);
00183 }
00184
00185 void exampleXDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt) {
00186 ArNetPacket reply;
00187
00188
00189 reply.byte4ToBuf(4);
00190
00191
00192 reply.byte4ToBuf(-4250);
00193 reply.byte4ToBuf(250);
00194 reply.byte4ToBuf(-3750);
00195 reply.byte4ToBuf(-250);
00196
00197
00198 reply.byte4ToBuf(-4250);
00199 reply.byte4ToBuf(-250);
00200 reply.byte4ToBuf(-3750);
00201 reply.byte4ToBuf(250);
00202
00203 client->sendPacketUdp(&reply);
00204 }
00205
00206 void exampleArrowsDrawingNetCallback(ArServerClient* client, ArNetPacket* requestPkt) {
00207
00208 ArNetPacket reply;
00209 reply.byte4ToBuf(1);
00210 reply.byte4ToBuf(0);
00211 reply.byte4ToBuf(700);
00212 client->sendPacketUdp(&reply);
00213 }
00214