private void OnPlaced(PlaceArgs args)
        {
            if (service.TryPurchaseBuilding(args.Building, out var user))
            {
                db.UpdateUser(user);

                Acquired?.Invoke(args);

                isConstructing = true;
            }
        }
        private void OnClicked(PlaceArgs args)
        {
            OnInputClose();

            var grid = fieldContainer.Field.Grid;
            var cell = grid.GetGridObject(args.Position);

            if (cell.IsEmpty)
            {
                var buildingPosition = grid.GetCellCenter(cell.X, cell.Y);

                Placed?.Invoke(new PlaceArgs(args.Building, buildingPosition));
            }
        }
        private async UniTask ConstructBuildingAsync(PlaceArgs args)
        {
            var building = await buildingConstructor.Build(args.Building, args.Position);

            if (building == null)
            {
                return;
            }

            var goal = new GoalConstructor(building, db, service, progressConstructor);

            args.Building.Accept(goal);

            Constructed?.Invoke(new BuildingArgs(building, args.Position));
        }
Example #4
0
        private static bool TryParsePlaceArgs(string argString, ref InstructionArgs args)
        {
            var    argParts = argString.Split(',');
            int    x, y;
            Facing facing;

            if (argParts.Length != 3 || !TryGetCoordinate(argParts[0], out x) ||
                !TryGetCoordinate(argParts[1], out y) || !TryGetFacingDirection(argParts[2], out facing))
            {
                return(false);
            }
            args = new PlaceArgs
            {
                X      = x,
                Y      = y,
                Facing = facing,
            };
            return(true);
        }
 private UniTask ConstructBuilding(PlaceArgs args)
 {
     return(ConstructBuildingAsync(args));
 }
 private void OnAcquired(PlaceArgs args)
 {
     ConstructBuilding(args);
 }