def genClassMappingData(self):
        self.__gen_classes()
        self.__fill_classes()

        self.shipclass_data = sortDict(self.shipclass_data)

        shipclass_luatable = 'local d = {}\n'
        shipclass_luatable += '---------------------------------\n'
        shipclass_luatable += '--   以下为舰娘和舰级的对应数据   -- \n'
        shipclass_luatable += '---------------------------------\n'
        shipclass_luatable += '\nd.shipclassDataTb = '
        shipclass_luatable += luatable(self.shipclass_data)
        shipclass_luatable += '\n'
        shipclass_luatable += '\nreturn d\n'

        with open(OUPUT_PATH + LUATABLE_PATH + SHIPCLASSES_MAPPING_DATA +
                  '.lua',
                  'w',
                  encoding='utf-8') as fp:
            fp.write(shipclass_luatable)

        with open(OUPUT_PATH + JSON_PATH + SHIPCLASSES_MAPPING_DATA + '.json',
                  'w',
                  encoding='utf-8') as fp:
            json.dump(self.shipclass_data, fp, ensure_ascii=False, indent=4)
Exemple #2
0
 async def genShinkaiItems(self):
     CATEGORY_MEMBERS = await self.__get_allitems()
     tasks = []
     for category in CATEGORY_MEMBERS:
         title = category['title']
         if title.startswith('Template'):
             continue
         tasks.append(
             asyncio.ensure_future(self.__append_shinkai_item(title)))
     dones, pendings = await asyncio.wait(tasks)
     print('Shinkai-Items: {} done, {} pendings.'.format(
         len(dones), len(pendings)))
     self.items_data = sortDict(self.items_data)
     items_luatable = 'local d = {}\n'
     items_luatable += '\nd.equipDataTable = '
     items_luatable += luatable(self.items_data)
     items_luatable += '\n'
     items_luatable += '\nreturn d\n'
     with open(OUPUT_PATH + LUATABLE_PATH + SHINKAI_ITEMS_DATA + '.lua',
               'w',
               encoding='utf-8') as fp:
         fp.write(items_luatable)
     with open(OUPUT_PATH + JSON_PATH + SHINKAI_ITEMS_DATA + '.json',
               'w',
               encoding='utf-8') as fp:
         json.dump(self.items_data, fp, ensure_ascii=False, indent=4)
Exemple #3
0
 def genItemsData(self):
     self.__load_akashi_list()
     self.__load_ship_types()
     for item_id in self.ITEMS_DB.keys():
         if item_id in self.SLOTITEMS_KCDATA:
             self.__append_item(item_id)
     self.items_data = sortDict(self.items_data)
     items_luatable = 'local d = {}\n'
     items_luatable += '------------------------\n'
     items_luatable += '--   以下为装备数据列表  -- \n'
     items_luatable += '------------------------\n'
     items_luatable += '\nd.equipDataTb = '
     items_luatable += luatable(self.items_data)
     items_luatable += '\n'
     items_luatable += '\nreturn d\n'
     with open(OUPUT_PATH + LUATABLE_PATH + ITEMS_DATA + '.lua', 'w', encoding='utf-8') as fp:
         fp.write(items_luatable)
     with open(OUPUT_PATH + JSON_PATH + ITEMS_DATA + '.json', 'w', encoding='utf-8') as fp:
         json.dump(self.items_data, fp, ensure_ascii=False, indent=4)
 def genShipsData(self):
     self.__map_lvl_up()
     for ship_id in self.SHIPS_DB.keys():
         if ship_id in self.SHIPS_KCDATA:
             self.__append_ship(ship_id)
     self.ships_data = sortDict(self.ships_data)
     ships_luatable = 'local d = {}\n'
     ships_luatable += '------------------------\n'
     ships_luatable += '--   以下为舰娘数据列表  -- \n'
     ships_luatable += '------------------------\n'
     ships_luatable += '\nd.shipDataTb = '
     ships_luatable += luatable(self.ships_data)
     ships_luatable += '\n'
     ships_luatable += '\nreturn d\n'
     with open(OUPUT_PATH + LUATABLE_PATH + SHIPS_DATA + '.lua',
               'w',
               encoding='utf-8') as fp:
         fp.write(ships_luatable)
     with open(OUPUT_PATH + JSON_PATH + SHIPS_DATA + '.json',
               'w',
               encoding='utf-8') as fp:
         json.dump(self.ships_data, fp, ensure_ascii=False, indent=4)
Exemple #5
0
 async def genShinkaiShips(self):
     self.__load_extra()
     categories = await self.__get_allships()
     tasks = []
     for title in categories:
         tasks.append(
             asyncio.ensure_future(self.__append_shinkai_ship(title)))
     dones, pendings = await asyncio.wait(tasks)
     print('Shinkai-Ships: {} done, {} pendings.'.format(
         len(dones), len(pendings)))
     self.ships_data = sortDict(self.ships_data)
     ships_luatable = 'local d = {}\n'
     ships_luatable += '\nd.shipDataTable = '
     ships_luatable += luatable(self.ships_data)
     ships_luatable += '\n'
     ships_luatable += '\nreturn d\n'
     with open(OUPUT_PATH + LUATABLE_PATH + SHINKAI_SHIPS_DATA + '.lua',
               'w',
               encoding='utf-8') as fp:
         fp.write(ships_luatable)
     with open(OUPUT_PATH + JSON_PATH + SHINKAI_SHIPS_DATA + '.json',
               'w',
               encoding='utf-8') as fp:
         json.dump(self.ships_data, fp, ensure_ascii=False, indent=4)
 def gen_luatable(self):
     lua_table = 'local k = {}\n\n'
     lua_table += 'k.EquipUpdateTb = '
     lua_table += utils.luatable(self.weapon_list)
     lua_table += '\n\nreturn k\n'
     return lua_table
Exemple #7
0
    def __map_lvl_up(self):
        ship_series_data = {}
        for series in self.SHIP_SERIES_DB.values():
            ship_loopable = False
            series_ships = series['ships']
            for i in range(len(series_ships)):
                series_ship = series_ships[i]
                
                #next_blueprint = 'next_blueprint' in series_ship and series_ship[
                    #'next_blueprint'] == 'on'
                #next_catapult = 'next_catapult' in series_ship and series_ship[
                    #'next_catapult'] == 'on'
                #next_level = series_ship['next_lvl'] if 'next_lvl' in series_ship \
                    #and series_ship['next_lvl'] else 0

                
                shipid = series_ship['id']
                _ship = self.SHIPS_DB[shipid]
                try:
                    ship_kcid = str(self.SHIPS_KCDATA[shipid]['wiki_id'])
                except KeyError:
                    continue
                next_loop = 'next_loop' in series_ship and series_ship['next_loop'] == 'on'
                is_last_ship = i == len(series_ships)-1
                is_first_ship = i == 0
                
                if not(ship_loopable) and next_loop:
                    ship_loopable = True
                    first_loopable_shipid = shipid
                    first_loopable_kcid = ship_kcid

                if ship_loopable and is_last_ship:
                    _ship['remodel'].update({
                        'next': first_loopable_shipid,
                        'next_lvl': ''
                    })


                if is_first_ship:
                    first_ship = ship_kcid
                    ship_series_data[first_ship] = {}
                    ship_series_data[first_ship]['编号'] = []
                    ship_series_data[first_ship]['符号'] = []

                ship_series_data[first_ship]['编号'].append(ship_kcid)
                _ship['remodel_series'] = first_ship

                if ship_loopable:
                    ship_series_data[first_ship]['符号'].append('⇒')
                    if is_last_ship:
                        ship_series_data[first_ship]['编号'].append(first_loopable_kcid)
                        ship_series_data[first_ship]['符号'].append('end')
                else:
                    if is_last_ship:
                        ship_series_data[first_ship]['符号'].append('end')
                    else:
                        ship_series_data[first_ship]['符号'].append('→')
                
                if ('remodel' in _ship) and ('next' in _ship['remodel']) and not(is_last_ship):
                    next_shipid = _ship['remodel']['next']
                    #can_remodel = 1
                    #if next_blueprint:
                        #can_remodel += 1
                    #if next_catapult:
                        #can_remodel += 1
                    self.SHIPS_DB[next_shipid]['remodel_info'] = 1
                    #self.SHIPS_DB[shipid]['next_type'] = can_remodel
                    
        ships_series_luatable = 'local d = {}\n'
        ships_series_luatable += '------------------------\n'
        ships_series_luatable += '--   以下为舰娘系列数据列表  -- \n'
        ships_series_luatable += '------------------------\n'
        ships_series_luatable += '\nd.shipSeriesDataTb = '
        ships_series_luatable += luatable(ship_series_data)
        ships_series_luatable += '\n'
        ships_series_luatable += '\nreturn d\n'
        with open(OUPUT_PATH + LUATABLE_PATH + SHIP_SERIES_DB + '.lua', 'w', encoding='utf-8') as fp:
            fp.write(ships_series_luatable)
        with open(OUPUT_PATH + JSON_PATH + SHIP_SERIES_DB + '.json', 'w', encoding='utf-8') as fp:
            json.dump(ship_series_data, fp, ensure_ascii=False, indent=4)
    try:
        options, args = getopt.getopt((sys.argv[1:]), "hce:s:",
                                      ["help", "clean", "equip", "ship"])

    except getopt.GetoptError:
        print("usage: generator.py (--celan) ")
    db = db_session()
    for name, value in options:
        if name in ("-c", "--clean"):
            os.remove(os.getcwd() + "/kancolle.db")
            print("Database has been removed.")
            sys.exit(0)
        elif name in ("-h", "--help"):
            print("usage: generator.py (--celan) (--equip) (--ship)")

    generate_db()
    equip = db.query(Equipment).all()
    for each in equip:

        name = os.getcwd() + '/equipments/' + str(
            list(json.loads(str(each)))[0]) + ".lua"
        with open(name, 'w') as f:
            f.write(luatable(json.loads(str(each))))

    ship = db.query(Ship).all()
    for each in ship:
        name = os.getcwd() + '/ships/' + str(list(json.loads(
            str(each)))[0]) + ".lua"
        with open(name, 'w') as f:
            f.write(luatable(json.loads(str(each))))