void AddWeapon(ref ShipCommon ship, WeaponSpec spec, Vector3 relPos) { Transform parent = ship.refs.physicsTransform; Assert.AreApproximatelyEqual(Mathf.Abs(spec.weaponPrefab.transform.localScale.x), 1.0f); ref Weapon weapon = ref ship.weapons.Add();
public static float GetStat(WeaponSpec spec, int level, ItemQuality quality, Stat stat) { if (level <= 0) { return 0; } if (table_data == null) { LoadData(); } return table_data[(int)spec][(int)quality][level][(int)stat]; }
private void ActivateNewWeapon(object newWeapon) { _currentWeapon = (WeaponSpec)newWeapon; _audioSource.volume = _currentWeapon._volume; _audioSource.clip = _currentWeapon._weaponSFX; _Event_UpdateWeaponUI.Invoke(_currentWeapon._weaponType, this); if (_currentWeapon._presenece != 0) { _timer = _currentWeapon._presenece; _startTimer = true; } }
private static void LoadData() { GomObject table = DataObjectModel.GetObject(tablePath); Dictionary<object, object> tableData = table.Data.Get<Dictionary<object,object>>("cbtWeaponPerLevelData"); table_data = new Dictionary<int, Dictionary<int, Dictionary<int, Dictionary<int, float>>>>(); foreach (var kvp in tableData) { WeaponSpec wpnSpec = WeaponSpecExtensions.ToWeaponSpec((ulong)kvp.Key); Dictionary<object, object> qualityToLevelMap = (Dictionary<object, object>)kvp.Value; var container0 = new Dictionary<int, Dictionary<int, Dictionary<int, float>>>(); table_data[(int)wpnSpec] = container0; foreach (var quality_level in qualityToLevelMap) { ItemQuality quality = ItemQualityExtensions.ToItemQuality((ScriptEnum)quality_level.Key); var levelToStatMap = (Dictionary<object, object>)quality_level.Value; var container1 = new Dictionary<int, Dictionary<int, float>>(); container0[(int)quality] = container1; foreach (var level_stat in levelToStatMap) { int level = (int)(long)level_stat.Key; var statToValueMap = (Dictionary<object, object>)level_stat.Value; Dictionary<int, float> container2 = new Dictionary<int, float>(); container1[level] = container2; foreach (var stat_val in statToValueMap) { Stat stat = StatExtensions.ToStat((ScriptEnum)stat_val.Key); float val = (float)stat_val.Value; container2[(int)stat] = val; } } } } }
public static bool HasStats(this WeaponSpec spec) { switch (spec) { case WeaponSpec.AssaultCannon: case WeaponSpec.Electrostaff: case WeaponSpec.ElectrostaffTech: case WeaponSpec.Lightsaber: case WeaponSpec.Gauntlet: case WeaponSpec.Pistol: case WeaponSpec.Polesaber: case WeaponSpec.Rifle: case WeaponSpec.Shotgun: case WeaponSpec.SniperRifle: case WeaponSpec.TrainingSaber: case WeaponSpec.Vibroblade: case WeaponSpec.VibrobladeTech: case WeaponSpec.Vibroknife: return(true); default: return(false); } }
void InitializePools(WeaponSpec spec) { InitializePools(spec.weaponPrefab, 2 * 32); InitializePools(spec.projectilePrefab, 256); InitializePools(spec.impactPrefab, 64); }