亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gui.h

?? 支持網絡和單機的麻將游戲
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* $Header: /home/jcb/newmj/RCS/gui.h,v 11.29 2003/04/16 22:28:58 jcb Rel $ * gui.h * type defns and forward declarations for the gui module. *//****************** COPYRIGHT STATEMENT ********************** * This file is Copyright (c) 2000 by J. C. Bradfield.       * * Distribution and use is governed by the LICENCE file that * * accompanies this file.                                    * * The moral rights of the author are asserted.              * *                                                           * ***************** DISCLAIMER OF WARRANTY ******************** * This code is not warranted fit for any purpose. See the   * * LICENCE file for further information.                     * *                                                           * *************************************************************/#include <gtk/gtk.h>#include <gdk/gdkkeysyms.h>#include "lazyfixed.h"#include "vlazyfixed.h"#include "sysdep.h"#include <errno.h>#include "client.h"#include <math.h>/*********************  TYPE DEFINITIONS*********************//* a tilesetbox is a TileSet and a widget that boxes it.   The TileSet is stored to avoid unnecessary updating of the box*/typedef struct _TileSetBox {  TileSet set;  GtkWidget *widget; /* the widget itself */  GtkWidget *tiles[4]; /* the children buttons */} TileSetBox;/* This struct represents the display of a player. It gives   access to relevant widgets without requiring excessive casting   and pointer chasing.*/typedef struct _PlayerDisp {  PlayerP player; /* pointer to the game player structure */  /* this is the whole box representing the player */  GtkWidget *widget;  /* the orientation says which way round tiles go     (equivalently, which player we are in the table).     The tilepixmaps are those appropriate assuming that players     look at their own tiles. If the players politely display     their sets to be readable by the others, then the orientation     of exposed tiles is flipped from these.     that the orientations are:     0:  upright (for our own tiles)     1:  top to left: player to the right (south, when we're east)     2:  upside down (player opposite)     3:  top to right (north).  */  int orientation;  /* and accordingly the following macro can be used if concealed     and exposed tiles are oriented differently */  /* # define flipori(ori) ((ori+2)%4) */#define flipori(ori) ori  /* this is an array of buttons representing the concealed tiles.     For initial size calculation, it should be filled with blanks.     (Ideally, unmapped, but I can't see how to do that.)     They appear from the left in the "concealed" row.  */  GtkWidget *conc[MAX_CONCEALED];  /* This is an array representing the declared specials     that have overflowed into the concealed row.     Initially, exactly five of these should be shown: that makes     the whole "concealed" row 19 tiles wide, which gives enough     room for reasonable collections of specials, and makes the "exposed"     row big enough for four kongs and a pair.     They appear to the right of the concealed row.  */  GtkWidget *extras[8];  /* These are the specials that have found room where we want     them, at the end of the exposed row */  GtkWidget *spec[8];  /* each of these is a box representing a declared set.     Each set is packed into the exposed row, from the left,     with a 1/4 tile spacing between them (thus fitting     4 kongs and a pair in exactly).     Size is determined by the concealed row, so there is     no need to show these initially.  */  /* This is the tong box. It appears to the right of the exposed row specials*/  GtkWidget *tongbox;  TileSetBox esets[MAX_TILESETS];  /* each of these is a box representing a concealed set.     They appear to the left of the concealed tile set, with     the 1/4 tile spacing. They are initially hidden, and     appear only in scoring.  */  TileSetBox csets[MAX_TILESETS];    /* these is not actually in the player area, but to do with      discards */  GtkWidget *discards[32]; /* buttons for this player's discards */  int dx[32], dy[32]; /* save calculated posns of discard tiles */  int num_discards;  gint16 x,y; /* x and y for next discard */  int row; /* which row is next discard in */  gint16 xmin[5],xmax[5]; /* in each row, first point used, leftmost point free*/  int plane; /* if desperate, we start stacking tiles */  /* This is the window for pung! claims etc. */  GtkWidget *claimw;  GtkWidget *claimlab; /* and the label inside it */  int claim_serial; /* the discard for which this window was popped up */  int claim_time; /* time popped up (in millisecs since start of program) */} PlayerDisp;/* This is a one use structure representing the dialog box   used for claiming discards. It has two personalities:   normally it shows buttons   Noclaim  Chow  Pung  Kong  MahJong   but after a mahjong claim it shows   Eyes  Chow  Pung  Special Hand*/typedef struct {  GtkWidget *widget; /* the box itself */  GtkWidget *tilename; /* the label for the tile name */  GtkWidget *tiles[4]; /* the buttons for the tiles as discarded			  by each player. Element 0 is unused. */  /* the various buttons */  GtkWidget *noclaim;  GtkWidget *eyes;  GtkWidget *chow;  GtkWidget *pung;  GtkWidget *special;  GtkWidget *kong;  GtkWidget *mahjong;  GtkWidget *robkong;  int mode; /* 0 normally, 1 in mahjong mode, 2 for robbing kongs */} DiscardDialog;/* this is used by functions that display or remove tiles to pass   back information to the animation routines. The structure contains   information about the tiles.*/typedef struct {  GtkWidget *target;  /* the widget to which this information refers,		    if it is being newly displayed. In this case,		    the widget is not shown, and it is the animator's		    job to show it at the end of animation.		    If target is null, then the widget is being 		    undisplayed. */  Tile t;        /* the tile displayed by the widget */  int ori;       /* and its orientation */  int x, y;      /* x and y coordinates relative to the boardframe */} AnimInfo;/* enums used in the dialog popup function to specify position */typedef enum {  DPCentred, /* centered over main window */  DPOnDiscard, /* bottom left corner in same place as discard dialog */  DPErrorPos, /* for error dialogs: centred over top of main window */  DPNone, /* don't touch the positioning at all */  DPCentredOnce, /* centre it on first popup, then don't fiddle */  DPOnDiscardOnce, /* on discard dialog first time, then don't fiddle */} DPPosn;/* Where to put the dialog boxes */typedef enum { DialogsUnspecified = 0, DialogsCentral = 1, DialogsBelow = 2, DialogsPopup = 3 } DialogPosition;/* The rcfile is used to store assorted persistent data. We often   need to read or update only selected parts of it. This set of   flag bits identifies the groups that can be independently    read or updated. */typedef enum {  XmjrcNone = 0x00,  XmjrcDisplay = 0x01, /* preferences regarding the display */  XmjrcPlayer = 0x02, /* player option settings */  XmjrcGame = 0x04, /* game option preferences */  XmjrcMisc = 0x08, /* odds and sods */  XmjrcOpen = 0x10, /* sticky fields in the connection dialogs */  XmjrcPlaying = 0x20, /* playing preferences */  XmjrcAll = 0xFFFFFFFF /* everything */} XmjrcGroup;/* extra data in the game */typedef struct {  int orig_live_end; /* value of wall.live_end at start of hand */} GameExtras;#define gextras(g) ((GameExtras *)(g->userdata))/*****************   FORWARD DECLARATIONS*****************//* FUNCTIONS */void apply_game_prefs(void);GtkWidget *build_or_refresh_option_panel(GameOptionTable *got,GtkWidget *panel);GtkWidget *build_or_refresh_prefs_panel(GameOptionTable *got,GtkWidget *panel);void button_set_tile(GtkWidget *b, Tile t, int ori);void chow_dialog_init(void);void close_connection(void);void close_saving_posn(GtkWidget *w);void conc_callback(GtkWidget *w, gpointer data);void continue_dialog_init(void);void continue_dialog_popup(void);void create_dialogs(void);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一区二区三区四区| 欧美日韩卡一卡二| 国产精品女主播av| 国产成人av一区二区三区在线 | 乱中年女人伦av一区二区| 日韩视频免费观看高清完整版在线观看| 视频一区二区不卡| 精品国产网站在线观看| 成人av在线播放网站| 亚洲欧洲日韩女同| 欧美日韩综合在线免费观看| 美脚の诱脚舐め脚责91| 亚洲精品一区二区三区精华液 | 亚洲图片自拍偷拍| 日韩欧美成人一区| 成人午夜在线播放| 偷拍日韩校园综合在线| 26uuu色噜噜精品一区二区| av在线播放一区二区三区| 夜夜嗨av一区二区三区中文字幕| 91.com在线观看| 国产精品456露脸| 亚洲综合一二三区| 精品国产自在久精品国产| www.视频一区| 人禽交欧美网站| 亚洲视频 欧洲视频| 777奇米四色成人影色区| 国产精品亚洲一区二区三区妖精| 一区二区三区在线影院| 欧美成人vps| 91九色最新地址| 国产精品中文字幕日韩精品| 亚洲欧美日韩国产综合| www激情久久| 欧美日韩精品一区二区| www.欧美精品一二区| 热久久久久久久| 亚洲视频一区在线| 欧美xxxxx裸体时装秀| 欧美中文一区二区三区| 国产成人高清在线| 全部av―极品视觉盛宴亚洲| 最新久久zyz资源站| www国产成人免费观看视频 深夜成人网| 色哟哟精品一区| 国产电影精品久久禁18| 日韩二区在线观看| 一区二区三区在线免费| 中文字幕av免费专区久久| 欧美一级高清片| 欧美做爰猛烈大尺度电影无法无天| 韩日欧美一区二区三区| 奇米影视7777精品一区二区| 亚洲九九爱视频| 国产精品美女久久福利网站| 精品国产网站在线观看| 91麻豆精品国产91久久久| 欧日韩精品视频| 在线观看亚洲一区| 99久久99久久久精品齐齐| 国产精品中文有码| 国产激情一区二区三区四区| 久久精品国产成人一区二区三区| 亚洲va欧美va人人爽| 一区二区久久久久久| 亚洲天堂精品在线观看| 国产精品情趣视频| 日本一区二区三级电影在线观看 | 欧美三级中文字幕在线观看| 色香蕉成人二区免费| 色琪琪一区二区三区亚洲区| 91在线免费播放| 99国内精品久久| eeuss鲁一区二区三区| 成人免费视频网站在线观看| 国产激情偷乱视频一区二区三区| 国产在线播精品第三| 激情文学综合网| 国产在线观看免费一区| 国产一区在线精品| 国产在线不卡一区| 成人精品小蝌蚪| 成人av电影在线网| 欧美亚州韩日在线看免费版国语版| 在线观看日韩av先锋影音电影院| 欧美日韩在线播放| 91精品国产91久久久久久最新毛片 | 91行情网站电视在线观看高清版| 色噜噜久久综合| 欧美日韩精品一区二区三区四区| 91精品免费在线观看| 日韩写真欧美这视频| 精品久久久久一区二区国产| 久久久另类综合| 国产精品无码永久免费888| 亚洲国产cao| 日本一不卡视频| 国产麻豆日韩欧美久久| 波多野结衣欧美| 欧美日韩国产综合一区二区三区| 欧美一卡二卡在线| 久久久精品中文字幕麻豆发布| 国产精品丝袜一区| 亚洲成人精品影院| 麻豆精品新av中文字幕| 成人性生交大片免费看视频在线| 91福利在线看| 精品国产91九色蝌蚪| 亚洲欧美日韩在线不卡| 秋霞影院一区二区| 成人av网址在线观看| 欧美久久久久久久久中文字幕| 久久久www成人免费无遮挡大片| 中文字幕一区二区不卡| 日日摸夜夜添夜夜添亚洲女人| 国产精品亚洲综合一区在线观看| 色老汉av一区二区三区| 日韩免费视频线观看| 专区另类欧美日韩| 久久电影网电视剧免费观看| 成人av综合一区| 日韩欧美久久久| 一区二区免费看| 成人小视频免费观看| 日韩一区二区三区在线观看| 亚洲另类在线制服丝袜| 国产一区视频在线看| 欧美日免费三级在线| 国产精品久久二区二区| 久久精品国产99久久6| 欧洲一区二区av| 国产蜜臀97一区二区三区| 日韩高清欧美激情| 一本色道**综合亚洲精品蜜桃冫| 久久亚洲欧美国产精品乐播| 亚洲国产精品欧美一二99| 成人激情文学综合网| 精品国产sm最大网站免费看| 偷拍亚洲欧洲综合| 色中色一区二区| 国产精品色在线| 国产一区二区三区最好精华液| 欧美在线短视频| 亚洲人亚洲人成电影网站色| 国产成人福利片| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩精品成人一区二区在线| 日本高清视频一区二区| 国产精品免费aⅴ片在线观看| 国产一区二区免费视频| 欧美电影免费观看完整版| 亚洲高清久久久| 在线观看国产91| 一区二区三区在线播放| 91一区二区在线观看| 中文字幕一区二区三区视频| 福利一区二区在线| 国产精品免费视频网站| 国产成人午夜高潮毛片| 久久久久国产精品免费免费搜索| 蜜臀av在线播放一区二区三区| 欧美日韩国产高清一区二区三区| 亚洲最大成人网4388xx| 欧美日韩综合不卡| 日韩精品色哟哟| 日韩欧美电影一区| 国精产品一区一区三区mba视频| 欧美成人精品福利| 国产一区二区h| 一区二区不卡在线视频 午夜欧美不卡在 | 91精品国产入口在线| 日产国产欧美视频一区精品| 日韩三级视频在线看| 久久99精品久久只有精品| 精品国产乱码久久久久久老虎| 久久99精品久久久久久国产越南 | 日韩精品一区二区三区swag| 老司机免费视频一区二区| 欧美精品一区视频| 成人久久视频在线观看| 亚洲视频 欧洲视频| 91黄视频在线观看| 日韩高清在线不卡| 久久久影视传媒| 成人爱爱电影网址| 亚洲在线中文字幕| 91精品国产乱| 风流少妇一区二区| 亚洲午夜视频在线观看| 日韩一级免费观看| 成人av午夜电影| 亚洲在线中文字幕| 精品美女被调教视频大全网站| 国产在线不卡一卡二卡三卡四卡| 中文字幕亚洲一区二区av在线| 欧美午夜精品理论片a级按摩| 另类成人小视频在线| 亚洲欧洲在线观看av| 欧美精品久久99久久在免费线|