Initial commit

This commit is contained in:
Naruse
2024-11-07 23:25:15 +08:00
commit e8e5f3a1a7
246 changed files with 27356 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
import dataclasses
from typing import List
from lib.proto import AvatarSubSkill
@dataclasses.dataclass
class Skill:
skill_id : int
sub_skill_lists : dict[int, AvatarSubSkill] = dataclasses.field(default_factory=dict)
@dataclasses.dataclass
class AvatarManager:
avatar_id: int
star: int
level: int
exp: int
fragment: List
touch_good_feel: List
today_has_add_good_feel: int
dress_id: int
dress_lists: List
sub_star: int
skill_lists: dict[int, Skill]
weapon_id: int = 0
stigmata_ids: dict = dataclasses.field(default_factory=dict)
@dataclasses.dataclass
class AvatarTeamManager:
team_id: int
name: str
astral_mate_id: int
is_using_astra_mate: bool
elf_id_list: List
avatar_id_list: List

View File

@@ -0,0 +1,16 @@
import dataclasses
from typing import List
@dataclasses.dataclass
class ElfSkill:
skill_id: int
level: int
@dataclasses.dataclass
class ElfManager:
elf_id: int
level: int
star: int
exp: 0
skill_list: dict[int,ElfSkill] = dataclasses.field(default_factory=dict)

View File

@@ -0,0 +1,8 @@
from enum import Enum
class DataType(Enum):
MATERIAL = 1
WEAPON = 2
STIGMATA = 3
AVATAR = 4
PLAYER = 5

View File

@@ -0,0 +1,6 @@
from enum import Enum
class MainType(Enum):
MATERIAL = 1
WEAPON = 2
STIGMATA = 3

View File

@@ -0,0 +1,32 @@
import dataclasses
@dataclasses.dataclass
class Material:
item_id : int
num : int
@dataclasses.dataclass
class Weapon:
item_id : int
level : int
exp : int
is_locked : bool
is_extracted : bool
equip_avatar_id: int
@dataclasses.dataclass
class Stigmata:
item_id : int
level : int
exp : int
slot_num : int
refine_value : int
promote_times : int
is_locked : bool
equip_avatar_id : int
@dataclasses.dataclass
class InventoryManager:
material_items : dict[int,Material] = dataclasses.field(default_factory=dict)
weapon_items : dict[int,Weapon] = dataclasses.field(default_factory=dict)
stigmata_items : dict[int,Stigmata] = dataclasses.field(default_factory=dict)

View File

@@ -0,0 +1,131 @@
import dataclasses
from database import mongo
from game_server.game.avatar.avatar_manager import AvatarManager,Skill,AvatarSubSkill,AvatarTeamManager
from game_server.game.inventory.inventory_manager import InventoryManager,Material,Weapon,Stigmata
from game_server.game.elf.elf_manager import ElfManager,ElfSkill
from game_server.game.enum.item_type import MainType
@dataclasses.dataclass
class WarshipAvatar:
warship_first_avatar_id: int
warship_second_avatar_id: int
@dataclasses.dataclass
class Player:
uid: int
name: str
level: int
exp: int
hcoin: int
stamina: int
signature: str
head_photo: int
head_frame: int
warship_id: int
assistant_avatar_id: int
birth_date: int
warship_avatar: WarshipAvatar
# Player managers
avatars: dict[int, AvatarManager] = dataclasses.field(default_factory=dict)
inventory: InventoryManager = dataclasses.field(default_factory=InventoryManager)
elfs: dict[int,ElfManager] = dataclasses.field(default_factory=dict)
custom_avatar_team_list: dict[int,AvatarTeamManager] = dataclasses.field(default_factory=dict)
def init_default(self):
self.add_all_avatar()
self.add_all_items()
self.add_all_elfs()
def add_all_avatar(self):
avatars = mongo.find_documents("avatars")
for avatar in avatars:
data = AvatarManager(
avatar_id=avatar['AvatarID'],
star=avatar['Star'],
level=avatar['Level'],
exp=avatar['Exp'],
fragment=avatar['Fragment'],
touch_good_feel=avatar['TouchGoodFeel'],
today_has_add_good_feel=avatar['TodayHasAddGoodFeel'],
dress_id=avatar['DressID'],
dress_lists=avatar['DressLists'],
sub_star=avatar['SubStar'],
skill_lists={
skill['SkillId']:
Skill(
skill_id=skill['SkillId'],
sub_skill_lists={
sub_skill['subSkillId']:
AvatarSubSkill(
sub_skill_id=sub_skill['subSkillId'],
level=sub_skill['level']
)
for sub_id,sub_skill in skill['SubSkillLists'].items()
}
)
for id,skill in avatar['SkillLists'].items()
}
)
weapon = list(mongo.find_documents_by_key_values("items", {"EquipAvatarID": avatar['AvatarID'], "MainType":MainType.WEAPON.value}))
stigmata = list(mongo.find_documents_by_key_values("items", {"EquipAvatarID": avatar['AvatarID'], "MainType":MainType.STIGMATA.value}))
if any(weapon):
data.weapon_id = weapon[0]['UniqueID']
if any(stigmata):
for stigma in stigmata:
data.stigmata_ids[stigma['SlotNum']] = stigma['UniqueID']
self.avatars[avatar['AvatarID']] = data
def add_all_items(self):
get_items = mongo.find_documents("items")
for item in get_items:
if item['MainType'] == MainType.MATERIAL.value:
normal_item = Material(
item_id=item['ItemID'],
num=item['ItemNum']
)
self.inventory.material_items[item['ItemID']] = normal_item
if item['MainType'] == MainType.WEAPON.value:
weapon = Weapon(
item_id=item['ItemID'],
level=item['Level'],
exp=item['Exp'],
is_locked=item['IsLocked'],
is_extracted=item['IsExtracted'],
equip_avatar_id=item['EquipAvatarID']
)
self.inventory.weapon_items[item['UniqueID']] = weapon
if item['MainType'] == MainType.STIGMATA.value:
stigmata = Stigmata(
item_id=item['ItemID'],
level=item['Level'],
exp=item['Exp'],
slot_num=item['SlotNum'],
refine_value=item['RefineValue'],
promote_times=item['PromoteTimes'],
is_locked=item['IsLocked'],
equip_avatar_id=item['EquipAvatarID']
)
self.inventory.stigmata_items[item['UniqueID']] = stigmata
def add_all_elfs(self):
get_elfs = mongo.find_documents("elfs")
for elf in get_elfs:
data = ElfManager(
elf_id=elf['ElfId'],
level=elf['Level'],
star=elf['Star'],
exp=elf['Exp'],
skill_list={
skill['SkillId']:
ElfSkill(
skill_id=skill['SkillId'],
level=skill['Level']
)
for id,skill in elf['SkillLists'].items()
}
)
self.elfs[elf['ElfId']] = data