public static List <string> BuildPlayerSimplePreloadAssets(PMatchProcessInfo info, List <string> assets = null) { if (assets == null) { assets = new List <string>(); } // Player model var model = ConfigManager.Get <CreatureInfo>(info.roleProto); if (model) { assets.AddRange(model.models); } var w = WeaponInfo.GetWeapon(0, info.fashion.weapon); // Player weapons BuildWeaponSimplePreloadAssets(info.roleProto, info.gender, w.weaponID, w.weaponItemId, assets); // Equipments assets.AddRange(CharacterEquip.GetEquipAssets(info.fashion)); return(assets); }
public static List <string> BuildWeaponPreloadAssets(int proto, int gender, int weaponID, int weaponItemID = -1, int offWeaponID = -1, int offWeaponItemID = -1, List <string> assets = null, bool player = false) { if (assets == null) { assets = new List <string>(); } assets.Add(Creature.GetAnimatorName(weaponID, gender)); // Animator var w = WeaponInfo.GetWeapon(weaponID, weaponItemID); // Main-hand weapon models w.GetAllAssets(assets); assets.Add(WeaponInfo.GetVictoryAnimation(weaponID, gender)); if (offWeaponID > -1) { w = WeaponInfo.GetWeapon(offWeaponID, offWeaponItemID); // Off-hand weapon models w.GetAllAssets(assets); } // Collect all weapon assets StateMachineInfo.GetAllAssets(weaponID, offWeaponID, assets, proto, gender, weaponItemID, offWeaponItemID, player); return(assets); }
public static List <string> BuildPlayerSimplePreloadAssets(PRoleSummary info, List <string> assets = null) { if (assets == null) { assets = new List <string>(); } // Player model var model = ConfigManager.Get <CreatureInfo>(info.proto); if (model) { assets.Add(model.models[0]); } var w = WeaponInfo.GetWeapon(0, info.fashion.weapon); // Player weapons BuildWeaponSimplePreloadAssets(info.proto, info.gender, w.weaponID, w.weaponItemId, assets); // Equipments assets.AddRange(CharacterEquip.GetEquipAssets(info.fashion)); if (info.pet == null || info.pet.itemId == 0) { return(assets); } var rPet = PetInfo.Create(info.pet); BuildPetSimplePreloadAssets(rPet, assets, 2); return(assets); }
private List <string> GetItemModels(PItem item) { var l = new List <string>(); if (item == null) { return(l); } var type = Module_Equip.GetEquipTypeByItem(item); var info = item.GetPropItem(); if (type == EquipType.Cloth) { var model = info?.previewModel; if (!string.IsNullOrEmpty(model)) { l.Add(model); } } else if (type == EquipType.Gun || type == EquipType.Weapon) { var weapon = WeaponInfo.GetWeapon(info.subType, info.ID); weapon.GetAllAssets(l); } return(l); }
public CreatureInfo BuildPlayerInfo(PMatchProcessInfo matchInfo, bool playerBuff = true, bool playerSkill = true) { var info = ConfigManager.Get <CreatureInfo>(matchInfo.roleProto); if (!info) { Logger.LogError("Module_Player::BuildPlayerInfo: Build CreatureInfo from PMatchInfo failed, could not find proto template config: {0}", matchInfo.roleProto); return(null); } info = info.Clone <CreatureInfo>(); var w = WeaponInfo.GetWeapon(0, matchInfo.fashion.weapon); var ww = WeaponInfo.GetWeapon(0, matchInfo.fashion.gun); if (w.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid weapon item:<b>[{0}]</b>", matchInfo.fashion.weapon); } if (ww.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid off weapon item:<b>[{0}]</b>", matchInfo.fashion.gun); } info.weaponID = w.weaponID; info.offWeaponID = ww.weaponID; info.weaponItemID = matchInfo.fashion.weapon; info.offWeaponItemID = matchInfo.fashion.gun; info.buffs = null; return(info); }
public CreatureInfo BuildPlayerInfo(PRoleSummary rRole) { var info = ConfigManager.Get <CreatureInfo>(rRole.proto); if (!info) { Logger.LogError("Module_Player::BuildPlayerInfo: Build CreatureInfo from PMatchInfo failed, could not find proto template config: {0}", rRole.proto); return(null); } info = info.Clone <CreatureInfo>(); var w = WeaponInfo.GetWeapon(0, rRole.fashion.weapon); var ww = WeaponInfo.GetWeapon(0, rRole.fashion.gun); if (w.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid weapon item:<b>[{0}]</b>", rRole.fashion.weapon); } if (ww.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid off weapon item:<b>[{0}]</b>", rRole.fashion.gun); } info.weaponID = w.weaponID; info.offWeaponID = ww.weaponID; info.weaponItemID = rRole.fashion.weapon; info.offWeaponItemID = rRole.fashion.gun; return(info); }
private void OnGMLockClass(Event_ e) { var nc = proto; var c = (int)e.param1; var i = (int)e.param2; var ci = c > 0 ? ConfigManager.Get <CreatureInfo>(c) : null; m_lockedClass = ci ? ci.ID : m_proto; m_lockedGender = ci ? ci.gender : m_gender; var w = m_lockedClass == m_proto && i < 1 ? null : WeaponInfo.GetWeapon(m_lockedClass, i); if (w == null || w.isEmpty) { m_lockedElementType = m_elementType; } else { var a = ConfigManager.Get <WeaponAttribute>(w.weaponItemId); m_lockedElementType = a == null ? m_elementType : (CreatureElementTypes)a.elementType; } Logger.LogDetail("Lock class <b><color=#66EECC>[weapon:{0}, gender:{1}, weaponItem:{2}, elementType:{3}]</color></b>", proto, gender, w != null && !w.isEmpty ? w.weaponItemId : -1, elementType); DispatchEvent("OnPostGmLockClass", Event_.Pop(nc == proto)); }
public CreatureInfo BuildPlayerInfo(PTeamMemberInfo memberInfo, bool playerBuff = true, bool playerSkill = true) { var info = ConfigManager.Get <CreatureInfo>(memberInfo.roleProto); if (!info) { Logger.LogError("Module_Player::BuildPlayerInfo: Build CreatureInfo from PTeamMemberInfo failed, could not find proto template config: {0}", memberInfo.roleProto); return(null); } info = memberInfo.attrInfo.ToCreatureInfo(info.Clone <CreatureInfo>()); var w = WeaponInfo.GetWeapon(0, memberInfo.fashion.weapon); var ww = WeaponInfo.GetWeapon(0, memberInfo.fashion.gun); if (w.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid weapon item:<b>[{0}]</b>", memberInfo.fashion.weapon); } if (ww.isEmpty) { Logger.LogError("Creature::BuildPlayerInfo: MatchInfo has invalid off weapon item:<b>[{0}]</b>", memberInfo.fashion.gun); } info.elementType = memberInfo.elementType; info.weaponID = w.weaponID; info.offWeaponID = ww.weaponID; info.weaponItemID = memberInfo.fashion.weapon; info.offWeaponItemID = memberInfo.fashion.gun; info.bulletCount = memberInfo.bulletCount; info.energy = memberInfo.energy; info.maxEnergy = memberInfo.maxEnergy; info.awakeDuration = memberInfo.awakeDuration; memberInfo.awakeChangeAttr.CopyTo(ref info.awakeChangeAttr); if (playerBuff) { info.buffs = memberInfo.buffs.SimpleClone(); } else { info.buffs = null; } if (playerSkill && memberInfo.skills != null && memberInfo.skills.Length > 0) { PSkill[] skills = null; memberInfo.skills.CopyTo(ref skills); info.skills = skills; } else { info.skills = null; } return(info); }
public static List <string> BuildWeaponSimplePreloadAssets(int proto, int gender, int weaponID, int weaponItemID, List <string> assets = null) { if (assets == null) { assets = new List <string>(); } assets.Add(Creature.GetAnimatorNameSimple(weaponID, gender)); // Animator var w = WeaponInfo.GetWeapon(weaponID, weaponItemID); // Main-hand weapon models w.GetAllAssets(assets); // Simple statemachine StateMachineInfo.GetAllAssets(weaponID, -1, assets, proto, gender, weaponItemID, -1, false, true); return(assets); }
public static List <string> BuildPlayerPreloadAssets(PTeamMemberInfo info, List <string> assets = null) { if (assets == null) { assets = new List <string>(); } if (info == null) { return(assets); } // Player shadow if (info.roleId == modulePlayer.id_) { assets.Add(CombatConfig.sdefaultSelfShadow); } // Player model var model = ConfigManager.Get <CreatureInfo>(info.roleProto); if (model) { assets.AddRange(model.models); } var w = WeaponInfo.GetWeapon(0, info.fashion.weapon); var ww = WeaponInfo.GetWeapon(0, info.fashion.gun); // Player weapons BuildWeaponPreloadAssets(info.roleProto, info.gender, w.weaponID, w.weaponItemId, ww.weaponID, ww.weaponItemId, assets); // Buff effects BuildBuffPreloadAssets(info.buffs, assets); // Equipments assets.AddRange(CharacterEquip.GetEquipAssets(info.fashion)); // Pet BuildPetPreloadAssets(assets, info.pet != null && info.pet.itemTypeId != 0 ? PetInfo.Create(info.pet) : null); return(assets); }
private bool UpdateWeaponModel(bool off) { var weaponID = off ? m_creature.offWeaponID : m_creature.weaponID; var itemId = off ? m_creature.offWeaponItemID : m_creature.weaponItemID; var weapon = WeaponInfo.GetWeapon(weaponID, itemId); if (!off && weapon.isEmpty && weaponID < Creature.MAX_WEAPON_ID) // Only main weapon need error log { Logger.LogError("Could not find weapon config [{0}:{1}]", weaponID, itemId); return(false); } if (off) { m_offWeaponInfo = weapon; } else { m_weaponInfo = weapon; } var ws = off ? m_offWeapons : m_mainWeapons; foreach (var w in ws) { w.Value?.transform.SetParent(m_weapon, false); m_weapons.Remove(w.Value); } ws.Clear(); Util.DisableAllChildren(m_weapon); var sws = weapon.singleWeapons; if (sws.Length < 1) { return(true); } var visible = !m_creature.currentState || !off || m_creature.currentState.showOffWeapon; foreach (var sw in sws) { if (string.IsNullOrEmpty(sw.model)) { Logger.LogError("Invalid weapon config [weapon:{0}, itemID:{1}, index:{2}, name:{3}]", weapon.weaponID, weapon.weaponItemId, sw.index, weapon.name); continue; } var t = m_weapon.Find(sw.model); var w = t?.gameObject; if (!w) { w = Level.GetPreloadObject(sw.model); if (!w) { Logger.LogError("Could not load weapon model [{0}]", sw.model); } else { w.name = sw.model; UpdateWeaponEffects(w, weapon, sw); } } if (w) { w.SetActive(visible); Util.AddChild(m_weapon, w.transform); ws.Set(sw.index, w); m_weapons.Add(w); } } if (off) { var sm = ConfigManager.Get <StateMachineInfoOff>(1); if (sm) { SetWeaponBind(sm.defaultWeaponBinds, true); } } else if (m_creature.currentState) { SetWeaponBind(m_creature.currentState.bindInfo); } Logger.LogInfo("{2}eapon changed to [{0}: {3}:{1}]", weapon.weaponID, weapon.weaponItemId, off ? "Off W" : "W", weapon.name); return(true); }