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

天行健 君子當自強而不息

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>
            国产精品欧美日韩久久| 日韩亚洲一区二区| 日韩小视频在线观看专区| 亚洲国产精品久久久久婷婷884| 国产一区二区三区在线免费观看| 国产午夜精品久久| 激情综合激情| 亚洲精品在线观看免费| 一区二区三区波多野结衣在线观看| 亚洲一级黄色片| 午夜精品久久一牛影视| 午夜精品一区二区三区四区| 久久精品国产一区二区三区免费看 | 99国内精品久久| 亚洲影视中文字幕| 久久久亚洲一区| 91久久国产精品91久久性色| 亚洲国产欧美日韩精品| 亚洲永久字幕| 欧美不卡福利| 国产精品综合久久久| 在线日韩中文字幕| 亚洲——在线| 亚洲电影av在线| 午夜欧美精品| 欧美视频一区二区| 好吊成人免视频| 国产精品99久久久久久人| 久久男人资源视频| 一本色道久久加勒比88综合| 久久只有精品| 国产日韩欧美精品在线| 在线综合亚洲| 亚洲成人在线网| 久久国产免费| 国产欧美精品在线| 亚洲自拍都市欧美小说| 亚洲国产精品va| 久久久www成人免费毛片麻豆| 国产精品sm| 一本色道久久综合亚洲精品小说| 狼人社综合社区| 性亚洲最疯狂xxxx高清| 国产精品美女久久久浪潮软件| 亚洲精品永久免费| 免费h精品视频在线播放| 亚洲影院一区| 国产精品免费观看在线| 亚洲视频图片小说| 日韩午夜在线观看视频| 欧美精品自拍偷拍动漫精品| 91久久精品日日躁夜夜躁国产| 老鸭窝亚洲一区二区三区| 欧美一区二区三区在线观看| 国产精品入口尤物| 亚洲欧美在线另类| 亚洲在线观看| 国产午夜精品全部视频播放| 久久国产精品久久久久久电车| 亚洲一区精彩视频| 国产女人精品视频| 久久久久久高潮国产精品视| 久久国产成人| 国产视频久久| 性做久久久久久久免费看| 国产精品久久久久一区二区三区共 | 欧美日韩午夜剧场| 99天天综合性| 日韩一区二区精品视频| 欧美三级电影网| 亚洲女性裸体视频| 亚洲性感激情| 国产一区白浆| 欧美黄色片免费观看| 欧美成人午夜激情| 一区二区激情| 亚洲欧美精品在线| 国内精品久久久久国产盗摄免费观看完整版 | 国产精品午夜久久| 久久久777| 欧美大片在线观看| 亚洲一区综合| 久久久久久日产精品| 亚洲精品在线免费| 亚洲专区免费| 亚洲国产欧美一区二区三区久久| 亚洲国产精品一区二区久| 欧美区在线播放| 久久国产手机看片| 欧美成人伊人久久综合网| 亚洲一区免费视频| 久久久久久97三级| 亚洲一区3d动漫同人无遮挡| 欧美亚洲视频在线看网址| 亚洲国产精品女人久久久| 一本久道综合久久精品| 黄色小说综合网站| 亚洲美女在线观看| 韩国精品在线观看| 亚洲美女免费精品视频在线观看| 国产午夜亚洲精品理论片色戒| 亚洲国产精品激情在线观看| 国产精品一页| 亚洲精品美女在线| 国产一区二区三区四区| 日韩视频一区二区| 亚洲福利一区| 欧美一区二区三区在线| 亚洲已满18点击进入久久| 久久亚洲午夜电影| 久久丁香综合五月国产三级网站| 欧美精品一区二区三区很污很色的 | 99成人在线| 激情偷拍久久| 亚洲新中文字幕| 亚洲最新中文字幕| 久久亚洲一区二区| 亚洲国产毛片完整版 | 欧美与欧洲交xxxx免费观看| 麻豆国产va免费精品高清在线| 午夜一区二区三区在线观看| 欧美久久成人| 午夜精品久久久久久久| 欧美精品一区三区在线观看| 免费久久99精品国产| 国产在线观看一区| 黄色在线一区| 亚洲电影免费| 亚洲国产一区二区视频| 久久国产精彩视频| 久久精品国产亚洲高清剧情介绍| 国产精品日日摸夜夜摸av| 99国产精品视频免费观看一公开| 最新国产乱人伦偷精品免费网站| 久久免费黄色| 欧美成人精品激情在线观看 | 欧美激情一区二区久久久| 久久婷婷成人综合色| 国产香蕉97碰碰久久人人| 在线一区亚洲| 欧美一级淫片播放口| 国产精品免费一区二区三区观看| 一本久道久久综合中文字幕| 亚洲一区国产精品| 国产精品视频网| 欧美一区二区三区在线播放| 巨乳诱惑日韩免费av| 亚洲国产日韩欧美在线动漫| 欧美国产大片| 99国产精品99久久久久久粉嫩| 亚洲在线1234| 韩国三级电影久久久久久| 久久久久久97三级| 亚洲国产一区二区三区a毛片| 99re在线精品| 国产精品一区二区三区四区五区| 欧美一区二区三区久久精品| 免费日韩视频| 亚洲午夜视频| 韩国在线一区| 欧美精品aa| 亚洲一区视频| 欧美成人中文| 亚洲欧美韩国| 亚洲高清视频一区二区| 欧美日韩天堂| 久久久久久九九九九| 亚洲精品精选| 久久女同互慰一区二区三区| 亚洲裸体俱乐部裸体舞表演av| 国产精品久久久久aaaa樱花| 久久久久国色av免费观看性色| 欧美一级专区| 美女国产一区| 亚洲视频高清| 欧美高清在线一区二区| 中文无字幕一区二区三区| 国产视频精品网| 欧美精品一卡二卡| 欧美在线影院在线视频| 亚洲人线精品午夜| 久久午夜视频| 亚洲欧美久久| 亚洲美女毛片| 精品二区久久| 国产日韩欧美日韩大片| 欧美极品aⅴ影院| 久久久久久色| 篠田优中文在线播放第一区| 亚洲全黄一级网站| 免费在线亚洲| 久久久久国色av免费观看性色| 中文亚洲免费| 亚洲最黄网站| 亚洲全部视频| 91久久精品美女| 亚洲国产91精品在线观看| 国产精品私房写真福利视频| 欧美另类人妖| 欧美成人黄色小视频|