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();
        }
Exemple #6
0
 public static int RoomMaxLevel(this ISizeData size)
 {
     return(size.Size.y - 1);
 }
Exemple #7
0
 public static Vector2Int RoomTileDim(this ISizeData size)
 {
     return(size.Size.Vector2Int() + new Vector2Int(1, 1));
 }