Example #1
0
t_client	*create_client(t_info *info)
{
  t_client	*client;

  client = xmalloc(sizeof(*client));
  client->x = get_random(info->x, CLIENT(info->clients->data)->x);
  client->y = get_random(info->y, CLIENT(info->clients->data)->y);
  return (client);
}
int	count_list_with_same_lvl(t_list *t, int lvl)
{
  int	i;

  i = 0;
  while (t)
    {
      if (CLIENT(t->data)->level == lvl &&
	  (CLIENT(t->data)->status == ST_CLIENT ||
	   CLIENT(t->data)->status == ST_DISCONNECT))
	i++;
      t = t->next;
    }
  return (i);
}
Example #3
0
static void client_set_property(GObject *object, guint property_id,const GValue *value, GParamSpec *pspec)
{
	Client * obj = CLIENT(object);

	switch (property_id)
	{
	case CLIENT_NAME:
		obj->name = g_value_dup_string(value);
		break;
	case CLIENT_ID:
		obj->id = g_value_dup_string(value);
		break;
	case CLIENT_ID_TYPE:
		obj->idtype = g_value_dup_string(value);
		break;
	case CLIENT_IP_STR:
		obj->ip = inet_addr(g_value_get_string(value));
		break;
	case CLIENT_ROOM:
		obj->room = g_value_dup_string(value);
		break;
	case CLIENT_IP:
		obj->ip = g_value_get_uint(value);
		break;
	case CLIENT_ENABLE:
		obj->enable = g_value_get_boolean(value);
		break;
	default:
		g_warn_if_reached();
		break;
	}
}
Example #4
0
client_t *
client_get_thread_local ()
{
    if (unlikely (! thread_local_client)) {
        thread_local_client = CLIENT (caching_client_new ());
    }
    return thread_local_client;
}
Example #5
0
void	send_to_obs(t_list *obs, char *str)
{
  while (obs)
    {
      strcat(CLIENT(obs->data)->buf_write, str);
      obs = obs->next;
    }
}
Example #6
0
int  main()
    {
        while((i=fork())==-1);
        if (!i)SERVER();
        while((i=fork())==-1);
        if (!i)CLIENT();
        wait(0);
        wait(0);
    }
Example #7
0
void	obs_new_client(t_list *obs, t_client *client,
		       t_info *info, char is_a_bird)
{
  while (obs)
    {
      obs_add_client_in_char(CLIENT(obs->data)->buf_write,
			     client, info, is_a_bird);
      obs = obs->next;
    }
}
Example #8
0
static void	put_clients(t_info *info, int anim)
{
  t_list	*t;
  t_param	p;

  sort_client_list(&info->clients);
  t = info->clients;
  while (t)
    {
      if (!anim)
	put_direction_to_anim(t->data);
      p.x = (CLIENT(t->data)->x + 1) * FLOOR_X;
      p.y = CLIENT(t->data)->y * FLOOR_Y;
      p.anim = CLIENT(t->data)->anim
	+ (16 * (CLIENT(t->data)->level - 1));
      p.gfx = BIBI + (CLIENT(t->data)->team_id % NB_CHARACTER);
      set_object(info->gfx, &p);
      t = t->next;
    }
}
void	*get_client_from_list(t_list *t, int id)
{
  if (!t)
    return ((void *) -1);
  while (t)
    {
      if (CLIENT(t->data)->id == id)
	return (t->data);
      t = t->next;
    }
  return (NULL);
}
Example #10
0
void		sort_client_list(t_list **begin)
{
  t_list	*p;
  t_list	*swap;

  p = *begin;
  while ((*begin)->next)
    {
      if (CLIENT((*begin)->data)->y
	  > CLIENT((*begin)->next->data)->y)
	{
	  printf("petit swap\n");
	  swap = (*begin)->next->data;
	  (*begin)->next->data = (*begin)->data;
	  (*begin)->data = swap;
	  *begin = p;
	}
      else
	*begin = (*begin)->next;
    }
  *begin = p;
}
Example #11
0
int DataBaseMgr::SearchNick(const std::string nick, unsigned int index)
{
	std::string nickQuery = "SELECT * FROM dbo.user_table WHERE Nick = '";
	nickQuery += nick + "'";
	int num = 0;
	if (Query(nickQuery, index) == SQL_NO_DATA)
	{
		
		std::string SearchID = "SELECT * FROM dbo.user_table WHERE ID = " + std::to_string(num);
		while (ThereIsQuery(SearchID) != SQL_NO_DATA)
		{
			SearchID = "SELECT * FROM dbo.user_table WHERE ID = " + std::to_string(++num);
		}
		Vector2f mRandPos(rand()%100, rand()%100);
		std::string CreateQuery = "INSERT INTO dbo.user_table VALUES (" + std::to_string(num) + ", '" + nick + "', 1, " + 
			std::to_string(mRandPos.x) + ", " + std::to_string(mRandPos.y) + ", 1, 1, 1, 100)";
		CLIENT(index).info.mPos.x = mRandPos.x;
		CLIENT(index).info.mPos.y = mRandPos.y;
		Query(CreateQuery);
		Query(nickQuery, index);
	}

	return num;
}
Example #12
0
static void client_get_property(GObject *object, guint property_id,GValue *value, GParamSpec *pspec)
{
	Client * obj = CLIENT(object);
	gchar * ip_str;
	switch (property_id)
	{
	case CLIENT_NAME:
		g_value_set_string(value,obj->name);
		break;
	case CLIENT_ID:
		g_value_set_string(value,obj->id);
		break;
	case CLIENT_ID_TYPE:
		g_value_set_string(value,obj->idtype);
		break;
	case CLIENT_IP_STR:
		ip_str = g_strdup_printf("%03d.%03d.%03d.%03d",
				((guchar*)&(obj->ip))[0],
				((guchar*)&(obj->ip))[1],
				((guchar*)&(obj->ip))[2],
				((guchar*)&(obj->ip))[3]);
		g_value_take_string(value,ip_str);
		break;
	case CLIENT_ROOM:
		g_value_set_string(value,obj->room);
		break;
	case CLIENT_IP:
		g_value_set_uint(value,obj->ip);
		break;
	case CLIENT_ENABLE:
		g_value_set_boolean(value,obj->enable);
		break;
	default:
		g_warn_if_reached();
		break;
	}
}
Example #13
0
File: subtle.c Project: guns/subtle
Window
subSubtleFocus(int focus)
{
    int sid = 0;
    SubClient *c = NULL;
    SubScreen *s = NULL;

    /* Get current screen */
    s = subScreenCurrent(&sid);

    /* Find next window */
    if(focus)
    {
        int i;

        /* Check focus history */
        for(i = 1; i < HISTORYSIZE; i++)
        {
            if((c = CLIENT(subSubtleFind(subtle->windows.focus[i], CLIENTID))))
            {
                /* Check visibility on current screen */
                if(c->screen == sid && ALIVE(c) &&
                        VISIBLE(subtle->visible_tags, c) &&
                        c->win != subtle->windows.focus[0])
                {
                    subClientFocus(c);
                    subClientWarp(c, True);

                    return c->win;
                }
            }
        }

        /* Check client list backwards to get fullscreen first */
        for(i = subtle->clients->ndata - 1; i > 0; i--)
        {
            c = CLIENT(subtle->clients->data[i]);

            /* Check visibility on current screen */
            if(c->screen == sid && ALIVE(c) &&
                    VISIBLE(subtle->visible_tags, c) &&
                    c->win != subtle->windows.focus[0])
            {
                subClientFocus(c);
                subClientWarp(c, True);

                return c->win;
            }
        }
    }

    /* Fallback to root */
    subtle->windows.focus[0] = ROOT;
    subGrabSet(ROOT);
    XSetInputFocus(subtle->dpy, ROOT, RevertToPointerRoot, CurrentTime);

    subScreenUpdate();
    subScreenRender();

    /* EWMH: Current destop */
    subEwmhSetCardinals(ROOT, SUB_EWMH_NET_CURRENT_DESKTOP,
                        (long *)&s->vid, 1);

    return ROOT;
} /* }}} */
Example #14
0
File: panel.c Project: guns/subtle
void
subPanelRender(SubPanel *p,
               Drawable drawable)
{
    assert(p);

    /* Draw separator before panel */
    if(0 < subtle->separator.width && p->flags & SUB_PANEL_SEPARATOR1)
        PanelSeparator(SUB_PANEL_SEPARATOR1, p, drawable);

    /* Handle panel item type */
    switch(p->flags & (SUB_PANEL_ICON|SUB_PANEL_KEYCHAIN|
                       SUB_PANEL_SUBLET|SUB_PANEL_TITLE|SUB_PANEL_VIEWS))
    {
    case SUB_PANEL_ICON: /* {{{ */
    {
        int y = 0, icony = 0;

        y     = subtle->font->y + STYLE_TOP(subtle->styles.separator);
        icony = p->icon->height > y ? subtle->styles.separator.margin.top :
                y - p->icon->height;

        subSharedTextIconDraw(subtle->dpy, subtle->gcs.draw,
                              drawable, p->x + 2 + subtle->styles.separator.padding.left, icony,
                              p->icon->width, p->icon->height, subtle->styles.sublets.fg,
                              subtle->styles.sublets.bg, p->icon->pixmap, p->icon->bitmap);
    }
        break; /* }}} */
    case SUB_PANEL_KEYCHAIN: /* {{{ */
        if(p->keychain && p->keychain->keys)
        {
            subSharedTextDraw(subtle->dpy, subtle->gcs.draw, subtle->font,
                              drawable, p->x + STYLE_LEFT(subtle->styles.separator),
                              subtle->font->y + STYLE_TOP(subtle->styles.separator),
                              subtle->styles.title.fg, subtle->styles.title.bg,
                              p->keychain->keys, strlen(p->keychain->keys));
        }
        break; /* }}} */
    case SUB_PANEL_SUBLET: /* {{{ */
    {
        SubStyle *s = &subtle->styles.sublets, *style = NULL;

        /* Select style */
        if(s->styles && (style = subArrayGet(s->styles, p->sublet->style)))
            s = style;

        /* Set window background and border*/
        PanelRect(drawable, p->x, p->width, s);

        /* Render text parts */
        subSharedTextRender(subtle->dpy, subtle->gcs.draw, subtle->font,
                            drawable, p->x + STYLE_LEFT((*s)), subtle->font->y +
                            STYLE_TOP((*s)), s->fg, s->icon, s->bg, p->sublet->text);
    }
        break; /* }}} */
    case SUB_PANEL_TITLE: /* {{{ */
        if(0 < subtle->clients->ndata)
        {
            SubClient *c = NULL;

            if((c = CLIENT(subSubtleFind(subtle->windows.focus[0], CLIENTID))) &&
                    !(c->flags & SUB_CLIENT_TYPE_DESKTOP))
            {
                int x = 0, y = 0, width = 0, len = 0;
                char buf[5] = { 0 };
                SubStyle *s = &subtle->styles.title;

                DEAD(c);

                PanelModes(c, buf, &width);

                /* Set window background and border*/
                PanelRect(drawable, p->x, p->width, s);

                /* Draw modes and title */
                len = strlen(c->name);
                x   = p->x + STYLE_LEFT(subtle->styles.title);
                y   = subtle->font->y + STYLE_TOP(subtle->styles.title);

                subSharedTextDraw(subtle->dpy, subtle->gcs.draw, subtle->font,
                                  drawable, x, y, s->fg, s->bg, buf, strlen(buf));

                subSharedTextDraw(subtle->dpy, subtle->gcs.draw, subtle->font,
                                  drawable, x + width, y, s->fg, s->bg, c->name,
                                  /* Limit string length */
                                  len > subtle->styles.clients.right ?
                                  subtle->styles.clients.right : len);
            }
        }
        break; /* }}} */
    case SUB_PANEL_VIEWS: /* {{{ */
        if(0 < subtle->views->ndata)
        {
            int i, vx = p->x;

            /* View buttons */
            for(i = 0; i < subtle->views->ndata; i++)
            {
                int x = 0;
                SubView *v = VIEW(subtle->views->data[i]);
                SubStyle *s = PanelViewStyle(v, (p->screen->vid == i));

                /* Check dynamic views */
                if(v->flags & SUB_VIEW_DYNAMIC &&
                        !(subtle->client_tags & v->tags))
                    continue;

                /* Set window background and border*/
                PanelRect(drawable, vx, v->width + STYLE_WIDTH((*s)), s);

                x += STYLE_LEFT((*s));

                /* Draw view icon and/or text */
                if(v->flags & SUB_VIEW_ICON)
                {
                    int y = 0, icony = 0;

                    y     = subtle->font->y + STYLE_TOP((*s));
                    icony = v->icon->height > y ? s->margin.top :
                            y - v->icon->height;

                    subSharedTextIconDraw(subtle->dpy, subtle->gcs.draw,
                                          drawable, vx + x, icony, v->icon->width,
                                          v->icon->height, s->icon, s->bg, v->icon->pixmap,
                                          v->icon->bitmap);
                }

                if(!(v->flags & SUB_VIEW_ICON_ONLY))
                {
                    if(v->flags & SUB_VIEW_ICON) x += v->icon->width + 3;

                    subSharedTextDraw(subtle->dpy, subtle->gcs.draw,
                                      subtle->font, drawable, vx + x, subtle->font->y +
                                      STYLE_TOP((*s)), s->fg, s->bg, v->name, strlen(v->name));
                }

                vx += v->width + STYLE_WIDTH((*s));
            }
        }
        break; /* }}} */
    }

    /* Draw separator after panel */
    if(0 < subtle->separator.width && p->flags & SUB_PANEL_SEPARATOR2)
        PanelSeparator(SUB_PANEL_SEPARATOR2, p, drawable);
} /* }}} */
Example #15
0
File: panel.c Project: guns/subtle
void
subPanelUpdate(SubPanel *p)
{
    assert(p);

    /* Handle panel item type */
    switch(p->flags & (SUB_PANEL_ICON|SUB_PANEL_KEYCHAIN|
                       SUB_PANEL_SUBLET|SUB_PANEL_TITLE|SUB_PANEL_VIEWS))
    {
    case SUB_PANEL_ICON: /* {{{ */
        p->width = p->icon->width + subtle->styles.separator.padding.left +
                   subtle->styles.separator.padding.right + 4;
        break; /* }}} */
    case SUB_PANEL_KEYCHAIN: /* {{{ */
        p->width = 0;

        if(p->keychain && p->keychain->keys)
        {
            /* Font offset, panel border and padding */
            p->width = subSharedTextWidth(subtle->dpy, subtle->font,
                                          p->keychain->keys, p->keychain->len, NULL, NULL, True) +
                       subtle->styles.separator.padding.left + subtle->styles.separator.padding.right;
        }
        break; /* }}} */
    case SUB_PANEL_SUBLET: /* {{{ */
    {
        SubStyle *s = &subtle->styles.sublets, *style = NULL;

        /* Select style */
        if(s->styles && (style = subArrayGet(s->styles, p->sublet->style)))
            s = style;

        /* Ensure min width */
        p->width = MAX(s->min, p->sublet->width);
    }
        break; /* }}} */
    case SUB_PANEL_TITLE: /* {{{ */
        p->width = subtle->styles.clients.min;

        if(0 < subtle->clients->ndata)
        {
            SubClient *c = NULL;

            /* Find focus window */
            if((c = CLIENT(subSubtleFind(subtle->windows.focus[0], CLIENTID))))
            {
                assert(c);
                DEAD(c);

                /* Exclude desktop type windows */
                if(!(c->flags & SUB_CLIENT_TYPE_DESKTOP))
                {
                    char buf[5] = { 0 };
                    int width = 0, len = strlen(c->name);

                    PanelModes(c, buf, &width);

                    /* Font offset, panel border and padding */
                    p->width = subSharedTextWidth(subtle->dpy,
                                                  subtle->font, c->name,
                                                  /* Limit string length */
                                                  len > subtle->styles.clients.right ?
                                                  subtle->styles.clients.right : len,
                                                  NULL, NULL, True) + width + STYLE_WIDTH(subtle->styles.title);

                    /* Ensure min width */
                    p->width = MAX(subtle->styles.clients.min, p->width);
                }
            }
        }
        break; /* }}} */
    case SUB_PANEL_VIEWS: /* {{{ */
        p->width = subtle->styles.views.min;

        if(0 < subtle->views->ndata)
        {
            int i;

            /* Update for each view */
            for(i = 0; i < subtle->views->ndata; i++)
            {
                SubView *v = VIEW(subtle->views->data[i]);
                SubStyle *s = PanelViewStyle(v, (p->screen->vid == i));

                /* Check dynamic views */
                if(v->flags & SUB_VIEW_DYNAMIC &&
                        !(subtle->client_tags & v->tags))
                    continue;

                p->width += MAX(s->min, v->width) + STYLE_WIDTH((*s));
            }
        }
        break; /* }}} */
    }
} /* }}} */
Example #16
0
SQLRETURN DataBaseMgr::Query(std::string str, unsigned int index)
{
	int char_id = 0;
	wchar_t char_name[100] = { 0, };
	int char_level = 0;
	float posX = 0, posY = 0;
	int exp = 0;
	int atk = 0;
	int def = 0;
	int hp = 0;

	mNodata = true;

	SQLINTEGER  pIndicators[10];

	retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	// Process data
	if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {

		retcode = SQLExecDirect(hstmt,
			// ID -> 1, Name -> 2, CLevel -> 3 column
			//(SQLCHAR*)"INSERT INTO dbo.exp_user_table VALUES (2, 'Hello', 1, 2.2, 3.3, 3, 5, 8)",
			//(SQLCHAR*)"SELECT ID, Nick, CLevel, XPos, YPos, EXP, Attack, Defence FROM dbo.exp_user_table",
			//(SQLCHAR*)"SELECT ID, Nick, CLevel, XPos, YPos, EXP, Attack, Defence FROM dbo.exp_user_table",
			//(SQLCHAR*)"EXEC dbo.SELECT_HIGHLEVEL 10",
			//(SQLCHAR*)"SELECT * FROM dbo.user_table WHERE Nick = 'Hello'",
			(SQLCHAR*)str.c_str(),
			SQL_NTS);

		if (retcode != SQL_ERROR)
		{

			// Retrieve data from row set.
			SQLBindCol(hstmt, 1, SQL_C_LONG, (SQLPOINTER)&char_id, sizeof(char_id),
				&pIndicators[0]);

			// Retrieve data from row set.
			SQLBindCol(hstmt, 2, SQL_C_WCHAR, (SQLPOINTER)char_name, sizeof(char_name),
				&pIndicators[1]);

			// Retrieve data from row set.
			SQLBindCol(hstmt, 3, SQL_C_LONG, (SQLPOINTER)&char_level, sizeof(char_level),
				&pIndicators[2]);

			SQLBindCol(hstmt, 4, SQL_C_FLOAT, (SQLPOINTER)&posX, sizeof(posX),
				&pIndicators[3]);

			SQLBindCol(hstmt, 5, SQL_C_FLOAT, (SQLPOINTER)&posY, sizeof(posY),
				&pIndicators[4]);

			SQLBindCol(hstmt, 6, SQL_C_LONG, (SQLPOINTER)&exp, sizeof(exp),
				&pIndicators[5]);

			SQLBindCol(hstmt, 7, SQL_C_LONG, (SQLPOINTER)&atk, sizeof(atk),
				&pIndicators[6]);

			SQLBindCol(hstmt, 8, SQL_C_LONG, (SQLPOINTER)&def, sizeof(def),
				&pIndicators[7]);

			SQLBindCol(hstmt, 9, SQL_C_LONG, (SQLPOINTER)&hp, sizeof(hp),
				&pIndicators[8]);

			while ((retcode = SQLFetch(hstmt)) == SQL_SUCCESS)
			{
				CLIENT(index).info.mPos.x = posX;
				CLIENT(index).info.mPos.y = posY;
				CLIENT(index).info.hp = hp;
				CLIENT(index).info.atk = atk;
				CLIENT(index).info.def = def;
				CLIENT(index).info.exp = exp;
				CLIENT(index).info.id = char_id;
				CLIENT(index).info.level = char_level;
				wcscpy_s(CLIENT(index).info.char_id, char_name);


				std::wcout << "char_id: " << char_id << "\n";
				std::wcout << "char_name: " << char_name << "\n";
				std::wcout << "pos: " << posX << ", " << posY << "\n";
				std::wcout << "exp: " << exp << "\n";
				std::wcout << "atk: " << atk << "\n";
				std::wcout << "def: " << def << "\n";
				std::wcout << "hp: " << hp << "\n";

				mNodata = false;
			}

			if ((retcode == SQL_NO_DATA) && mNodata)
			{
				std::cout << "NO DATA" << std::endl;
				return retcode;
			}
		}
		else
		{
			// Error Handle
			HandleDiagnosticRecord(hstmt, SQL_HANDLE_STMT, retcode);
		}
	}
	SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
	return SQL_SUCCESS;
}
Example #17
0
File: screen.c Project: guns/subtle
void
subScreenConfigure(void)
{
  int i;
  SubScreen *s = NULL;
  SubView *v = NULL;

  /* Reset visible tags, views and avaiclients */
  subtle->visible_tags  = 0;
  subtle->visible_views = 0;
  subtle->client_tags   = 0;

  /* Either check each client or just get visibles */
  if(0 < subtle->clients->ndata)
    {
      int j;

      /* Check each client */
      for(i = 0; i < subtle->clients->ndata; i++)
        {
          SubClient *c = CLIENT(subtle->clients->data[i]);
          int gravity = 0, screen = 0, view = 0, visible = 0;

          /* Ignore dead or just iconified clients */
          if(c->flags & SUB_CLIENT_DEAD) continue;

          /* Set client tags to ease lookups */
          subtle->client_tags |= c->tags;

          /* Check views of each screen */
          for(j = 0; j < subtle->screens->ndata; j++)
            {
              s = SCREEN(subtle->screens->data[j]);
              v = VIEW(subtle->views->data[s->vid]);

              /* Set visible tags and views to ease lookups */
              subtle->visible_tags  |= v->tags;
              subtle->visible_views |= (1L << (s->vid + 1));

              /* Find visible clients */
              if(VISIBLE(v->tags, c))
                {
                  gravity = c->gravities[s->vid];
                  view    = s->vid;
                  screen  = j;
                  visible++;

                  /* Keep stick screen */
                  if(c->flags & SUB_CLIENT_MODE_STICK)
                    screen = c->screen;
                }
            }

          /* After all screens are checked.. */
          if(0 < visible)
            {
              /* Update client */
              subClientArrange(c, gravity, screen);
              XMapWindow(subtle->dpy, c->win);
              subEwmhSetWMState(c->win, NormalState);

              /* Warp after gravity and screen have been set */
              if(c->flags & SUB_CLIENT_MODE_URGENT)
                subClientWarp(c, True);

              /* EWMH: Desktop, screen */
              subEwmhSetCardinals(c->win, SUB_EWMH_NET_WM_DESKTOP,
                (long *)&view, 1);
              subEwmhSetCardinals(c->win, SUB_EWMH_SUBTLE_CLIENT_SCREEN,
                (long *)&screen, 1);
            }
          else ///< Unmap other windows
            {
              c->flags |= SUB_CLIENT_UNMAP; ///< Ignore next unmap
              subEwmhSetWMState(c->win, WithdrawnState);
              XUnmapWindow(subtle->dpy, c->win);
            }
        }
    }
  else
    {
      /* Check views of each screen */
      for(i = 0; i < subtle->screens->ndata; i++)
        {
          s = SCREEN(subtle->screens->data[i]);
          v = VIEW(subtle->views->data[s->vid]);

          /* Set visible tags and views to ease lookups */
          subtle->visible_tags  |= v->tags;
          subtle->visible_views |= (1L << (s->vid + 1));
        }
    }

  /* EWMH: Visible tags, views */
  subEwmhSetCardinals(ROOT, SUB_EWMH_SUBTLE_VISIBLE_TAGS,
    (long *)&subtle->visible_tags, 1);
  subEwmhSetCardinals(ROOT, SUB_EWMH_SUBTLE_VISIBLE_VIEWS,
    (long *)&subtle->visible_views, 1);

  XSync(subtle->dpy, False); ///< Sync before going on

  /* Hook: Configure */
  subHookCall(SUB_HOOK_TILE, NULL);

  subSharedLogDebugSubtle("Configure: type=screen\n");
} /* }}} */