精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Paradox 的數據文件格式

開發 開發工具
Paradox 是我很喜歡的一個游戲公司,在所謂 P 社 5 萌中,十字軍之王和鋼鐵雄心都只有淺嘗,但在維多利亞和群星上均投入了大量時間和精力。

[[201283]]

Paradox 是我很喜歡的一個游戲公司,在所謂 P 社 5 萌中,十字軍之王和鋼鐵雄心都只有淺嘗,但在維多利亞和群星上均投入了大量時間和精力。 這些游戲基于同一套引擎,所以數據文件格式也是共通的。P 社開放了 Mod ,允許玩家來修改游戲,所以數據文件都是明文文本存放在文件系統中,這給了我們一個極好的學習機會:對于游戲從業者,我很有興趣看看成熟引擎是如何管理游戲數據和游戲邏輯的。

據我所接觸到的國內游戲公司,包括我們自己公司在內,游戲數據大都是基于 excel 這種二維表來表達的。我把它稱為 csv 模式。這種模式的特點是,基礎數據結構基于若干張二維表,每張表有不確定的行數,但每行有固定了列數。用它做基礎數據結構的缺陷是很明顯的,比如它很難表達樹狀層級結構。這往往就依賴做一個中間層,規范一些使用格式,在其上模擬出復雜數據結構。

另一種在軟件行業廣泛使用的基礎數據結構是 json/xml 模式。json 比 xml 要簡單。它的特點就是定義了兩種基礎的復合結構,字典和數組,允許結構嵌套。基于這種模式管理游戲數據的我也見過一些。不過對于策劃來說,編輯樹結構的數據終究不如 excel 拉表方便。查看起來也沒有特別好的可視化工具,所以感覺用的人要少一些。

最開始,我以為 P 社的數據文件是偏向于后一種 json 模式。但實際研究下來又覺得有很大的不同。今天我嘗試用 lpeg 寫了一個簡單的 parser 試圖把它讀進 lua vm ,寫完 parser 后突然醒悟過來,其實它就是基于的嵌套 list ,不正是 lisp 嗎?想明白這點后,有種醍醐灌頂的感覺,的確 lisp 模式要比 json 模式簡潔的多,并不比 csv 模式復雜。但表達能力卻強于它們兩者,的確是一個更好的數據組織方案。

我們來看一個從群星中隨便摘錄的例子(有點長,但挺有代表性):

  1. country_event = { 
  2.     id = primitive.16 
  3.     hide_window = yes 
  4.  
  5.     trigger = { 
  6.         is_country_type = primitive 
  7.         has_country_flag = early_space_age 
  8.         #NOT = { has_country_flag = recently_advanced } 
  9.         OR = { 
  10.             AND = { 
  11.                 exists = from 
  12.                 from = { 
  13.                     OR = { 
  14.                         is_country_type = default 
  15.                         is_country_type = awakened_fallen_empire 
  16.                     } 
  17.                 } 
  18.             } 
  19.             years_passed > 25 
  20.         } 
  21.     } 
  22.  
  23.     mean_time_to_happen = { 
  24.         years = 100 
  25.  
  26.         modifier = { 
  27.             factor = 0.6 
  28.             has_country_flag = acquired_tech 
  29.         } 
  30.     } 
  31.  
  32.     immediate = { 
  33.         remove_country_flag = early_space_age 
  34.         set_country_flag = primitives_can_into_space 
  35.         set_country_type = default 
  36.         change_country_flag = random 
  37.         if = { 
  38.             limit = { is_species_class = MAM } 
  39.             set_graphical_culture = mammalian_01 
  40.         } 
  41.         if = { 
  42.             limit = { is_species_class = REP } 
  43.             set_graphical_culture = reptilian_01 
  44.         } 
  45.         if = { 
  46.             limit = { is_species_class = AVI } 
  47.             set_graphical_culture = avian_01 
  48.         } 
  49.         if = { 
  50.             limit = { is_species_class = ART } 
  51.             set_graphical_culture = arthropoid_01 
  52.         } 
  53.         if = { 
  54.             limit = { is_species_class = MOL } 
  55.             set_graphical_culture = molluscoid_01 
  56.         } 
  57.         if = { 
  58.             limit = { is_species_class = FUN } 
  59.             set_graphical_culture = fungoid_01 
  60.         } 
  61.         change_government = { 
  62.             authority = random 
  63.             civics = random 
  64.         } 
  65.         set_name = random 
  66.         if = { 
  67.             limit = { 
  68.                 home_planet = { 
  69.                     has_observation_outpost = yes 
  70.                 } 
  71.             } 
  72.             home_planet = { 
  73.                 observation_outpost_owner = { 
  74.                     country_event = { id = primitive.17 } 
  75.                 } 
  76.             } 
  77.         } 
  78.         add_minerals = 1000 # enough for a spaceport and then some 
  79.         add_energy = 500 
  80.         add_influence = 300 
  81.         capital_scope = { 
  82.             every_tile = { 
  83.                 limit = { 
  84.                     has_blocker = yes 
  85.                     NOR = { 
  86.                         has_blocker = tb_decrepit_dwellings 
  87.                         has_blocker = tb_failing_infrastructure 
  88.                     } 
  89.                 } 
  90.                 remove_blocker = yes 
  91.             } 
  92.             while = { 
  93.                 limit = {  
  94.                     num_pops < 8 
  95.                     any_tile = { 
  96.                         has_grown_pop = no 
  97.                         has_growing_pop = no 
  98.                         has_blocker = no 
  99.                     } 
  100.                 } 
  101.                 random_tile = { 
  102.                     limit = { 
  103.                         has_grown_pop = no 
  104.                         has_growing_pop = no 
  105.                         has_blocker = no 
  106.                     } 
  107.                     create_pop = { 
  108.                         species = owner 
  109.                     } 
  110.                 } 
  111.             } 
  112.             random_tile = { 
  113.                 limit = { 
  114.                     has_grown_pop = yes 
  115.                     OR = { 
  116.                         has_building = "building_primitive_farm" 
  117.                         has_building = "building_primitive_factory" 
  118.                         has_building = no 
  119.                     } 
  120.                 } 
  121.                 clear_deposits = yes 
  122.                 add_deposit = d_mineral_food_deposit 
  123.                 set_building = "building_capital_2" 
  124.             } 
  125.             random_tile = { 
  126.                 limit = { 
  127.                     has_grown_pop = yes 
  128.                     OR = { 
  129.                         has_building = "building_primitive_farm" 
  130.                         has_building = "building_primitive_factory" 
  131.                         has_building = no 
  132.                     } 
  133.                 } 
  134.                 clear_deposits = yes 
  135.                 add_deposit = d_mineral_deposit 
  136.                 set_building = "building_mining_network_1" 
  137.             } 
  138.             random_tile = { 
  139.                 limit = { 
  140.                     has_grown_pop = yes 
  141.                     OR = { 
  142.                         has_building = "building_primitive_farm" 
  143.                         has_building = "building_primitive_factory" 
  144.                         has_building = no 
  145.                     } 
  146.                 } 
  147.                 clear_deposits = yes 
  148.                 add_deposit = d_mineral_deposit 
  149.                 set_building = "building_mining_network_1" 
  150.             } 
  151.             random_tile = { 
  152.                 limit = { 
  153.                     has_grown_pop = yes 
  154.                     OR = { 
  155.                         has_building = "building_primitive_farm" 
  156.                         has_building = "building_primitive_factory" 
  157.                         has_building = no 
  158.                     } 
  159.                 } 
  160.                 clear_deposits = yes 
  161.                 add_deposit = d_farmland_deposit 
  162.                 set_building = "building_hydroponics_farm_1" 
  163.             } 
  164.             random_tile = { 
  165.                 limit = { 
  166.                     has_grown_pop = yes 
  167.                     OR = { 
  168.                         has_building = "building_primitive_farm" 
  169.                         has_building = "building_primitive_factory" 
  170.                         has_building = no 
  171.                     } 
  172.                 } 
  173.                 clear_deposits = yes 
  174.                 add_deposit = d_farmland_deposit 
  175.                 set_building = "building_hydroponics_farm_1" 
  176.             } 
  177.             random_tile = { 
  178.                 limit = { 
  179.                     has_grown_pop = yes 
  180.                     OR = { 
  181.                         has_building = "building_primitive_farm" 
  182.                         has_building = "building_primitive_factory" 
  183.                         has_building = no 
  184.                     } 
  185.                 } 
  186.                 clear_deposits = yes 
  187.                 add_deposit = d_energy_deposit 
  188.                 set_building = "building_power_plant_1" 
  189.             } 
  190.             random_tile = { 
  191.                 limit = { 
  192.                     has_grown_pop = yes 
  193.                     OR = { 
  194.                         has_building = "building_primitive_farm" 
  195.                         has_building = "building_primitive_factory" 
  196.                         has_building = no 
  197.                     } 
  198.                 } 
  199.                 clear_deposits = yes 
  200.                 add_deposit = d_energy_deposit 
  201.                 set_building = "building_power_plant_1" 
  202.             } 
  203.             random_tile = { 
  204.                 limit = { 
  205.                     has_grown_pop = yes 
  206.                     OR = { 
  207.                         has_building = "building_primitive_farm" 
  208.                         has_building = "building_primitive_factory" 
  209.                         has_building = no 
  210.                     } 
  211.                 } 
  212.                 clear_deposits = yes 
  213.                 add_deposit = d_energy_deposit 
  214.                 set_building = "building_power_plant_1" 
  215.             } 
  216.             remove_all_armies = yes 
  217.             create_army = { 
  218.                 name = random 
  219.                 owner = PREV 
  220.                 species = owner_main_species 
  221.                 type = "defense_army" 
  222.             } 
  223.             create_army = { 
  224.                 name = random 
  225.                 owner = PREV 
  226.                 species = owner_main_species 
  227.                 type = "defense_army" 
  228.             } 
  229.             create_army = { 
  230.                 name = random 
  231.                 owner = PREV 
  232.                 species = owner_main_species 
  233.                 type = "defense_army" 
  234.             } 
  235.             create_army = { 
  236.                 name = random 
  237.                 owner = PREV 
  238.                 species = owner_main_species 
  239.                 type = "defense_army" 
  240.             } 
  241.         } 
  242.         random_owned_ship = { 
  243.             limit = { is_ship_size = primitive_space_station } 
  244.             fleet = { destroy_fleet = THIS } 
  245.         } 
  246.     } 

起初,我很疑惑在這個格式中,為啥賦值和相等都用的 = ,這不是容易引起歧義么?但是你從 lisp 的角度來看就簡單了。等于號只是為了便于策劃書寫和閱讀的一個變形。所謂 id = primitive.16 你可以理解為 ( id, primitive.16 ) 而 iscountrytype = default 一樣可以理解為 ( iscountrytype , default ) 。 而

  1. create_army = { 
  2.                 name = random 
  3.                 owner = PREV 
  4.                 species = owner_main_species 
  5.                 type = "defense_army" 
  6.             } 

本質上是 ( create_army , ( ( name, random ) , (owner, PREV), (species, owner_main_species), (type, "defense_army") ) )。

基礎數據結構只要能表達出來,怎么理解這些 list 是更上層的工作,這就和我們在 csv 中去模擬樹結構是一樣的道理。只不過 years_passed > 25 這樣的東西,被翻譯成 ( years_passed, > , 25 ) 有三個元素。上層解析的時候,如果確定它是一個邏輯表達式,就很容易在 2 個元素的 list 中間插入一個 = 補全。

這種結構很容易描述一些控制結構,比如上面例子中的 if 。我還在其它數據中發現了 repeat while 等控制結構,這些都是上層的工作,和底層數據模型無關。但不得不說,lisp 模式比 csv 模式更容易做此類控制結構。

把這種數據結構翻譯成 lua 也很容易:只需要用 lua table 的 array 來保存即可。但為了使用方便,可以加一個代理結構。如果上層業務想把一個 list 解析成字典,就在 cache 中臨時生成一個 hash 表加快查詢即可。我們甚至可以把它直接存在 C 內存中,只在 lua 中暴露出遍歷以及高層的訪問方法。所謂高層的訪問方法指,可以直接讀取 if repeat 等控制結構,或是把帶 AND OR 這樣的復合 list 直接翻譯成一個條件表達式。

原文鏈接:https://blog.codingnow.com/2017/07/paradox_data_format.html#more

【本文為51CTO專欄作者“云風”的原創稿件,轉載請通過51CTO聯系原作者獲取授權】

責任編輯:xinxiaoliang 來源: 51CTO專欄
相關推薦

2019-11-18 09:00:10

大數據數據格式文件格式

2012-05-29 09:06:32

Hadoop文件格式

2016-12-01 14:47:20

2012-05-29 09:48:21

Hadoop

2010-08-03 15:40:30

NFS文件格式

2023-11-02 09:54:21

ODT文件

2021-09-29 15:52:26

計算機配置文件語言

2010-07-13 14:09:07

SQL Server數

2010-11-03 15:15:26

DB2數據移動

2010-08-02 14:19:28

DB2數據庫

2020-04-26 10:49:37

大數據Hadoop文件格式

2017-06-16 09:58:34

Hive格式壓縮算法

2011-03-03 10:48:36

DB2數據庫外部文件

2009-07-20 09:44:31

DB2外部文件格式

2010-08-02 11:38:43

DB2外部文件格式

2024-03-17 19:14:28

2009-06-02 14:12:26

Hibernate配置文件格式

2010-04-30 16:01:17

2010-10-13 14:02:01

MySQL數據文件

2010-10-29 14:03:39

Oracle移動數據文
點贊
收藏

51CTO技術棧公眾號

日本一区二区免费在线| 一本色道久久精品| 日韩一区二区三区在线| 青青青青草视频| 精品999视频| 国产综合久久久久影院| 777精品视频| 成人信息集中地| 国产一级成人av| 在线观看免费视频综合| 草草草视频在线观看| 欧美扣逼视频| 国产成人精品免费在线| 国产福利精品av综合导导航| 精品国产乱码久久久久久鸭王1| 亚洲精华一区二区三区| 这里只有精品免费| 欧美日韩一区二区在线免费观看| 在线中文字幕视频观看| 国产亚洲成av人在线观看导航| 亚洲一区二区三区视频| 日本黄色中文字幕| 黄色亚洲在线| 久久亚洲精品成人| 色一情一交一乱一区二区三区| 中文久久电影小说| 欧美一区二区三区影视| www.涩涩涩| 成人影院入口| 午夜av一区二区三区| 99亚洲精品视频| 成人在线观看黄色| 91麻豆精东视频| 国产亚洲福利社区| a级片在线播放| 国内精品免费**视频| 国产精品第一区| 日韩特黄一级片| 欧美特黄一区| 九九九久久国产免费| 久久久精品成人| 免费短视频成人日韩| 日韩av有码在线| 人妻体内射精一区二区三区| 涩爱av色老久久精品偷偷鲁| 678五月天丁香亚洲综合网| 能看的毛片网站| 春暖花开亚洲一区二区三区| 色综合中文字幕国产| 国产免费成人在线| 成人免费直播| 色婷婷久久久久swag精品| 97在线免费公开视频| 午夜影院一区| 色综合一区二区三区| 可以免费观看av毛片| 成人影院av| 欧洲中文字幕精品| 亚洲精品久久久中文字幕| 欧美暴力调教| 欧美日韩国产小视频| 自拍偷拍21p| 999精品嫩草久久久久久99| 欧美日本不卡视频| 91人妻一区二区三区| 亚洲成人影音| 欧美精品一区二区三区蜜桃视频| 亚洲一级Av无码毛片久久精品| 盗摄系列偷拍视频精品tp| 日韩激情视频在线| 成年人在线免费看片| 日韩成人三级| 欧美日韩国产第一页| 日韩网红少妇无码视频香港| 久久精品人人| 国产日韩在线免费| 亚洲国产中文字幕在线| 26uuu欧美| 一本一道久久a久久综合精品| 国内外激情在线| 亚洲成人激情av| 成年人小视频网站| 91精品福利观看| 精品国产髙清在线看国产毛片| 亚洲男人在线天堂| 亚洲视频国产| 亚洲欧洲日产国产网站| 黄色片子在线观看| 国产精品婷婷| 91精品久久久久久久久久久久久| 懂色av成人一区二区三区| 国产喂奶挤奶一区二区三区| 天天干天天色天天爽| 激情黄产视频在线免费观看| 欧美视频在线不卡| 人妻体体内射精一区二区| 日本午夜精品| 麻豆一区二区在线观看| 久久久久99精品成人片我成大片| 久久91精品国产91久久小草| 国产一区二区三区四区五区加勒比 | 免费黄色福利视频| rebdb初裸写真在线观看| 色香色香欲天天天影视综合网| 中日韩av在线播放| 欧美色资源站| 久色乳综合思思在线视频| 国产无套丰满白嫩对白| 国产原创一区二区| 欧美亚洲国产免费| 毛片在线网址| 欧美人与z0zoxxxx视频| 国内精品久久99人妻无码| 欧美1区视频| 国产精品免费视频久久久| 色综合久久久久久| 中文字幕中文字幕在线一区| 亚洲熟妇无码另类久久久| av在线亚洲一区| 亚洲亚裔videos黑人hd| 69精品久久久| 国产一区二区三区免费播放| 色噜噜狠狠色综合网| 2021天堂中文幕一二区在线观| 69成人精品免费视频| 女人十八毛片嫩草av| 国产欧美精品| 国产精品高清一区二区三区| 国内精品不卡| 欧美日韩精品综合在线| 香蕉视频黄色在线观看| 亚洲欧洲一级| 97超级碰碰| av网站在线免费| 欧美色视频在线| 日本二区在线观看| 乱人伦精品视频在线观看| 精品久久蜜桃| 免费成人在线电影| 亚洲电影成人av99爱色| 久草视频中文在线| 国产精品亚洲一区二区三区在线| 一区二区视频国产| 天堂久久一区| 日韩一区二区三区在线播放| 中文无码精品一区二区三区| 欧美激情中文不卡| 久草在在线视频| av影片在线一区| 国产精品福利在线观看网址| 精品资源在线看| 91成人免费网站| 男人的天堂官网| 蜜桃av噜噜一区| 最新精品视频| 国产精品亚洲欧美一级在线 | www色com| 喷水一区二区三区| 亚洲一区三区| 国产精品一区二区美女视频免费看 | 亚洲一区精品电影| 日本大片在线播放| 亚洲国产欧美一区二区三区同亚洲| 国产精品99精品无码视| av一区二区不卡| 色综合av综合无码综合网站| 国产免费av一区二区三区| 国产精品久久久久免费a∨| av电影在线观看网址| 欧美人体做爰大胆视频| 福利所第一导航| av网站免费线看精品| 免费大片在线观看| 日韩成人三级| 国产精品v欧美精品∨日韩| 激情aⅴ欧美一区二区欲海潮| 亚洲色图35p| 亚洲视频在线观看一区二区 | 一色桃子一区二区| 国产又粗又长又大视频| 亚洲成av人片在线观看| 熟女少妇内射日韩亚洲| 国产一区二区毛片| 免费成人在线视频网站| 四季av一区二区凹凸精品| av免费精品一区二区三区| 樱花草涩涩www在线播放| 最好看的2019年中文视频| 国内毛片毛片毛片毛片| 福利视频第一区| 国产精品白丝喷水在线观看| 91免费视频网址| 日韩av自拍偷拍| 亚洲美女黄色| 一区二区三区四区视频在线| 懂色av一区二区| 国产精品视频在线播放| 国产99在线| 俺去亚洲欧洲欧美日韩| 十九岁完整版在线观看好看云免费| 欧美日韩精品一区二区天天拍小说 | 91九色精品视频| 中文字幕21页在线看| 久久伊人精品天天| 免费黄色在线视频网站| 欧美成人精品福利| 中日韩在线观看视频| 午夜欧美大尺度福利影院在线看 | 一区二区免费在线| 国产毛片欧美毛片久久久| 成人成人成人在线视频| 成年人三级黄色片| 老司机精品久久| 国产妇女馒头高清泬20p多| 97人人精品| 欧美日韩精品免费观看| 懂色av一区二区| 91精品在线影院| 精品久久在线| 国产97色在线|日韩| free性欧美| 久久6精品影院| 免费超碰在线| 中文国产成人精品| 男女视频在线观看| 日韩经典一区二区三区| 亚洲狼人综合网| 日韩一区二区麻豆国产| 97人妻人人澡人人爽人人精品| 欧洲另类一二三四区| 毛片基地在线观看| 午夜电影一区二区| 日本少妇xxxx动漫| 亚洲国产成人高清精品| 免费网站看av| 亚洲免费资源在线播放| 天天操夜夜操av| 国产精品久久久久久久久免费樱桃 | 欧美成人午夜激情| 欧美成人三区| 日韩中文字幕在线免费观看| 2019中文字幕在线视频| 国产亚洲欧洲高清| 成人午夜电影在线观看| 亚洲人av在线影院| 国产资源在线播放| 国产亚洲激情在线| 成人午夜影视| 色999日韩欧美国产| 亚洲1卡2卡3卡4卡乱码精品| 自拍偷拍亚洲区| 日本中文字幕在线2020| 日韩在线视频网| fc2ppv国产精品久久| 欧美成年人在线观看| 欧美78videosex性欧美| 久久久久久久久中文字幕| 91美女主播在线视频| 欧美综合一区第一页| 日韩pacopacomama| 国产精品免费网站| 91麻豆精品国产综合久久久 | 国产99精品| 欧美日韩一区在线视频| 成人羞羞网站入口| 青青草原国产免费| 狠狠色狠狠色综合日日tαg| 男人日女人视频网站| 天堂成人免费av电影一区| 韩国视频一区二区三区| 精品一区二区久久| 国产精品日日摸夜夜爽| 91视频一区二区三区| 国产成人无码精品久久二区三| 中文字幕不卡在线| 日本天堂中文字幕| 亚洲成av人片在线| 欧美男人天堂网| 欧美一级黄色片| 手机看片福利在线| 在线成人激情黄色| 日本乱理伦在线| 51精品在线观看| 黄色成人在线观看网站| 国产精品免费一区二区三区观看 | 99久久伊人| 91视频最新| 国产不卡一二三区| 欧洲美女和动交zoz0z| 亚洲激情社区| 亚洲欧美自拍另类日韩| 福利一区二区在线观看| 中文字幕国产综合| 亚洲精品精品亚洲| 最近免费中文字幕大全免费版视频| 欧美日韩国产综合视频在线观看| 日本精品久久久久久| 中文字幕日韩在线视频| 欧美人与牲禽动交com| 国产精品美女网站| 国产精品调教视频| 一区二区三区在线观看www| 国产美女诱惑一区二区| 日韩精品视频网址| 久久蜜桃一区二区| 欧美毛片在线观看| 欧美三级电影网| 日本又骚又刺激的视频在线观看| 久久这里有精品| 在线成人视屏| 国产日韩在线一区二区三区| 欧美电影三区| 国产成人精品无码播放| 国产精品一区二区三区乱码| 免费黄色片网站| 欧美日韩免费看| 亚洲成人777777| 久久精品男人天堂| 亚洲爱爱视频| 久久精品日产第一区二区三区精品版 | 国产毛片一区二区| avhd101老司机| 欧美日韩日本国产| 国产成人无码www免费视频播放| 久久精品国产亚洲精品2020| 国产经典一区| 久久免费一区| 99热这里只有精品8| 欧美丰满熟妇bbb久久久| 亚洲欧美电影一区二区| 在线视频 中文字幕| 国产亚洲欧美一区| 欧美成人精品三级网站| 久久久久久欧美精品色一二三四| 黄色欧美日韩| 少妇熟女视频一区二区三区| 亚洲美女屁股眼交3| 97精品人妻一区二区三区在线| 在线观看91久久久久久| 韩国成人漫画| 欧美日韩亚洲在线| 视频一区二区三区中文字幕| 一女三黑人理论片在线| 天天色天天爱天天射综合| 国产18精品乱码免费看| 久久久人成影片一区二区三区| 亚洲精品观看| 蜜臀精品一区二区| 成人免费毛片嘿嘿连载视频| 久久机热这里只有精品| 精品国产乱码久久久久久浪潮| 超碰97免费在线| 精品网站在线看| 久久精品观看| 国产特黄级aaaaa片免| 日本丶国产丶欧美色综合| 超碰在线国产| 91精品久久久久久久久久久久久| 午夜免费一区| 成人在线短视频| 亚洲国产va精品久久久不卡综合 | 日韩中文av在线| av在线国产精品| 久久99久久99精品| 99re在线精品| 波多野结衣二区三区| xxxxxxxxx欧美| 日韩在线网址| 91传媒久久久| 国产精品久久久99| 亚洲欧美激情另类| 日本三级韩国三级久久| 久久国产中文字幕| 动漫av在线免费观看| 欧美午夜激情在线| 一本一道波多野毛片中文在线| 成人在线免费观看视视频| 伊人成人在线视频| 亚洲第一香蕉网| 7777女厕盗摄久久久| 1234区中文字幕在线观看| 欧洲一区二区在线| 国产精品一级片| 亚洲婷婷综合网| 久久亚洲精品中文字幕冲田杏梨| 精品久久ai电影| 色乱码一区二区三区在线| 亚洲最快最全在线视频| 免费在线观看污视频| 91日韩在线播放| 久久国产免费| 69av.com| 在线日韩精品视频| 国产精品调教视频| 亚洲欧美偷拍另类| 色中色一区二区| 在线h片观看| 亚洲国产综合自拍| 97se狠狠狠综合亚洲狠狠| 亚洲在线精品视频|