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

天行健 君子當自強而不息

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 閱讀(421) 評論(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>
            看片网站欧美日韩| 一区二区三区在线免费视频| 亚洲一区二区三区中文字幕| 亚洲国产天堂久久综合网| 久久精品一区二区三区四区| 欧美一级久久久| 亚洲欧美视频在线观看视频| 一区二区三区四区国产精品| 亚洲免费成人av| 亚洲一级黄色av| 欧美在线观看视频| 欧美a级在线| 亚洲免费观看视频| 午夜精品福利一区二区三区av| 亚洲一区在线观看免费观看电影高清| 国产精品狠色婷| 国产日韩欧美一区| 亚洲人成久久| 久久成人国产精品| 日韩视频在线免费观看| 亚洲欧美日韩另类| 免费日韩成人| 国产精品入口| 91久久国产综合久久| 亚洲免费在线电影| 欧美成人xxx| 亚洲欧美另类在线| 欧美精品一区二区三区视频| 国产欧美 在线欧美| 亚洲国产aⅴ天堂久久| 亚洲尤物在线视频观看| 免费日韩视频| 久久成人精品| 亚洲精品乱码久久久久久黑人 | 亚洲国产精品精华液2区45| 日韩亚洲国产精品| 蜜桃av噜噜一区| 亚洲欧洲一区| 久久精品日产第一区二区三区| 在线亚洲伦理| 欧美激情一二区| 精品二区久久| 先锋a资源在线看亚洲| 亚洲激情一区二区三区| 欧美一区二区视频网站| 欧美性大战久久久久久久| 亚洲第一福利视频| 久久久久久综合网天天| 亚洲色图在线视频| 欧美日韩午夜激情| 99综合在线| 亚洲三级影院| 鲁大师成人一区二区三区| 亚洲免费在线播放| 国产精品乱码一区二区三区| 亚洲免费av电影| 欧美高清hd18日本| 国产午夜一区二区三区| 午夜久久电影网| 一区二区三区免费网站| 蜜桃久久精品乱码一区二区| 欧美一级电影久久| 国产欧美日韩三区| 亚洲欧美日韩国产精品| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩国产精品一卡| 亚洲精美视频| 亚洲二区精品| 亚洲一区二区成人| 国产欧美日韩在线视频| 性色一区二区三区| 另类成人小视频在线| 久久看片网站| 亚洲国产精品一区制服丝袜 | 久久一区二区精品| 妖精视频成人观看www| 亚洲精品精选| 欧美日韩亚洲视频一区| 亚洲日本一区二区三区| 欧美va亚洲va日韩∨a综合色| 久久精品视频一| 亚洲国产精品一区二区www| 亚洲黄色影院| 欧美婷婷在线| 欧美亚洲网站| 葵司免费一区二区三区四区五区| 亚洲国产精品成人综合色在线婷婷| 欧美成人免费在线| 欧美日韩岛国| 久久精品国产91精品亚洲| 美女精品在线| 欧美日韩在线精品一区二区三区| 午夜精品久久久久久久| 久久久久久9| 欧美在线一级va免费观看| 亚洲激情在线观看| 欧美激情一区三区| 中文亚洲字幕| 激情欧美一区二区三区| 日韩一级黄色大片| 韩日精品在线| 亚洲性线免费观看视频成熟| 亚洲国产成人在线播放| 亚洲免费一级电影| 日韩一级网站| 久久视频这里只有精品| 亚洲一区二区高清| 蜜月aⅴ免费一区二区三区 | 国产精品白丝av嫩草影院 | 亚洲欧美国产日韩天堂区| 欧美亚洲综合久久| 亚洲手机成人高清视频| 久久久久一区二区三区| 夜夜嗨av一区二区三区中文字幕| 日韩午夜精品视频| 亚洲国产精品久久久| 一本色道**综合亚洲精品蜜桃冫| 国产亚洲欧美在线| 亚洲午夜久久久| 日韩一二在线观看| 久久在线免费| 久久婷婷影院| 欧美了一区在线观看| 久久综合精品一区| 国产无一区二区| 亚洲永久免费精品| 亚洲欧美激情视频| 欧美日韩国产123| 亚洲国产精品成人一区二区 | 99视频精品| 亚洲精品国产日韩| 久久综合狠狠综合久久综青草| 久久国产66| 国产日韩精品久久| 国产亚洲永久域名| 久久久久久久91| 国产日韩欧美一二三区| 亚洲午夜视频在线观看| 亚洲综合二区| 国产精品嫩草99av在线| 亚洲图片在线观看| 欧美一区二区三区视频免费播放 | 在线国产亚洲欧美| 久久午夜激情| 欧美黑人在线播放| 亚洲九九精品| 欧美三级黄美女| 亚洲午夜av在线| 噜噜噜在线观看免费视频日韩| 免费视频亚洲| 亚洲精品国产精品国自产观看浪潮| 欧美xart系列在线观看| 亚洲国产mv| 亚洲视频福利| 国产精品自拍小视频| 国产精品一区视频| 亚洲视屏一区| 久久久亚洲一区| 尤物精品在线| 欧美精品在线免费播放| 99这里只有精品| 久久精品亚洲一区二区| 伊人色综合久久天天五月婷| 欧美成人官网二区| 一区二区三区产品免费精品久久75| 欧美亚洲自偷自偷| 亚洲电影激情视频网站| 欧美日本免费一区二区三区| 亚洲永久网站| 亚洲电影欧美电影有声小说| 亚洲自拍偷拍麻豆| 在线观看国产成人av片| 国产亚洲欧洲| 亚洲免费精彩视频| 亚洲一区二区三区激情| 国产伪娘ts一区| 欧美福利视频在线观看| 亚洲视频播放| 老鸭窝亚洲一区二区三区| 亚洲婷婷在线| 亚洲精品久久嫩草网站秘色| 久久嫩草精品久久久久| 日韩一级在线观看| 国内自拍视频一区二区三区| 欧美精彩视频一区二区三区| 欧美一区二区精品| 亚洲免费精彩视频| 欧美激情一二三区| 欧美在线亚洲在线| 亚洲网站在线播放| 91久久嫩草影院一区二区| 国产精品天天摸av网| 欧美福利一区二区三区| 欧美综合国产| 亚洲自拍偷拍麻豆| 日韩视频中文| 免费的成人av| 久久久欧美一区二区| 欧美一级日韩一级| 欧美午夜无遮挡|