이걸보고도 더럽다는 말이 나오나여 ㅋ 이쁨 ㅋ
void game_accept(SOCKET s)
{
session[s]->type = 1;
}
char game_sight(struct point *me, struct point *you)
{
// int i, j;
int x0, y0, x1, y1;
struct map_data *map;
map = me->m;
if(me->m != you->m){ return 0; }
if(!memcmp(&me, &you, sizeof(struct point))){ return 1; }
if(me->x < 9){ x0 = 0; x1 = 17; }
else if((map->xs - 10) < me->x){ x0 = map->xs - 18; x1 = map->xs; }
else{ x0 = me->x - 9; x1 = me->x + 9; }
if(x0 < 0){ x0 = 0; }
if(me->y < 9){ y0 = 0; y1 = 17; }
else if((map->ys - 10) < me->y){ y0 = map->ys - 18; y1 = map->ys; }
else{ y0 = me->y - 9; y1 = me->y + 9; }
if(y0 < 0){ y0 = 0; }
return ((x0 <= you->x) && (you->x <= x1) && (y0 <= you->y) && (you->y <= y1))?1:0;
}
char game_sight2(struct point *me, struct point *you, int distance)
{
// int i, j;
int x0, y0, x1, y1;
// int sightx, sighty;
struct map_data *map;
map = me->m;
if(me->m != you->m){ return 0; }
if(!memcmp(&me, &you, sizeof(struct point))){ return 1; }
if(me->x < distance){ x0 = 0; x1 = distance*2; }
else if((map->xs - (distance)) < me->x){ x0 = map->xs - distance*2; x1 = map->xs; }
else{ x0 = me->x - distance; x1 = me->x + distance; }
if(x0 < 0){ x0 = 0; }
if(me->y < distance){ y0 = 0; y1 = distance*2; }
else if((map->ys - (distance)) < me->y){ y0 = map->ys - distance*2; y1 = map->ys; }
else{ y0 = me->y - distance; y1 = me->y + distance; }
if(y0 < 0){ y0 = 0; }
return ((x0 <= you->x) && (you->x <= x1) && (y0 <= you->y) && (you->y <= y1))?1:0;
}
void game_send(SOCKET s, int type)
{
int i, size;
struct point *p;
struct socket_data *sd;
struct game_session_data *gsd;
gsd = session[s]->session_data;
p = &(gsd->account->point);
size = (wb(s, 1)<<8) + wb(s, 2) + 3;
switch(type){
case ALL:
for(i=0; i<SOCK_COUNT; i++){
if((SOCK(i) != s) && (sd = session[SOCK(i)])){
if(sd->auth && sd->type){
memmove(wp(SOCK(i), 0), wp(s, 0), size);
wset(SOCK(i));
}
}
}
break;
case SAMEMAP:
for(i=0; i<SOCK_COUNT; i++){
if((SOCK(i) != s) && (sd = session[SOCK(i)])){
if(sd->auth && sd->type && (gsd = sd->session_data)){
if(p->m == gsd->account->point.m){
memmove(wp(SOCK(i), 0), wp(s, 0), size);
wset(SOCK(i));
}
}
}
}
break;
case SAMEMAP_WOS:
for(i=0; i<SOCK_COUNT; i++){
if((SOCK(i) != s) && (sd = session[SOCK(i)])){
if(sd->auth && sd->type && (gsd = sd->session_data)){
if(p->m == gsd->account->point.m){
memmove(wp(SOCK(i), 0), wp(s, 0), size);
wset(SOCK(i));
}
}
}
}
return;
case AREA:
for(i=0; i<SOCK_COUNT; i++){
if((SOCK(i) != s) && (sd = session[SOCK(i)])){
if(sd->auth && sd->type && (gsd = sd->session_data)){
if(game_sight(&(gsd->account->point), p)){
memmove(wp(SOCK(i), 0), wp(s, 0), size);
wset(SOCK(i));
}
}
}
}
break;
case AREA_WOS:
for(i=0; i<SOCK_COUNT; i++){
if((SOCK(i) != s) && (sd = session[SOCK(i)])){
if(sd->auth && sd->type && (gsd = sd->session_data)){
if(game_sight(&(gsd->account->point), p)){
memmove(wp(SOCK(i), 0), wp(s, 0), size);
wset(SOCK(i));
}
}
}
}
return;
}
wset(s);
}
내 프로젝트중 일부임, 나혼자서 짠거도 아니지만 ㅋ 암튼 C 는 이쁨니당
함수가 이쁜거죠
아우 더러
더러워서 참을수가 없다