public DamageInfo(IInfinityObject inflicter, int amount, string damageType, bool isMelee) { Inflicter = inflicter; Amount = amount; DamageType = damageType; IsMelee = isMelee; }
public TriggerEvent(string modifierName, TriggerEventType type, ScriptFunctionDelegate f, IInfinityObject target, int adderObjectId, int priority) { _modifierName = modifierName; _type = type; _f = f; _target = target; _adderObjectId = adderObjectId; Priority = priority; }
public void RegisterInfinityObject(IInfinityObject obj, bool isRegistering, int?id = null) { lock (Mutex) { if (isRegistering) { int newId; if (id == null) { newId = _r.Next(); while (_guidObjectMap.ContainsKey(newId)) { newId = _r.Next(); } } else { newId = id.Value; // Should check duplicate key when the id is explicit if (_guidObjectMap.ContainsKey(newId)) { return; } } obj.Id = newId; _guidObjectMap[newId] = obj; } else { _guidObjectMap.Remove(obj.Id); } } }
private void AddModifier(string targetPlayerName, string modifierName, IInfinityObject adder, int leftWeek, bool isFromSaveData) { var core = ModifierData.Instance.GetModifierDirectly(modifierName); if (!CommonCheckModifierCoreAddable(core, targetPlayerName)) { return; } if (core.IsTileLimited) { Logger.Log(LogType.Warning, $"{nameof(StarSystem)}.{nameof(AddModifier)}", $"Modifier \"{core.Name}\" is a tile limited modifier but tried to use as a tile unlimited modifier, so it will be ignored."); return; } // Make one if nothing exist. if (!_playerModifierMap.TryGetValue(targetPlayerName, out var modifiers)) { modifiers = new Dictionary <string, Modifier>(); _playerModifierMap[targetPlayerName] = modifiers; } if (modifiers.ContainsKey(modifierName)) { Logger.Log(LogType.Warning, $"{nameof(StarSystem)}.{nameof(AddModifier)}", $"Trying to add modifier \"{modifierName}\" which already exists for {targetPlayerName}, so it will be ignored."); return; } var m = new Modifier(core, adder.Id, leftWeek); modifiers[modifierName] = m; ApplyModifierChangeToDownward(targetPlayerName, m, false, isFromSaveData); }
private void AddTiledModifierRange(string targetPlayerName, string modifierName, IInfinityObject adder, string rangeKeyName, HashSet <HexTileCoord> tiles, int leftWeek, bool isFromSaveData) { var core = ModifierData.Instance.GetModifierDirectly(modifierName); if (!CommonCheckModifierCoreAddable(core, targetPlayerName)) { return; } if (!core.IsTileLimited) { Logger.Log(LogType.Warning, $"{nameof(StarSystem)}.{nameof(AddTiledModifierRange)}", $"Modifier \"{modifierName}\" is not a tile limited modifier, but tried to use as a tile limited modifier, so it will be ignored."); return; } if (!_playerTiledModifierMap.TryGetValue(targetPlayerName, out var modifiers)) { modifiers = new Dictionary <string, TiledModifier>(); _playerTiledModifierMap[modifierName] = modifiers; } if (!modifiers.TryGetValue(modifierName, out var m)) { m = new TiledModifier(core, adder.Id, rangeKeyName, tiles, leftWeek); TileMap.ApplyModifierChangeToTileObjects(targetPlayerName, m, false, isFromSaveData, tiles); return; } if (m.AdderObjectId != adder.Id) { Logger.Log(LogType.Warning, $"{nameof(StarSystem)}.{nameof(AddTiledModifierRange)}", $"Modifier \"{modifierName}\" has already added by different object : \"{m.AdderObjectId}\" for {targetPlayerName}, so it will be ignored."); return; } if (m.Infos.ContainsKey(rangeKeyName)) { Logger.Log(LogType.Warning, $"{nameof(StarSystem)}.{nameof(AddTiledModifierRange)}", $"Range key name \"{rangeKeyName}\" already exists in modifier \"{m.Name}\" for {targetPlayerName}, so it will be ignored."); return; } var pureAdd = m.AddTileInfo(rangeKeyName, tiles, leftWeek); TileMap.ApplyModifierChangeToTileObjects(targetPlayerName, m, false, isFromSaveData, pureAdd); }
public void AddTiledModifierRange(string targetPlayerName, string modifierName, IInfinityObject adder, string rangeKeyName, HashSet <HexTileCoord> tiles, int leftWeek) => AddTiledModifierRange(targetPlayerName, modifierName, adder, rangeKeyName, tiles, leftWeek, false);
public void AddModifier(string targetPlayerName, string modifierName, IInfinityObject adder, int leftWeek) => AddModifier(targetPlayerName, modifierName, adder, leftWeek, false);