skill_id5=COL_SKILL2_ID5,
skill_id6=COL_SKILL2_ID6,
skill_id7=COL_SKILL2_ID7)
+COUNT_SKILL2_POS_SQL = u"""select count({seed2}) from {{table_name}}
+where {seed2}={{seed2}} and {{skill_pos}}={{skill2_id}}""".format(
+ seed2=COL_SEED2)
+SELECT_SEED2_FROM_SKILL2_SQL = u"""select {seed2} from {{table_name}} where
+ {skill_id1} = {{skill2_id}} or
+ {skill_id2} = {{skill2_id}} or
+ {skill_id3} = {{skill2_id}} or
+ {skill_id4} = {{skill2_id}} or
+ {skill_id5} = {{skill2_id}} or
+ {skill_id6} = {{skill2_id}} or
+ {skill_id7} = {{skill2_id}} """.format(
+ seed2=COL_SEED2,
+ skill_id1=COL_SKILL2_ID1,
+ skill_id2=COL_SKILL2_ID2,
+ skill_id3=COL_SKILL2_ID3,
+ skill_id4=COL_SKILL2_ID4,
+ skill_id5=COL_SKILL2_ID5,
+ skill_id6=COL_SKILL2_ID6,
+ skill_id7=COL_SKILL2_ID7)
class Seed2Skill2TableGenerator(object):
u""" Seed2とスキル名の組み合わせテーブルを作成するクラス """
names = [self._skill_id2name[x] for x in self._cursor.fetchone()]
result_dict[self._amu_id2name[amu_id]] = tuple(names)
return result_dict
+
+ def select_skill_position_from_seed2_ids(self, amulet_id, seed2, skill2_id):
+ u""" 与えられたお守りIdおよびSeed2において、
+ 指定されたスキルIdが何枠目で発生するのかを返す
+ return tuple of index"""
+ result_list = []
+ table_name = self._amu_id2table_name[amulet_id]
+ for i, col in enumerate(COL_SKILL2_LIST):
+ sql = COUNT_SKILL2_POS_SQL.format(
+ seed2=seed2,
+ table_name=table_name,
+ skill2_id=skill2_id,
+ skill_pos=col)
+ self._cursor.execute(sql)
+ count = self._cursor.fetchone()[0]
+ if count > 0:
+ result_list.append(i)
+ return tuple(result_list)
+
+ def select_skill_position_from_seed2_names(self, amulet_name, seed2, skill2_name):
+ u""" 与えられたお守り名およびSeed2において、
+ 指定されたスキル名が何枠目で発生するのかを返す
+ return tuple of index"""
+ if amulet_name in self._amu_name2id and skill2_name in self._skill_name2id:
+ amulet_id = self._amu_name2id[amulet_name]
+ skill2_id = self._skill_name2id[skill2_name]
+ return self.select_skill_position_from_seed2_ids(amulet_id, seed2, skill2_name)
+ else:
+ return tuple()
+
+ def select_seed2s_from_skill2_id(self, amulet_id, skill2_id):
+ u""" 指定されたお守りIdで指定されたスキルIdを持つSeed2を返す """
+ table_name = self._amu_id2table_name[amulet_id]
+ sql = SELECT_SEED2_FROM_SKILL2_SQL.format(table_name=table_name,
+ skill2_id=skill2_id)
+ self._cursor.execute(sql)
+ return set([x[0] for x in self._cursor.fetchall()])