亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
美脚の诱脚舐め脚责91| www.在线成人| av爱爱亚洲一区| 日韩欧美中文字幕精品| 国产精品美女久久久久久| 美女视频黄a大片欧美| 91网站最新地址| 26uuu国产日韩综合| 亚洲成a人片在线不卡一二三区| 成人综合日日夜夜| xf在线a精品一区二区视频网站| 亚洲最新视频在线播放| 波多野结衣的一区二区三区| 久久这里都是精品| 日本网站在线观看一区二区三区| 91网站最新地址| 亚洲欧洲一区二区在线播放| 国产酒店精品激情| 日韩你懂的在线观看| 亚洲成人av电影| 欧美日免费三级在线| 亚洲免费av高清| 91视频观看免费| 欧美国产精品专区| 国产a久久麻豆| 久久久亚洲午夜电影| 激情欧美一区二区| 精品国产凹凸成av人导航| 日韩vs国产vs欧美| 日韩一区二区在线看片| 国产精品69毛片高清亚洲| 欧美精品色综合| 亚洲18色成人| 91麻豆精品国产91久久久久| 日韩中文字幕不卡| 日韩小视频在线观看专区| 麻豆国产欧美日韩综合精品二区 | 欧美一卡二卡三卡四卡| 欧美日韩综合不卡| 成人白浆超碰人人人人| 日本一区二区三级电影在线观看 | 中文字幕免费一区| 精品欧美一区二区三区精品久久| 国产精品沙发午睡系列990531| 久久久亚洲精品一区二区三区| 99精品桃花视频在线观看| 成人一级黄色片| 国产精品99久久久久久久vr | 亚洲乱码国产乱码精品精小说| 欧美四级电影在线观看| 亚洲一区成人在线| 91尤物视频在线观看| 中文字幕一区二区5566日韩| 国产成人亚洲精品青草天美 | 麻豆国产精品777777在线| 一级特黄大欧美久久久| 亚洲自拍与偷拍| 青青草91视频| 一本大道久久a久久精二百| av不卡一区二区三区| 在线视频国产一区| 日韩黄色免费电影| 久久精品国产网站| 中文幕一区二区三区久久蜜桃| 成人激情黄色小说| 亚洲综合视频网| 日韩精品最新网址| 97国产一区二区| 丝袜诱惑亚洲看片| 国产免费观看久久| 911精品国产一区二区在线| 激情综合网最新| 亚洲黄色性网站| 精品国产一区二区三区四区四| 91香蕉视频污在线| 激情六月婷婷久久| 天天av天天翘天天综合网| 国产性色一区二区| 在线播放/欧美激情| 成人精品gif动图一区| 免费成人av在线| 一区二区三区不卡视频在线观看| 精品99久久久久久| 欧美精品乱码久久久久久| 99vv1com这只有精品| 国产一区二区三区四| 亚洲国产精品一区二区www在线 | 久久人人爽爽爽人久久久| 欧美私模裸体表演在线观看| 国产91精品一区二区| 麻豆一区二区三| 亚洲午夜精品17c| 亚洲色图欧洲色图| 国产精品视频第一区| 精品国产乱码91久久久久久网站| 欧美二区在线观看| 欧美日韩在线直播| 99天天综合性| 波多野结衣91| 成人国产精品免费观看视频| 精品一区二区三区在线观看国产 | 亚洲精品国产成人久久av盗摄| 久久久美女毛片| 久久人人爽人人爽| 精品美女被调教视频大全网站| 欧美区一区二区三区| 欧美日韩一区成人| 91电影在线观看| 91在线视频官网| 91女人视频在线观看| av影院午夜一区| 99精品黄色片免费大全| 成人av片在线观看| 一区二区三区**美女毛片| 色婷婷久久久久swag精品| 97久久超碰国产精品| 99久久亚洲一区二区三区青草| 成人av电影在线| 91原创在线视频| 在线观看免费亚洲| 欧美日韩精品免费| 91精品欧美久久久久久动漫| 91精品国产入口| 精品国产一区二区三区忘忧草 | 国产欧美一区二区精品仙草咪| 久久综合一区二区| 欧美国产精品一区二区三区| 国产亲近乱来精品视频| 一区精品在线播放| 樱桃国产成人精品视频| 午夜精品免费在线| 看片网站欧美日韩| 丁香六月久久综合狠狠色| 91网上在线视频| 欧美乱妇23p| 久久免费视频一区| 国产精品久久久久7777按摩 | 欧美国产日产图区| 亚洲欧美另类久久久精品2019| 夜夜嗨av一区二区三区四季av| 日韩高清中文字幕一区| 韩国精品久久久| 91同城在线观看| 日韩欧美在线不卡| 亚洲国产激情av| 亚洲电影在线免费观看| 精品一区二区免费在线观看| 99久久综合狠狠综合久久| 欧美精品在线观看播放| 久久久综合九色合综国产精品| 亚洲精品视频自拍| 久久国产麻豆精品| 99视频热这里只有精品免费| 日韩一区二区在线看片| 欧美国产精品v| 天天综合色天天综合色h| 国产91露脸合集magnet| 在线观看视频一区二区 | 日韩情涩欧美日韩视频| 日韩理论片网站| 久久精品久久99精品久久| 91免费国产视频网站| 亚洲精品在线网站| 亚洲3atv精品一区二区三区| 丰满白嫩尤物一区二区| 日韩免费观看2025年上映的电影| 亚洲视频免费在线观看| 韩国女主播成人在线| 欧美视频一区二区三区在线观看| 国产三级一区二区| 免费成人性网站| 在线免费一区三区| 国产精品欧美一级免费| 欧美a级理论片| 欧美乱妇15p| 亚洲综合精品自拍| 91猫先生在线| 日本一区二区成人在线| 久久精品国产网站| 欧美一区二区三区在| 亚洲国产日韩a在线播放| 91丨九色丨蝌蚪丨老版| 国产精品免费人成网站| 国产精品原创巨作av| 欧美xxx久久| 美洲天堂一区二卡三卡四卡视频| 欧美日韩国产在线播放网站| 亚洲男人的天堂网| zzijzzij亚洲日本少妇熟睡| 国产欧美日韩中文久久| 国产九九视频一区二区三区| 精品久久一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了 | 久久网这里都是精品| 理论片日本一区| 欧美精品一区二| 精品一区二区三区免费观看| 日韩欧美高清在线| 国产乱人伦精品一区二区在线观看| 欧美一区二区私人影院日本|