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

天行健 君子當自強而不息

Controlling Players and Characters(29)

 

download source and project


master character list edit source:


#include <windows.h>
#include <stdio.h>
#include "resource.h"
#include "master_struct.h"
#include "tool.h"

#pragma warning(disable : 4996)

#define MAX_CHARACTERS  256

HWND g_hwnd;

OPENFILENAME g_ofn;         
// open/save dialog data
char g_mcl_file[MAX_PATH];  // filename for character file

sCharDef g_chars[MAX_CHARACTERS];
long g_edit_char;

//////////////////////////////////////////////////////////////////////////////////////////////

inline 
void reset_character(sCharDef& char_def)
{
    char_def.weapon    = -1;
    char_def.armor     = -1;
    char_def.shield    = -1;
    char_def.accessory = -1;
}

//////////////////////////////////////////////////////////////////////////////////////////////

bool load_chars(const char* filename)
{
    
// load characters data from file and insert into listbox

    // clear char structures
    for(int i = 0; i < MAX_CHARACTERS; i++)
    {
        ZeroMemory(&g_chars[i], 
sizeof(sCharDef));

        g_chars[i].weapon    = -1;
        g_chars[i].armor     = -1;
        g_chars[i].shield    = -1;
        g_chars[i].accessory = -1;
    }

    FILE* fp;
    
if((fp = fopen(filename, "rb")) == NULL)
        
return false;

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

    
// update characters list box
    HWND listbox = GetDlgItem(g_hwnd, IDC_CHARACTERS);
    reset_listbox(listbox);

    
for(int i = 0; i < MAX_CHARACTERS; i++)
    {
        
char text[256];
        sprintf(text, "%5d: %s", i, g_chars[i].name);
        add_string_to_listbox(listbox, text);
    }

    
return true;
}

//////////////////////////////////////////////////////////////////////////////////////////////

bool new_mcl()
{
    
if(MessageBox(g_hwnd, "Are you sure? (Looses any unsaved MCL information)", "New MCL", MB_YESNO) != IDYES)
        
return false;

    HWND listbox = GetDlgItem(g_hwnd, IDC_CHARACTERS); 
    reset_listbox(listbox);

    
for(int i = 0; i < MAX_CHARACTERS; i++)
    {
        ZeroMemory(&g_chars[i], 
sizeof(sCharDef));
        reset_character(g_chars[i]);

        
char buf[16];
        sprintf(buf, "%5d:", i);
        insert_string_to_listbox(listbox, i, buf);
    }

    
return true;
}

//////////////////////////////////////////////////////////////////////////////////////////////

bool load_mcl()
{
    
// Setup the open dialog info
    g_ofn.hwndOwner   = g_hwnd;
    g_ofn.lpstrFile   = g_mcl_file;
    g_ofn.lpstrTitle  = "Load MCL File";
    g_ofn.lpstrFilter = "MCL Character Files (*.MCL)\0*.MCL\0All Files (*.*)\0*.*\0\0";
    g_ofn.lpstrDefExt = "MCL";

    
if(! GetOpenFileName(&g_ofn))
        
return false;

    
if(! load_chars(g_mcl_file))
    {
        MessageBox(g_hwnd, g_mcl_file, "Unable to open file.", MB_OK);
        
return false;
    }

    
return true;
}

//////////////////////////////////////////////////////////////////////////////////////////////

bool save_mcl()
{
    
// Setup the open dialog info
    g_ofn.hwndOwner   = g_hwnd;
    g_ofn.lpstrFile   = g_mcl_file;
    g_ofn.lpstrTitle  = "Save MCL File";
    g_ofn.lpstrFilter = "MCL Character Files (*.MCL)\0*.MCL\0All Files (*.*)\0*.*\0\0";
    g_ofn.lpstrDefExt = "MCL";

    
if(! GetSaveFileName(&g_ofn))
        
return false;

    
// open filename for saving
    FILE* fp;
    
if((fp = fopen(g_mcl_file, "wb")) == NULL)
        
return false;

    fwrite(g_chars, 1, 
sizeof(g_chars), fp);
    fclose(fp);

    
return true;
}

//////////////////////////////////////////////////////////////////////////////////////////////

void update_entry(HWND dlg, long char_index)
{
    
char text[32];

    sCharDef& char_def = g_chars[char_index];

    
// get text entries
    GetWindowText(GetDlgItem(dlg, IDC_NAME), char_def.name, sizeof(char_def.name));
    GetWindowText(GetDlgItem(dlg, IDC_ITEM), char_def.item_filename, 
sizeof(char_def.item_filename));

    
// Get numerical entries

    GetWindowText(GetDlgItem(dlg, IDC_CLASS),      text, 
sizeof(text));
    char_def.class_index = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_HEALTH),     text, 
sizeof(text));
    char_def.health_points = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_MANA),       text, 
sizeof(text));
    char_def.mana_points = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_LEVEL),      text, 
sizeof(text));
    char_def.level = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_EXPERIENCE), text, 
sizeof(text));
    char_def.exp = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_MONEY),      text, 
sizeof(text));
    char_def.money = atol(text);

    
///////////////////////////////////////////

    GetWindowText(GetDlgItem(dlg, IDC_ATTACK),     text, 
sizeof(text));
    char_def.attack = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_DEFENSE),    text, 
sizeof(text));
    char_def.defense = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_AGILITY),    text, 
sizeof(text));
    char_def.agility = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_RESISTANCE), text, 
sizeof(text));
    char_def.resistance = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_MENTAL),     text, 
sizeof(text));
    char_def.mental = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_TOHIT),      text, 
sizeof(text));
    char_def.to_hit = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_SPEED),      text, 
sizeof(text));
    char_def.speed = (
float)atof(text);

    
///////////////////////////////////////////

    GetWindowText(GetDlgItem(dlg, IDC_RANGE),     text, 
sizeof(text));
    char_def.attack_range = (
float)atof(text);

    GetWindowText(GetDlgItem(dlg, IDC_CHARGE),     text, 
sizeof(text));
    char_def.charge_rate = (
float)atof(text);

    GetWindowText(GetDlgItem(dlg, IDC_TOATTACK),   text, 
sizeof(text));
    char_def.to_attack = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_TOMAGIC),    text, 
sizeof(text));
    char_def.to_magic = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_DROPITEM),   text, 
sizeof(text));
    char_def.drop_item = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_TODROP),     text, 
sizeof(text));
    char_def.drop_chance = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_TOEFFECT),   text, 
sizeof(text));
    char_def.effect_chance = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_EFFECT),     text, 
sizeof(text));
    char_def.effects = atol(text);

    
///////////////////////////////////////////

    GetWindowText(GetDlgItem(dlg, IDC_MESH),       text, 
sizeof(text));
    char_def.mesh_index = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_WEAPON),     text, 
sizeof(text));
    char_def.weapon = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_ARMOR),      text, 
sizeof(text));
    char_def.armor = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_SHIELD),     text, 
sizeof(text));
    char_def.shield = atol(text);

    GetWindowText(GetDlgItem(dlg, IDC_ACCESSORY),  text, 
sizeof(text));
    char_def.accessory = atol(text);

    char_def.magic_spell[0] = 0;
    char_def.magic_spell[1] = 0;

    HWND spell_wnd = GetDlgItem(dlg, IDC_SPELLS);

    
for(int i = 0; i < 64; i++)
    {
        
if(get_listbox_sel(spell_wnd, i))
        {
            
if(i < 32)
                char_def.magic_spell[0] |= (1 << i);
            
else
                char_def.magic_spell[1] |= (1 << (i-32));
        }
    }
}

//////////////////////////////////////////////////////////////////////////////////////////////

BOOL CALLBACK modify_dialog_proc(HWND dlg, UINT msg, WPARAM word_param, LPARAM long_param)
{
    
char text[32];
    HWND spell_wnd;

    
switch(msg)
    {
    
case WM_INITDIALOG:
    {
        
// return an error if there is no character to modify
        if(g_edit_char >= MAX_CHARACTERS)
        {
            EndDialog(dlg, FALSE);
            
return FALSE;
        }

        
// display character number
        sprintf(text, "%lu", g_edit_char);
        SetWindowText(GetDlgItem(dlg, IDC_NUM), text);

        sCharDef& char_def = g_chars[g_edit_char];

        
// display text entries
        SetWindowText(GetDlgItem(dlg, IDC_NAME), char_def.name);
        SetWindowText(GetDlgItem(dlg, IDC_ITEM), char_def.item_filename);

        
// display numerical entries
        sprintf(text, "%lu", char_def.class_index);
        SetWindowText(GetDlgItem(dlg, IDC_CLASS), text);
        sprintf(text, "%lu", char_def.health_points);
        SetWindowText(GetDlgItem(dlg, IDC_HEALTH), text);
        sprintf(text, "%lu", char_def.mana_points);
        SetWindowText(GetDlgItem(dlg, IDC_MANA), text);
        sprintf(text, "%lu", char_def.level);
        SetWindowText(GetDlgItem(dlg, IDC_LEVEL), text);
        sprintf(text, "%lu", char_def.exp);
        SetWindowText(GetDlgItem(dlg, IDC_EXPERIENCE), text);
        sprintf(text, "%lu", char_def.money);
        SetWindowText(GetDlgItem(dlg, IDC_MONEY), text);

        sprintf(text, "%lu", char_def.attack);
        SetWindowText(GetDlgItem(dlg, IDC_ATTACK), text);
        sprintf(text, "%lu", char_def.defense);
        SetWindowText(GetDlgItem(dlg, IDC_DEFENSE), text);
        sprintf(text, "%lu", char_def.agility);
        SetWindowText(GetDlgItem(dlg, IDC_AGILITY), text);
        sprintf(text, "%lu", char_def.resistance);
        SetWindowText(GetDlgItem(dlg, IDC_RESISTANCE), text);
        sprintf(text, "%lu", char_def.mental);
        SetWindowText(GetDlgItem(dlg, IDC_MENTAL), text);
        sprintf(text, "%lu", char_def.to_hit);
        SetWindowText(GetDlgItem(dlg, IDC_TOHIT), text);
        sprintf(text, "%lf", char_def.speed);
        SetWindowText(GetDlgItem(dlg, IDC_SPEED), text);

        sprintf(text, "%lf", char_def.attack_range);
        SetWindowText(GetDlgItem(dlg, IDC_RANGE), text);
        sprintf(text, "%lf", char_def.charge_rate);
        SetWindowText(GetDlgItem(dlg, IDC_CHARGE), text);
        sprintf(text, "%lu", char_def.to_attack);
        SetWindowText(GetDlgItem(dlg, IDC_TOATTACK), text);
        sprintf(text, "%lu", char_def.to_magic);
        SetWindowText(GetDlgItem(dlg, IDC_TOMAGIC), text);
        sprintf(text, "%lu", char_def.drop_item);
        SetWindowText(GetDlgItem(dlg, IDC_DROPITEM), text);
        sprintf(text, "%lu", char_def.drop_chance);
        SetWindowText(GetDlgItem(dlg, IDC_TODROP), text);
        sprintf(text, "%lu", char_def.effect_chance);
        SetWindowText(GetDlgItem(dlg, IDC_TOEFFECT), text);
        sprintf(text, "%lu", char_def.effects);
        SetWindowText(GetDlgItem(dlg, IDC_EFFECT), text);

        sprintf(text, "%lu", char_def.mesh_index);
        SetWindowText(GetDlgItem(dlg, IDC_MESH), text);
        sprintf(text, "%ld", char_def.weapon);
        SetWindowText(GetDlgItem(dlg, IDC_WEAPON), text);
        sprintf(text, "%ld", char_def.armor);
        SetWindowText(GetDlgItem(dlg, IDC_ARMOR), text);
        sprintf(text, "%ld", char_def.shield);
        SetWindowText(GetDlgItem(dlg, IDC_SHIELD), text);
        sprintf(text, "%ld", char_def.accessory);
        SetWindowText(GetDlgItem(dlg, IDC_ACCESSORY), text);

        
// display spell list

        spell_wnd = GetDlgItem(dlg, IDC_SPELLS);
        reset_listbox(spell_wnd);

        
for(int i = 0; i < 64; i++)
        {
            sprintf(text, "%d", i);
            insert_string_to_listbox(spell_wnd, i, text);

            
if(i < 32)
            {
                
if(char_def.magic_spell[0] & (1 << i))
                    set_listbox_sel(spell_wnd, TRUE, i);
            }
            
else
            {
                
if(char_def.magic_spell[1] & (1 << (i - 32)))
                    set_listbox_sel(spell_wnd, TRUE, i);
            }
        }

        
return TRUE;
    }

    
case WM_COMMAND:
        
switch(LOWORD(word_param))
        {
        
case IDC_OK:
            update_entry(dlg, g_edit_char);
            EndDialog(dlg, TRUE);
            
return TRUE;
    
        
case IDC_CANCEL:
            EndDialog(dlg, FALSE);
            
return TRUE;

        
case IDC_SETALL:
            spell_wnd = GetDlgItem(dlg, IDC_SPELLS);

            
for(int i = 0; i < 64; i++)
                set_listbox_sel(spell_wnd, TRUE, i);
            
break;

        
case IDC_CLEARALL:
            spell_wnd = GetDlgItem(dlg, IDC_SPELLS);

            
for(int i = 0; i < 64; i++)
                set_listbox_sel(spell_wnd, FALSE, i);
            
break;
        }

        
break;
    }

    
return FALSE;
}

//////////////////////////////////////////////////////////////////////////////////////////////

LRESULT CALLBACK window_proc(HWND hwnd, UINT msg, WPARAM word_param, LPARAM long_param)
{
    
int sel;
    
char text[256];
    HWND listbox;

    
switch(msg)
    {
    
case WM_COMMAND:
        
switch(LOWORD(word_param))
        {
        
case IDC_NEW:   // new mcl file
            new_mcl();
            
break;

        
case IDC_LOAD:  // load a mcl file
            load_mcl();
            
break;

        
case IDC_SAVE:  // save a mcl file
            save_mcl();
            
break;

        
case IDC_CLEAR: // clear an entry          
            listbox = GetDlgItem(g_hwnd, IDC_CHARACTERS);

            
// see if a spell was selected
            if((sel = (int)get_listbox_cur_sel(listbox)) == LB_ERR)
                
break;
            
            ZeroMemory(&g_chars[sel], 
sizeof(sCharDef));
            reset_character(g_chars[sel]);

            delete_listbox_string(listbox, sel);
            sprintf(text, "%5lu:", sel);
            insert_string_to_listbox(listbox, sel, text);
            
break;

        
case IDC_CHARACTERS:    // edit an entry
            if(HIWORD(word_param) != LBN_DBLCLK)
                
break;
        
case IDC_EDIT:
            listbox = GetDlgItem(hwnd, IDC_CHARACTERS);

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

            g_edit_char = sel;

            DialogBox(NULL, MAKEINTRESOURCE(IDD_MODIFY), hwnd, modify_dialog_proc);
            
            delete_listbox_string(listbox, sel);
            sprintf(text, "%5lu: %s", sel, g_chars[sel].name);
            insert_string_to_listbox(listbox, sel, text);
            
break;
        }

        
break;

    
case WM_CREATE:
        
// Initialize the save/load dialog box info
        ZeroMemory(&g_ofn, sizeof(OPENFILENAME));

        g_ofn.lStructSize   = 
sizeof(OPENFILENAME);
        g_ofn.nMaxFile      = MAX_PATH;
        g_ofn.nMaxFileTitle = MAX_PATH;
        g_ofn.Flags         = OFN_HIDEREADONLY;
        
        strcpy(g_mcl_file, "..\\Data\\Default.MCL");
        
break;

    
case WM_DESTROY:
        PostQuitMessage(0);
        
break;

    
default
        
return DefWindowProc(hwnd, msg, word_param, long_param);
    }

    
return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////

int WINAPI WinMain(HINSTANCE inst, HINSTANCE, LPSTR cmd_line, int cmd_show)
{
    
const char* class_name = "MCLEDIT";

    WNDCLASS wc;  

    
// Register window class
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = window_proc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = DLGWINDOWEXTRA;
    wc.hInstance     = inst;
    wc.hIcon         = LoadIcon(inst, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = class_name;

    RegisterClass(&wc);

    g_hwnd = CreateDialog(inst, MAKEINTRESOURCE(IDD_EDIT), 0, NULL);

    ShowWindow(g_hwnd, cmd_show);
    UpdateWindow(g_hwnd);  

    
// Force a load of characters from default.MCL
    load_chars("..\\Data\\Default.MCL");

    MSG msg;

    
while(GetMessage(&msg, NULL, 0, 0)) 
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }

    UnregisterClass(class_name, inst);

    
return 0;
}

posted on 2007-12-03 22:05 lovedday 閱讀(423) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲区一区二| 免费观看成人www动漫视频| 久久久久久久久久久久久久一区| 亚洲乱码一区二区| 久久aⅴ乱码一区二区三区| 亚洲性感激情| 欧美伦理视频网站| 亚洲第一久久影院| 国内精品久久久久久久影视蜜臀| 一区二区三区欧美在线| 亚洲理伦在线| 欧美福利网址| 亚洲国产精品电影在线观看| 娇妻被交换粗又大又硬视频欧美| 午夜精品免费| 欧美一区2区三区4区公司二百| 欧美日韩亚洲一区二区三区在线 | 亚洲一本视频| 欧美激情亚洲一区| 欧美国产第一页| 亚洲国产视频直播| 鲁大师成人一区二区三区| 久久欧美肥婆一二区| 国产日产欧美a一级在线| 亚洲淫性视频| 欧美一区高清| 国产亚洲欧洲997久久综合| 亚洲午夜在线观看| 午夜欧美大尺度福利影院在线看 | 亚洲精品乱码久久久久久日本蜜臀 | 久久久水蜜桃| 好看的亚洲午夜视频在线| 午夜精品剧场| 六月婷婷一区| 亚洲第一页中文字幕| 蜜臀va亚洲va欧美va天堂| 亚洲高清在线| 一区二区三区精密机械公司| 欧美日韩中文字幕在线| 亚洲视频图片小说| 欧美在线视频不卡| 一区二区在线看| 欧美成人在线免费视频| 亚洲人成在线观看网站高清| 一区二区三区国产在线| 国产精品美女久久| 欧美在线网站| 亚洲国产日韩在线| 亚洲在线免费| 激情综合中文娱乐网| 免费视频一区| 一区二区三区 在线观看视| 久久av一区二区三区漫画| 狠狠色伊人亚洲综合网站色| 欧美超级免费视 在线| 一区二区三区国产在线| 久久一区二区三区四区五区| 亚洲国产日韩欧美在线99 | 国产亚洲精品v| 蜜臀a∨国产成人精品| 99riav国产精品| 久久人人精品| 亚洲一区国产视频| 影音先锋欧美精品| 欧美网站大全在线观看| 久久精品一区二区三区中文字幕| 亚洲国产岛国毛片在线| 久久国产成人| 一区二区三区欧美日韩| 国产一区久久久| 欧美日韩成人综合在线一区二区| 午夜在线视频一区二区区别| 亚洲国产精品电影| 久久精品视频免费观看| 一本一本a久久| 伊人狠狠色j香婷婷综合| 欧美日韩综合久久| 久久一区二区视频| 亚洲欧美日韩系列| 亚洲精品中文字| 美女久久一区| 久久九九精品99国产精品| 在线一区二区三区四区| 国产一区二区三区四区| 欧美特黄一级| 欧美日韩aaaaa| 欧美freesex交免费视频| 欧美一区二区私人影院日本 | 欧美一区深夜视频| 日韩视频在线观看| 欧美激情一区二区在线 | 亚洲精品一区二区三| 久久亚洲精选| 久久久精品一区二区三区| 亚洲一区不卡| 日韩性生活视频| 亚洲人精品午夜| 亚洲福利在线观看| 一区二区三区在线免费观看| 国产伦精品一区二区三区四区免费 | 久久成人精品电影| 午夜在线一区二区| 亚洲视频在线观看| 一区二区三区成人精品| 亚洲免费观看高清在线观看| 亚洲黄色影片| 亚洲国产精品v| 亚洲国产高清在线| 亚洲国产女人aaa毛片在线| 亚洲第一精品电影| 亚洲国产一区在线观看| 亚洲国产一区在线| 亚洲精品免费一二三区| 亚洲精品久久视频| 99视频+国产日韩欧美| 日韩亚洲欧美精品| 妖精成人www高清在线观看| 一区二区三区免费看| 亚洲网址在线| 香蕉成人伊视频在线观看| 午夜视频一区二区| 久久av红桃一区二区小说| 久久久久久亚洲精品不卡4k岛国| 久久久久久久久久久成人| 老司机aⅴ在线精品导航| 久久综合中文字幕| 欧美精品色网| 国产精品毛片高清在线完整版| 国产午夜亚洲精品理论片色戒| 国产三区二区一区久久| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产精品va在线看黑人 | 99国产精品自拍| 亚洲一区在线直播| 久久精品一区二区三区四区| 欧美成ee人免费视频| 欧美性猛交99久久久久99按摩| 国产欧美日韩一级| 亚洲第一精品夜夜躁人人爽| 999在线观看精品免费不卡网站| 亚洲午夜精品久久久久久浪潮| 羞羞色国产精品| 欧美黄色aa电影| 中日韩美女免费视频网址在线观看 | av成人毛片| 久久精品色图| 亚洲精品国产视频| 亚洲综合色在线| 欧美.www| 国产女主播一区| 亚洲人成绝费网站色www| 亚洲免费影视| 欧美高清你懂得| 亚洲欧美日韩国产综合在线| 美日韩免费视频| 国产精品综合av一区二区国产馆| 亚洲二区在线视频| 香蕉久久一区二区不卡无毒影院| 欧美国产日韩xxxxx| 亚洲一区二区三区四区五区午夜 | 亚洲视频一二区| 麻豆精品传媒视频| 亚洲视频碰碰| 欧美成人中文字幕| 国产一区二区三区久久久| 中日韩高清电影网| 男女av一区三区二区色多| 一本色道久久88综合日韩精品 | 欧美gay视频激情| 国产婷婷色一区二区三区在线| 99视频国产精品免费观看| 久久久国产视频91| 一本一本久久a久久精品综合妖精| 久久久无码精品亚洲日韩按摩| 国产精品黄页免费高清在线观看| 亚洲激情不卡| 老巨人导航500精品| 亚洲午夜在线观看视频在线| 欧美日韩一区二区精品| 亚洲人成亚洲人成在线观看图片| 久久亚洲综合| 久久国产精品亚洲va麻豆| 国产精品免费电影| 亚洲视频中文| 亚洲精品一区在线观看| 你懂的亚洲视频| 亚洲国产片色| 欧美激情一区二区三级高清视频| 久久夜色精品国产欧美乱| 激情伊人五月天久久综合| 久久久亚洲人| 久久久久久欧美| 在线观看不卡| 欧美99在线视频观看| 久久久久久亚洲精品不卡4k岛国| 狠狠v欧美v日韩v亚洲ⅴ| 噜噜噜噜噜久久久久久91| 久久久亚洲午夜电影| 亚洲电影免费观看高清| 欧美aaa级|