public RangedWeaponChecker(ISBCheckerBaseInput sbCheckerBaseInput, IEquipmentData equipmentData, ISizeData sizeData, INaturalWeaponBusiness naturalWeaponBusiness, IWeaponBusiness weaponBusiness) { _sbCheckerBaseInput = sbCheckerBaseInput; _equipmentData = equipmentData; _naturalWeaponBusiness = naturalWeaponBusiness; _weaponBusiness = weaponBusiness; _baseAtk = _sbCheckerBaseInput.MonsterSB.BaseAtk; _size = _sbCheckerBaseInput.MonsterSB.Size; _sizeMod = sizeData.SizeMod; _racialHDValue = _sbCheckerBaseInput.Race_Base.RacialHDValue(); _raceWeapons = _sbCheckerBaseInput.Race_Base.RaceWeapons(); _weaponChecker = new WeaponChecker(_sbCheckerBaseInput, _equipmentData, _naturalWeaponBusiness, _weaponBusiness); }
public EquipmentParser(ISBCheckerBaseInput sbCheckerBaseInput, ISizeData sizeData, IArmorClassData armorClassData, IEquipmentData equipmentData, IMagicItemStatBlockBusiness magicItemStatBlockBusiness, IWeaponBusiness weaponBusiness, IArmorBusiness armorBusiness, IEquipmentGoodsBusiness equipmentGoodsBusiness) { _sbCheckerBaseInput = sbCheckerBaseInput; _sizeData = sizeData; _equipmentData = equipmentData; _equipmentData.Weapons = new Dictionary <IEquipment, int>(); _equipmentData.Armor = new Dictionary <IEquipment, int>(); _equipmentData.EquipementRoster = new Dictionary <IEquipment, int>(); _equipmentData.MagicItemAbilities = new List <MagicItemAbilitiesWrapper>(); _armorClassData = armorClassData; _magicItemStatBlockBusiness = magicItemStatBlockBusiness; _weaponBusiness = weaponBusiness; _armorBusiness = armorBusiness; _equipmentGoodsBusiness = equipmentGoodsBusiness; }
static bool ApplySizeTool_CheckLevelOutsideOfRoom(IPlatformLayerSpatialData platform, IPlatformLayerTiles tiles, ISizeData roomSize, Vector2Int newPos, Vector2Int newSize, out Vector2Int roomTileDim) { // level begins outside of room or a size-dimension is 0 -> empty level roomTileDim = roomSize.RoomTileDim(); // ReSharper disable once ComplexConditionExpression if (newPos.x < roomTileDim.x && newPos.y < roomTileDim.y && newSize.x > 0 && newSize.y > 0) { return(false); } platform.Position = Vector2Int.zero; platform.Size = Vector2Int.one; var newTiles = new ushort[platform.TileDim.x * platform.TileDim.y]; tiles.SetTiles(newTiles); return(true); }
public static void SizeSceneGUI(SizePositionCategory category, IPlatformLayer layer, ISizeData roomSize) { if (category == SizePositionCategory.None) { return; } var bounds = GetBounds(layer); var button = DrawSizePositionHandles(category, bounds); SizePositionMod mod = default; SizeToolsButtonToData(category, button, ref mod); ApplySizeTool(layer, layer, roomSize, mod); }
static void ApplySizeTool(IPlatformLayerSpatialData platform, IPlatformLayerTiles tiles, ISizeData roomSize, SizePositionMod mod) { if (mod.SpecialCase) { mod.TileModifier = (mod.PosModifier * -1); } var sizeModifier = mod.SizeModifier; var offsetModifier = mod.PosModifier; var tileModifier = mod.TileModifier; var newSize = platform.TileDim + sizeModifier; var newPos = platform.Position + offsetModifier; // level cannot begin before room begins, shrink size, add offset if (newPos.x < 0) { tileModifier += Vector2Int.right * newPos.x; newSize = new Vector2Int(Mathf.Max(0, newSize.x + newPos.x), newSize.y); newPos = new Vector2Int(0, newPos.y); } if (newPos.y < 0) { tileModifier += Vector2Int.up * newPos.y; newSize = new Vector2Int(newSize.x, Mathf.Max(0, newSize.y + newPos.y)); newPos = new Vector2Int(newPos.x, 0); } if (ApplySizeTool_CheckLevelOutsideOfRoom(platform, tiles, roomSize, newPos, newSize, out var roomTileDim)) { return; } CutIfOverflowing(newPos, ref newSize, roomTileDim); var newTiles = new ushort[newSize.x * newSize.y]; //var newTiles = new PlatformLayerTilesArray() { Tiles_ = new PlatformLayerTilesBufferElement[newSize.x * newSize.y] }; ApplySizeTool(platform, tiles, newSize, tileModifier, newTiles); platform.Position = newPos; platform.Size = newSize - new Vector2Int(1, 1); tiles.SetTiles(newTiles); SceneView.RepaintAll(); }
public static int RoomMaxLevel(this ISizeData size) { return(size.Size.y - 1); }
public static Vector2Int RoomTileDim(this ISizeData size) { return(size.Size.Vector2Int() + new Vector2Int(1, 1)); }