青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

游戲中物件的定義與使用(9)

 

本篇是游戲中物件的定義與使用(8)的續(xù)篇。

 

下載源碼和工程

 

CharICS瀏覽器的開發(fā)

 

界面設(shè)計(jì):

 

resource.h:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by CharICS.rc
//
#define IDC_INVENTORY                   101
#define IDD_INVENTORY                   101
#define IDC_OK                          1000
#define IDC_CLOSE                       1000
#define IDC_ITEMS                       1001
#define IDC_PREVIEW                     1003
#define IDC_EQUIP                       1004
#define IDC_USE                         1005
#define IDC_DROP                        1006
#define IDC_ADD                         1009
#define IDC_DESCRIPTION                 1010
#define IDC_UP                          1011
#define IDC_DOWN                        1012
#define IDC_SORT                        1013

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1011
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

CharICS.RC
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_INVENTORY DIALOGEX 0, 0, 408, 254
STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION
CAPTION "Inventory"
FONT 12, "Segoe UI", 400, 0, 0x0
BEGIN
    DEFPUSHBUTTON   "Close",IDC_CLOSE,272,233,50,14
    LISTBOX         IDC_ITEMS,8,5,158,172,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    CONTROL         "",IDC_PREVIEW,"Static",SS_BLACKRECT | WS_BORDER,171,0,230,172,WS_EX_CLIENTEDGE
    PUSHBUTTON      "Equip",IDC_EQUIP,7,180,50,15,WS_DISABLED
    PUSHBUTTON      "Use",IDC_USE,62,180,50,15,WS_DISABLED
    PUSHBUTTON      "Drop",IDC_DROP,117,180,50,15,WS_DISABLED
    PUSHBUTTON      "Add Item",IDC_ADD,8,223,50,15
    LTEXT           "",IDC_DESCRIPTION,172,182,229,38,SS_SUNKEN
    PUSHBUTTON      "Move Up",IDC_UP,7,202,50,13
    PUSHBUTTON      "Move Down",IDC_DOWN,62,202,50,13
    PUSHBUTTON      "Sort",IDC_SORT,117,202,50,13
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO 
BEGIN
    IDD_INVENTORY, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 401
        TOPMARGIN, 7
        BOTTOMMARGIN, 247
    END
END
#endif    // APSTUDIO_INVOKED


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
 

主程序:

/******************************************************************************
PURPOSE:
    char ics test.
******************************************************************************/


#include <windows.h>
#include <stdio.h>
#include "core_common.h"
#include "core_graphics.h"
#include "tool.h"
#include "mil.h"
#include "char_ics.h"
#include "resource.h"

#define MAX_ITEMS   1024

sItem       g_items[MAX_ITEMS];     
// MIL item list

cCharIcs    g_char_ics;
cCamera     g_camera;

//==================================================================================
// Add all char items into listbox.
//==================================================================================
void list_items(HWND dlg)
{
    
char text[256];

    HWND listbox = GetDlgItem(dlg, IDC_ITEMS);
    reset_listbox(listbox);

    
for(sCharItemPtr item = g_char_ics.get_root_item(); item != NULL; item = item->next)
    {
        
if(item->quantity != 1)
            sprintf(text, "%s  x %lu", g_items[item->item_index].name, item->quantity);
        
else
            sprintf(text, "%s", g_items[item->item_index].name);

        add_string_to_listbox(listbox, text);
    }

    
// disable buttons
    EnableWindow(GetDlgItem(dlg, IDC_EQUIP), FALSE);
    EnableWindow(GetDlgItem(dlg, IDC_USE), FALSE);
    EnableWindow(GetDlgItem(dlg, IDC_DROP), FALSE);

    UpdateWindow(dlg);
}

//==================================================================================
// Dialog procedure.
//==================================================================================
BOOL CALLBACK dialog_proc(HWND dlg, UINT msg, WPARAM word_param, LPARAM long_param)
{
    
static bool loaded = false;
    
static cMesh mesh;
    
static cObject object;

    sCharItemPtr item;
    
int sel;
    
char text[256];

    HWND items_wnd;

    
switch(msg)
    {
    
case WM_INITDIALOG:
        
// set the display mode to this dialog box
        create_display(GetDlgItem(dlg, IDC_PREVIEW), 0, 0, 0, TRUE, TRUE);

        list_items(dlg);
        
return TRUE;

    
case WM_PAINT:
        clear_display(D3DCOLOR_RGBA(0, 64, 128, 255), 1.0f);

        
if(loaded)
        {
            g_d3d_device->SetTransform(D3DTS_VIEW, g_camera.get_view_matrix());

            
if(g_d3d_device->BeginScene())
            {
                
object.rotate(0.0f, (float)timeGetTime() / 1000.0f, 0.0f);
                
object.render();

                g_d3d_device->EndScene();
            }
        }

        present_display();
        
return TRUE;

    
case WM_COMMAND:
        
switch(LOWORD(word_param))
        {
        
case IDC_CLOSE:
            EndDialog(dlg, TRUE);
            
return TRUE;

        
case IDC_ADD:
            
// add a random item
            while(1)
            {
                sel = rand() % MAX_ITEMS;

                
if(g_items[sel].name[0])
                    
break;
            }

            g_char_ics.add(sel, 1, NULL);

            
// list items and free mesh
            list_items(dlg);
            mesh.free();
            loaded = FALSE;

            
break;

        
case IDC_USE:
            items_wnd = GetDlgItem(dlg, IDC_ITEMS);
            
            
if((sel = (int)get_listbox_cur_sel(items_wnd)) == LB_ERR)            
                
break;

            item = g_char_ics.get_item(sel);

            
if(check_bit(g_items[item->item_index].flags, USEONCE))
            {
                g_char_ics.remove(item);

                
// list items and free mesh
                list_items(dlg);
                mesh.free();
                loaded = FALSE;
            }

            
break;

        
case IDC_UP:          
            items_wnd = GetDlgItem(dlg, IDC_ITEMS);
            
            
if((sel = (int)get_listbox_cur_sel(items_wnd)) == LB_ERR)            
                
break;

            item = g_char_ics.get_item(sel);

            
if(item->prev)
            {
                g_char_ics.move_up(item);

                
// list items and free mesh
                list_items(dlg);
                mesh.free();
                loaded = FALSE;

                
// reselect item in list and force selection
                set_listbox_cur_sel(items_wnd, sel-1);
                SendMessage(dlg, WM_COMMAND, MAKEWPARAM(IDC_ITEMS, LBN_SELCHANGE), 0);
            }

            
break;

        
case IDC_DOWN:
            items_wnd = GetDlgItem(dlg, IDC_ITEMS);
            
            
if((sel = (int)get_listbox_cur_sel(items_wnd)) == LB_ERR)            
                
break;

            item = g_char_ics.get_item(sel);

            
if(item->next)
            {
                g_char_ics.move_down(item);

                
// list items and free mesh
                list_items(dlg);
                mesh.free();
                loaded = FALSE;

                
// reselect item in list and force selection
                set_listbox_cur_sel(items_wnd, sel+1);
                SendMessage(dlg, WM_COMMAND, MAKEWPARAM(IDC_ITEMS, LBN_SELCHANGE), 0);
            }

            
break;

        
case IDC_SORT:
            g_char_ics.sort();

            
// list items and free mesh
            list_items(dlg);
            mesh.free();
            loaded = FALSE;

            
break;

        
case IDC_DROP:
            items_wnd = GetDlgItem(dlg, IDC_ITEMS);
            
            
if((sel = (int)get_listbox_cur_sel(items_wnd)) == LB_ERR)            
                
break;

            item = g_char_ics.get_item(sel);
            g_char_ics.remove(item);

            
// list items and free mesh
            list_items(dlg);
            mesh.free();
            loaded = FALSE;

            
// reselect item in list and force selection
            set_listbox_cur_sel(items_wnd, sel);
            SendMessage(dlg, WM_COMMAND, MAKEWPARAM(IDC_ITEMS, LBN_SELCHANGE), 0);

            
break;

        
case IDC_ITEMS:
            
if(HIWORD(word_param) == LBN_SELCHANGE)
            {
                items_wnd = GetDlgItem(dlg, IDC_ITEMS);

                
if((sel = (int)get_listbox_cur_sel(items_wnd)) == LB_ERR)            
                    
break;

                item = g_char_ics.get_item(sel);

                SetWindowText(GetDlgItem(dlg, IDC_DESCRIPTION), g_items[item->item_index].desc);

                
// set up drop button
                BOOL can_drop = check_bit(g_items[item->item_index].flags, CANDROP) ? TRUE : FALSE;
                EnableWindow(GetDlgItem(dlg, IDC_DROP), can_drop);

                HWND equip_wnd = GetDlgItem(dlg, IDC_EQUIP);
                HWND use_wnd   = GetDlgItem(dlg, IDC_USE);                    

                
// set up equip/use button
                EnableWindow(equip_wnd, FALSE);
                EnableWindow(use_wnd, FALSE);

                
switch(g_items[item->item_index].category)
                {
                
case WEAPON:
                
case ARMOR:
                
case SHIELD:
                
case ACCESSORY:
                    EnableWindow(equip_wnd, TRUE);
                    
break;

                
case EDIBLE:
                
case HEALING:
                
case TRANSPORTATION:
                    EnableWindow(use_wnd, TRUE);
                    
break;
                }

                
// load the mesh and object if any
                sprintf(text, "..\\Data\\%s", g_items[item->item_index].mesh_filename);
                mesh.load(text, "..\\Data\\");

                
if((loaded = mesh.is_loaded()) == TRUE)
                    
object.create(&mesh);
            }

            
break;
        }

        
break;
    }

    
return FALSE;
}

//==================================================================================
// Routine entry.
//==================================================================================
int WINAPI WinMain(HINSTANCE inst, HINSTANCE, LPSTR cmd_line, int cmd_show)
{
    
// read all master items list from file

    FILE* fp;
    
    
if((fp = fopen("..\\Data\\Default.mil", "rb")) == NULL)
        
return -1;

    fread(g_items, 1, 
sizeof(g_items), fp);
    fclose(fp);

    
// load all character items from file
    if(! g_char_ics.load("..\\Data\\Char.ci"))
        
return -1;
    
    g_camera.point(0.0f, 50.0f, -200.0f, 0.0f, 50.0f, 0.0f);

    DialogBox(inst, MAKEINTRESOURCE(IDD_INVENTORY), NULL, dialog_proc);

    g_char_ics.save("..\\Data\\Char.ci");

    destroy_display();

    
return 0;
}
 

截圖:

 

posted on 2007-11-08 21:43 lovedday 閱讀(529) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品va| 亚洲高清一二三区| 欧美一区国产二区| 久久亚洲综合网| 亚洲国产裸拍裸体视频在线观看乱了中文| 麻豆精品在线视频| 亚洲精品老司机| 欧美一区二区日韩一区二区| 好吊色欧美一区二区三区视频| 久久在线免费观看| aⅴ色国产欧美| 久久精品导航| 99精品视频免费全部在线| 国产精品老牛| 毛片基地黄久久久久久天堂| 日韩视频在线免费观看| 久久久噜噜噜久噜久久| av成人黄色| 国内精品久久久久久| 欧美激情一区三区| 亚洲欧美日韩国产中文在线| 亚洲第一级黄色片| 欧美伊人影院| 一级成人国产| 激情一区二区三区| 欧美午夜一区二区福利视频| 久久国产视频网站| 一区二区三区欧美在线| 美女91精品| 香蕉av777xxx色综合一区| 91久久极品少妇xxxxⅹ软件| 国产九区一区在线| 欧美久久一区| 久久久久久久久久久久久女国产乱| 亚洲毛片在线观看| 欧美77777| 欧美亚洲一区三区| 一区二区三区四区五区精品| 激情欧美一区二区三区| 国产精品美女久久久久久免费| 美女精品国产| 久久精品欧美日韩| 午夜激情亚洲| 亚洲毛片在线看| 欧美高清视频| 久久久久久久久久久久久久一区 | 国产精品一区二区三区乱码| 欧美华人在线视频| 久久综合国产精品台湾中文娱乐网| 亚洲尤物在线| 一二三四社区欧美黄| 亚洲黄网站黄| 亚洲成人在线网站| 美女诱惑黄网站一区| 久久久久久免费| 久久久精品国产免大香伊| 亚洲欧美日韩专区| 亚洲女与黑人做爰| 亚洲午夜电影| 亚洲午夜一二三区视频| 一区二区三区波多野结衣在线观看| 亚洲人成在线观看| 亚洲三级电影全部在线观看高清| 精品999在线播放| 国内成+人亚洲| 国产一区二区三区高清在线观看| 国产三级精品三级| 国产欧美一区二区三区在线老狼 | 国产一区二区三区四区五区美女| 国产精品第一区| 国产精品草莓在线免费观看| 欧美性猛交99久久久久99按摩| 欧美日韩一卡二卡| 国产精品久久久久久久久久久久久久 | 亚洲色图在线视频| 亚洲无线视频| 小处雏高清一区二区三区| 午夜精品999| 久久久久久久激情视频| 久久一二三区| 欧美理论电影在线观看| 欧美另类人妖| 国产精品狼人久久影院观看方式| 国产精品色在线| 国产亚洲午夜高清国产拍精品| 国外视频精品毛片| 亚洲国产精品一区二区久 | 亚洲一区二区精品| 香蕉精品999视频一区二区| 久久超碰97中文字幕| 蜜臀久久99精品久久久久久9 | 国产精品免费看片| 国产无遮挡一区二区三区毛片日本| 激情小说另类小说亚洲欧美 | 亚洲一区二区三区中文字幕在线| 亚洲欧美资源在线| 久久精品亚洲热| 欧美剧在线观看| 国产精品一区二区久激情瑜伽| 国户精品久久久久久久久久久不卡| 亚洲第一精品影视| 一区二区三区欧美成人| 欧美一区=区| 欧美高清一区| 亚洲一区二区免费在线| 久久久久免费| 欧美亚男人的天堂| 在线观看日韩av| 亚洲一区美女视频在线观看免费| 久久婷婷激情| 日韩午夜在线视频| 久久精品国产久精国产思思| 欧美精品一区二区久久婷婷| 国产精品一区久久| 日韩亚洲成人av在线| 久久精品视频在线| 亚洲狼人精品一区二区三区| 欧美一区二区国产| 国产精品99一区| 亚洲福利视频网站| 久久成人精品视频| 日韩亚洲欧美中文三级| 久久深夜福利免费观看| 国产精品久久久免费| 亚洲伦理中文字幕| 久久偷窥视频| 亚洲欧美国产日韩天堂区| 欧美国产成人精品| 狠狠色综合日日| 午夜日韩视频| 洋洋av久久久久久久一区| 免费视频最近日韩| 国际精品欧美精品| 性欧美xxxx大乳国产app| 亚洲精品人人| 模特精品在线| 在线观看不卡av| 久久精品一区二区国产| 亚洲午夜av在线| 欧美色123| 一区二区三区国产盗摄| 亚洲福利在线看| 久久综合色婷婷| 激情伊人五月天久久综合| 久久精品国产69国产精品亚洲| 一本大道久久a久久精品综合| 欧美国产日韩一区二区三区| 亚洲大胆人体视频| 麻豆国产精品777777在线| 欧美一区影院| 国产午夜一区二区三区| 午夜精品三级视频福利| 亚洲一区二区三区在线播放| 国产精品户外野外| 亚洲无线视频| 亚洲开发第一视频在线播放| 欧美日韩高清在线播放| 中国av一区| 日韩香蕉视频| 国产精品久久久久aaaa| 亚洲欧美第一页| 亚洲在线不卡| 国产一区二区三区在线观看视频 | 国产精品自拍小视频| 午夜久久久久久| 亚洲影视在线播放| 国产区亚洲区欧美区| 久久精品99国产精品| 欧美怡红院视频| 加勒比av一区二区| 欧美国产1区2区| 欧美激情按摩| 亚洲免费视频成人| 欧美一区2区三区4区公司二百| 好看不卡的中文字幕| 欧美激情精品| 欧美日韩在线三区| 欧美在线观看视频一区二区| 欧美一区二区在线免费播放| 一区二区在线视频播放| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一区久久久| 亚洲欧美日韩另类| 在线不卡视频| 亚洲精品一品区二品区三品区| 欧美亚一区二区| 久久综合精品国产一区二区三区| 免费亚洲一区| 午夜精品福利一区二区三区av | 一区二区欧美日韩| 国产麻豆日韩欧美久久| 蜜臀a∨国产成人精品| 欧美激情中文字幕乱码免费| 亚洲在线免费视频| 久久久国产一区二区| 一本久久精品一区二区| 欧美伊久线香蕉线新在线| 亚洲精品一二三区| 亚洲欧美精品| 亚洲精品人人|