コード例 #1
0
    public List <RoomNode> GenerateRoomsInGivenSpace(List <Node> roomSpaces,
                                                     float roomBottomCornerModifier,
                                                     float roomTopCornerModifier,
                                                     int roomOffset)
    {
        List <RoomNode> listToReturn = new List <RoomNode>();

        foreach (var space in roomSpaces)
        {
            Vector2Int newBottomLeftPoint = StructureHelper.GenerateBottomLeftCornerBetween(
                space.BottomLeftAreaCorner,
                space.TopRightAreaCorner,
                0.1f, 1); // change values for increase randomess, closeness of rooms

            Vector2Int newTopRightPoint = StructureHelper.GenerateBottomLeftCornerBetween(
                space.BottomLeftAreaCorner,
                space.TopRightAreaCorner,
                0.9f, 1); // change values for increase randomess, closeness of rooms

            space.BottomLeftAreaCorner  = newBottomLeftPoint;
            space.TopRightAreaCorner    = newTopRightPoint;
            space.BottomRightAreaCorner = new Vector2Int(newTopRightPoint.x, newBottomLeftPoint.y);
            space.TopLeftAreaCorner     = new Vector2Int(newBottomLeftPoint.x, newTopRightPoint.y);
            listToReturn.Add((RoomNode)space);
        }

        return(listToReturn);
    }
コード例 #2
0
        public ActionResult Update()
        {
            var keys = new Dictionary <string, object>();

            if (Request.QueryString.Count > 0)
            {
                foreach (var key in Request.QueryString.AllKeys)
                {
                    keys.Add(key, Request.QueryString[key]);
                }
            }

            var data = StructureHelper.Detail(tableSlug, keys);

            ViewData.Model = data;
            if (Request.HttpMethod == "POST")
            {
                var form = Request.Form;
                foreach (var key in form.AllKeys)
                {
                    data.Data[key] = form[key];
                }
                //TODO validation

                StructureHelper.Update(tableSlug, data.Data);

                ViewBag.msg = "updated";
            }
            return(View());
        }
コード例 #3
0
 private int GetValidYForNeighourLeftRight(Vector2Int leftNodeUp, Vector2Int leftNodeDown, Vector2Int rightNodeUp, Vector2Int rightNodeDown)
 {
     if (rightNodeUp.y >= leftNodeUp.y && leftNodeDown.y >= rightNodeDown.y)
     {
         return(StructureHelper.CalculateMiddlePoint(
                    leftNodeDown + new Vector2Int(0, modifierDistanceFromWall),
                    leftNodeUp - new Vector2Int(0, modifierDistanceFromWall + this.corridorWidth)
                    ).y);
     }
     if (rightNodeUp.y <= leftNodeUp.y && leftNodeDown.y <= rightNodeDown.y)
     {
         return(StructureHelper.CalculateMiddlePoint(
                    rightNodeDown + new Vector2Int(0, modifierDistanceFromWall),
                    rightNodeUp - new Vector2Int(0, modifierDistanceFromWall + this.corridorWidth)
                    ).y);
     }
     if (leftNodeUp.y >= rightNodeDown.y && leftNodeUp.y <= rightNodeUp.y)
     {
         return(StructureHelper.CalculateMiddlePoint(
                    rightNodeDown + new Vector2Int(0, modifierDistanceFromWall),
                    leftNodeUp - new Vector2Int(0, modifierDistanceFromWall)
                    ).y);
     }
     if (leftNodeDown.y >= rightNodeDown.y && leftNodeDown.y <= rightNodeUp.y)
     {
         return(StructureHelper.CalculateMiddlePoint(
                    leftNodeDown + new Vector2Int(0, modifierDistanceFromWall),
                    rightNodeUp - new Vector2Int(0, modifierDistanceFromWall + this.corridorWidth)
                    ).y);
     }
     return(-1);
 }
コード例 #4
0
ファイル: CorridorNode.cs プロジェクト: Dreys57/StealthGame
    //This function gives us a Y depending on the node position to the other
    private int GetYForNeighbor(Vector2Int leftNodeUp, Vector2Int leftNodeDown, Vector2Int rightNodeUp, Vector2Int rightNodeDown)
    {
        if (rightNodeUp.y >= leftNodeUp.y && leftNodeDown.y >= rightNodeDown.y)
        {
            return(StructureHelper.CalculateCenter(rightNodeDown + new Vector2Int(0, wallDistanceModifier),
                                                   rightNodeUp - new Vector2Int(0, wallDistanceModifier + this.corridorWidth)).y);
        }

        if (rightNodeUp.y <= leftNodeUp.y && leftNodeDown.y <= rightNodeDown.y)
        {
            return(StructureHelper.CalculateCenter(leftNodeDown + new Vector2Int(0, wallDistanceModifier),
                                                   leftNodeUp - new Vector2Int(0, wallDistanceModifier + this.corridorWidth)).y);
        }

        if (leftNodeUp.y >= rightNodeDown.y && leftNodeUp.y <= rightNodeUp.y)
        {
            return(StructureHelper.CalculateCenter(rightNodeDown + new Vector2Int(0, wallDistanceModifier),
                                                   leftNodeUp - new Vector2Int(0, wallDistanceModifier + this.corridorWidth)).y);
        }

        if (leftNodeDown.y >= rightNodeDown.y && leftNodeDown.y <= rightNodeUp.y)
        {
            return(StructureHelper.CalculateCenter(leftNodeDown + new Vector2Int(0, wallDistanceModifier),
                                                   rightNodeUp - new Vector2Int(0, wallDistanceModifier + this.corridorWidth)).y);
        }

        return(checkValue);
    }
コード例 #5
0
    private int GetValidXForNeighbourUpDown(Vector2Int bottomNodeLeft,
                                            Vector2Int bottomNodeRight, Vector2Int topNodeLeft, Vector2Int topNodeRight)
    {
        if (topNodeLeft.x < bottomNodeLeft.x && bottomNodeRight.x < topNodeRight.x)
        {
            return(StructureHelper.CalculateMiddlePoint(
                       bottomNodeLeft + new Vector2Int(modifierDistanceFromWall, 0),
                       bottomNodeRight - new Vector2Int(this.corridorWidth + modifierDistanceFromWall, 0)
                       ).x);
        }
        if (topNodeLeft.x >= bottomNodeLeft.x && bottomNodeRight.x >= topNodeRight.x)
        {
            return(StructureHelper.CalculateMiddlePoint(
                       topNodeLeft + new Vector2Int(modifierDistanceFromWall, 0),
                       topNodeRight - new Vector2Int(this.corridorWidth + modifierDistanceFromWall, 0)
                       ).x);
        }
        if (bottomNodeLeft.x >= (topNodeLeft.x) && bottomNodeLeft.x <= topNodeRight.x)
        {
            return(StructureHelper.CalculateMiddlePoint(
                       bottomNodeLeft + new Vector2Int(modifierDistanceFromWall, 0),
                       topNodeRight - new Vector2Int(this.corridorWidth + modifierDistanceFromWall, 0)

                       ).x);
        }
        if (bottomNodeRight.x <= topNodeRight.x && bottomNodeRight.x >= topNodeLeft.x)
        {
            return(StructureHelper.CalculateMiddlePoint(
                       topNodeLeft + new Vector2Int(modifierDistanceFromWall, 0),
                       bottomNodeRight - new Vector2Int(this.corridorWidth + modifierDistanceFromWall, 0)

                       ).x);
        }
        return(-1);
    }
コード例 #6
0
        public void ThenErrorMessageIsDisplayedWithTheFollowingText(string expectedErrorMessage)
        {
            var loginViewModel     = StructureHelper.GetLogin();
            var actualErrorMessage = loginViewModel.LoginFailureCause;

            StringAssert.AreEqualIgnoringCase(expectedErrorMessage, actualErrorMessage);
        }
コード例 #7
0
        public void ThenUsernameTextBoxContains(string userName)
        {
            var loginViewModel = StructureHelper.GetLogin();
            var actualUserName = loginViewModel.UserName;

            Assert.AreEqual(userName, actualUserName);
        }
コード例 #8
0
        public void ThenLocalAuthenticationIsAutomaticallySelectedInTheAuthenticationOptionsList()
        {
            var loginViewModel = StructureHelper.GetLogin();
            var selectedLogin  = loginViewModel.SelectedLogin;

            StringAssert.AreEqualIgnoringCase("Local authentication", selectedLogin);
        }
コード例 #9
0
        private static ComplianceRootViewModel GetComplianceRoot()
        {
            var mainViewModel = (MainViewModel)StructureHelper.GetShellActiveItem();
            var firstModule   = mainViewModel.Modules.OfType <ModuleViewModel>().First(t => t.Name == "Compliance");

            return((ComplianceRootViewModel)(firstModule.RootViewModel));
        }
コード例 #10
0
    public List <Node> CalculateDungeon(int maxPasses, int roomMinWidth, int roomMinLength, float bottomCornerModifier, float topCornerModifier, int roomOffset, int corridorWidth, EnemySpawner enemSpawner, DungeonCreator dungeonCreator, ItemSpawner itemSpawner, ObjectSpawner objSpawner)
    {
        BinarySpacePartitioner bsp = new BinarySpacePartitioner(dungeonWidth, dungeonLength);

        allSpaceNodes = bsp.PrepareNodesCollection(maxPasses, roomMinWidth, roomMinLength);
        List <Node>     roomSpaces    = StructureHelper.TraverseGraphToExtractLowestLeaves(bsp.rootNode);
        RoomGenerator   roomGenerator = new RoomGenerator(maxPasses, roomMinLength, roomMinWidth);
        List <RoomNode> roomList      = roomGenerator.GenerateRoomsInGivenSpaces(roomSpaces, bottomCornerModifier, topCornerModifier, roomOffset);
        //first room will be the spawn point for the player
        RoomNode firstRoom = roomList[0];

        UnityEngine.CharacterController player = GameObject.FindWithTag("Player").GetComponent <UnityEngine.CharacterController>();
        Vector2Int firstRoomCenter             = StructureHelper.CalculateMiddlePoint(firstRoom.BottomLeftCorner, firstRoom.TopRightCorner);
        Vector3    newPos = new Vector3(firstRoomCenter.x, 0.0f, firstRoomCenter.y);

        player.enabled            = false;
        player.transform.position = newPos;
        player.enabled            = true;

        //generate spawn points before we add the corridors
        for (int i = 0; i < roomList.Count; i++)
        {
            RoomNode room = roomList[i];

            if (enemSpawner != null)
            {
                GameObject newRoom = new GameObject("RoomObj", typeof(Room), typeof(BoxCollider));
                newRoom.tag = "RoomObject";
                BoxCollider col = newRoom.GetComponent <BoxCollider>();
                col.isTrigger = true;
                col.size      = new Vector3(1.2f, 1.2f, 1.2f);

                Vector2Int roomPos = StructureHelper.CalculateMiddlePoint(room.BottomLeftCorner, room.TopRightCorner);
                newRoom.transform.position = new Vector3(roomPos.x, 2, roomPos.y);
                Room roomComp = newRoom.GetComponent <Room>();
                room.roomObjReference        = roomComp;
                newRoom.transform.localScale = new Vector3(room.Width, 4, room.Length);
                roomComp.enemySpawnPoints    = new List <Vector3>();
                roomComp.itemSpawnPoints     = new List <Vector3>();
                roomComp.weaponSpawnPoints   = new List <Vector3>();
                roomComp.objectSpawnPoints   = new List <Vector3>();
                roomComp.doors = new List <Transform>();
                dungeonCreator.spawnedRooms.Add(roomComp);

                if (i != 0)
                {
                    enemSpawner.GenerateEnemySpawnPointsForRoom(room);
                    itemSpawner.GenerateItemSpawnPointsForRoom(room);
                    objSpawner.GenerateObjectSpawnPointsForRoom(room);
                }
            }
        }

        CorridorGenerator corridorGenerator = new CorridorGenerator();
        var corridorList = corridorGenerator.CreateCorridor(allSpaceNodes, corridorWidth);

        dungeonCreator.GenerateDoors(corridorList);

        return(new List <Node>(roomList).Concat(corridorList).ToList());
    }
コード例 #11
0
    public List <Node> CalculateDungeon(
        int maxIterations,
        int roomWidthMin,
        int roomLengthMin,
        float roomBottomCornerModifier,
        float roomTopCornerModifier,
        int roomOffset,
        int corridorWidth)
    {
        //splits the room
        BinarySpacePartitioner bsp = new BinarySpacePartitioner(dungeonWidth, dungeonLength);

        allNodesCollection = bsp.PrepareNodesCollection(maxIterations, roomWidthMin, roomLengthMin);
        List <Node> roomSpaces = StructureHelper.TraverseGraphToExtractLowestLeafes(bsp.RootNode);

        RoomGenerator   roomGenerator = new RoomGenerator(maxIterations, roomLengthMin, roomWidthMin);
        List <RoomNode> roomList      = roomGenerator.GenerateRoomsInGivenSpace(roomSpaces,
                                                                                roomBottomCornerModifier,
                                                                                roomTopCornerModifier,
                                                                                roomOffset);

        CorridorGenerator corridorGenerator = new CorridorGenerator();
        var corridorList = corridorGenerator.CreateCorridor(allNodesCollection, corridorWidth);


        return(new List <Node>(roomList).Concat(corridorList).ToList());
    }
コード例 #12
0
    public List <RoomNode> GenerateRoomInGivenSpace(List <Node> roomSpaces, float bottomLeftPointModifier, float topRightPointModifier, int offset)
    {
        List <RoomNode> listToReturn = new List <RoomNode>();

        foreach (Node space in roomSpaces)
        {
            Vector2Int newBottomLeftPoint = StructureHelper.GenerateBottomLeftCornerBetween(
                space.BottomLeftAreaCorner,
                space.TopRightAreaCorner,
                bottomLeftPointModifier,
                offset);

            Vector2Int newTopRightPoint = StructureHelper.GenerateTopRightCornerBetween(
                space.BottomLeftAreaCorner,
                space.TopRightAreaCorner,
                topRightPointModifier,
                offset);

            space.BottomLeftAreaCorner  = newBottomLeftPoint;
            space.TopRightAreaCorner    = newTopRightPoint;
            space.BottomRightAreaCorner = new Vector2Int(newTopRightPoint.x, newBottomLeftPoint.y);
            space.TopLeftAreaCorner     = new Vector2Int(newBottomLeftPoint.x, newTopRightPoint.y);

            listToReturn.Add((RoomNode)space);
        }

        return(listToReturn);
    }
コード例 #13
0
    //finds the closest X coordinates from adjacent rooms from right corner to clostest right corner
    private void ProcessRoomInRelationRightOrLeft(Node structure1, Node structure2)
    {
        Node        leftStructure          = null;
        List <Node> leftStructureChildren  = StructureHelper.TraverseGraphToExtractLowestLeafes(structure1);
        Node        rightStructure         = null;
        List <Node> rightStructureChildren = StructureHelper.TraverseGraphToExtractLowestLeafes(structure2);

        var sortedLeftStructure = leftStructureChildren.OrderByDescending(child => child.TopRightAreaCorner.x).ToList();

        if (sortedLeftStructure.Count == 1)
        {
            leftStructure = sortedLeftStructure[0];
        }
        else
        {
            int maxX = sortedLeftStructure[0].TopRightAreaCorner.x;
            sortedLeftStructure = sortedLeftStructure.Where(children => Math.Abs(maxX - children.TopRightAreaCorner.x) < 10).ToList();
            int index = UnityEngine.Random.Range(0, sortedLeftStructure.Count);
            leftStructure = sortedLeftStructure[index];
        }

        var possibleNeighboursInRightStructureList = rightStructureChildren.Where(
            child => GetValidYForNeighbourLeftRight(
                leftStructure.TopRightAreaCorner,
                leftStructure.BottomRightAreaCorner,
                child.TopLeftAreaCorner,
                child.BottomLeftAreaCorner) != -1
            ).ToList();

        if (possibleNeighboursInRightStructureList.Count <= 0)
        {
            rightStructure = structure2;
        }
        else
        {
            rightStructure = possibleNeighboursInRightStructureList[0];
        }

        int y = GetValidYForNeighbourLeftRight(
            leftStructure.TopLeftAreaCorner,
            leftStructure.BottomRightAreaCorner,
            rightStructure.TopLeftAreaCorner,
            rightStructure.BottomLeftAreaCorner);

        while (y == -1 && sortedLeftStructure.Count > 1)
        {
            sortedLeftStructure = sortedLeftStructure.Where(child => child.TopLeftAreaCorner.y != leftStructure.TopLeftAreaCorner.y).ToList();
            leftStructure       = sortedLeftStructure[0];

            y = GetValidYForNeighbourLeftRight(
                leftStructure.TopLeftAreaCorner,
                leftStructure.BottomRightAreaCorner,
                rightStructure.TopLeftAreaCorner,
                rightStructure.BottomLeftAreaCorner);
        }

        BottomLeftAreaCorner = new Vector2Int(leftStructure.BottomRightAreaCorner.x, y);
        TopRightAreaCorner   = new Vector2Int(rightStructure.TopLeftAreaCorner.x, y + this.corridorWidth);
    }
コード例 #14
0
        protected override void OnStart(object rootObject)
        {
            var shell = (ShellViewModel)rootObject;

            StructureHelper.SetRootObject(shell);
            ScreenExtensions.TryActivate(shell);
            ScreenExtensions.TryActivate(StructureHelper.GetLogin());
        }
コード例 #15
0
    private void ProcessRoomInRelationUpOrDown(Node structure1, Node structure2)
    {
        Node        bottomStructure        = null;
        List <Node> structureBottmChildren = StructureHelper.TraverseGraphToExtractLowestLeaves(structure1);
        Node        topStructure           = null;
        List <Node> structureAboveChildren = StructureHelper.TraverseGraphToExtractLowestLeaves(structure2);

        var sortedBottomStructure = structureBottmChildren.OrderByDescending(child => child.TopRightCorner.y).ToList();

        if (sortedBottomStructure.Count == 1)
        {
            bottomStructure = structureBottmChildren[0];
        }
        else
        {
            int maxY = sortedBottomStructure[0].TopLeftCorner.y;
            sortedBottomStructure = sortedBottomStructure.Where(child => Mathf.Abs(maxY - child.TopLeftCorner.y) < 10).ToList();
            int index = UnityEngine.Random.Range(0, sortedBottomStructure.Count);
            bottomStructure = sortedBottomStructure[index];
        }

        var possibleNeighboursInTopStructure = structureAboveChildren.Where(
            child => GetValidXForNeighbourUpDown(
                bottomStructure.TopLeftCorner,
                bottomStructure.TopRightCorner,
                child.BottomLeftCorner,
                child.BottomRightCorner)
            != -1).OrderBy(child => child.BottomRightCorner.y).ToList();

        if (possibleNeighboursInTopStructure.Count == 0)
        {
            topStructure = structure2;
        }
        else
        {
            topStructure = possibleNeighboursInTopStructure[0];
        }
        int x = GetValidXForNeighbourUpDown(
            bottomStructure.TopLeftCorner,
            bottomStructure.TopRightCorner,
            topStructure.BottomLeftCorner,
            topStructure.BottomRightCorner);

        while (x == -1 && sortedBottomStructure.Count > 1)
        {
            sortedBottomStructure = sortedBottomStructure.Where(child => child.TopLeftCorner.x != topStructure.TopLeftCorner.x).ToList();
            bottomStructure       = sortedBottomStructure[0];
            x = GetValidXForNeighbourUpDown(
                bottomStructure.TopLeftCorner,
                bottomStructure.TopRightCorner,
                topStructure.BottomLeftCorner,
                topStructure.BottomRightCorner);
        }
        BottomLeftCorner  = new Vector2Int(x, bottomStructure.TopLeftCorner.y);
        TopRightCorner    = new Vector2Int(x + this.corridorWidth, topStructure.BottomLeftCorner.y);
        connectedRooms[0] = ((RoomNode)bottomStructure).roomObjReference;
        connectedRooms[1] = ((RoomNode)topStructure).roomObjReference;
    }
コード例 #16
0
        public WorkItemMigrator(string sourceProjectName, string targetProjectName)
        {
            _sourceProjectName = sourceProjectName;
            _targetProjectName = targetProjectName;
            _migratedItemsMap = new Dictionary<int, int>();

            _structureHelper = new StructureHelper(sourceProjectName, targetProjectName);
            _logger = new Logger(Config.LogFolder);
            _logger.ClearLogs();
        }
コード例 #17
0
        public void Initialization_LoginScreenIsActive()
        {
            var rootObject = CreateRootObject();

            StructureHelper.SetRootObject(rootObject);

            var activeItem = StructureHelper.GetShellActiveItem();

            Assert.IsInstanceOf <LoginViewModel>(activeItem);
        }
コード例 #18
0
    public List <Node> CalculateRooms(int maxIteration, int roomWidthMin, int roomLengthMin)
    {
        BinarySpacePartitioner bsp = new BinarySpacePartitioner(dungeonWidth, dungeonLength);

        allSpaceNodes = bsp.PrepareNodesCollection(maxIteration, roomWidthMin, roomLengthMin);
        List <Node> roomSpaces = StructureHelper.TraverseGraphToExtractLowestLeafes(bsp.RootNode);

        RoomGenerator   roomGenerator = new RoomGenerator(maxIteration, roomLengthMin, roomWidthMin);
        List <RoomNode> roomList      = roomGenerator.GenerateRoomsInGivenSpaces(roomSpaces);

        return(new List <Node>(allSpaceNodes));
    }
コード例 #19
0
ファイル: Deserializer.cs プロジェクト: bsed/Freecon-Galactic
 static async Task InstantiateStructures(IEnumerable <IArea> loadedAreas, Dictionary <int, IStructureModel> loadedStructureModels, IGalaxyRegistrationManager rm, IPlayerLocator pl)
 {
     foreach (IArea a in loadedAreas)
     {
         var structureIDs = a.GetStructureIDs();
         foreach (int id in structureIDs)
         {
             IStructure s = StructureHelper.InstantiateStructure(loadedStructureModels[id], pl, rm);
             a.AddStructure(s);
         }
     }
 }
コード例 #20
0
ファイル: CorridorNode.cs プロジェクト: Dreys57/StealthGame
    //This is the same idea as the left/right function just above, but on the X-Axis
    private void ProcessRoomRelationUpOrDown(Node structure1, Node structure2)
    {
        Node        bottomStructure         = null;
        List <Node> structureBottomChildren = StructureHelper.TraverseGraphToExtractLowestLeaf(structure1);

        Node        topStructure         = null;
        List <Node> structureTopChildren = StructureHelper.TraverseGraphToExtractLowestLeaf(structure2);

        List <Node> sortedBottomStructure = structureBottomChildren.OrderByDescending(child => child.TopRightAreaCorner.y).ToList();

        if (sortedBottomStructure.Count == 1)
        {
            bottomStructure = structureBottomChildren[0];
        }
        else
        {
            int maxY = sortedBottomStructure[0].TopLeftAreaCorner.y;

            sortedBottomStructure = sortedBottomStructure.Where(child => Mathf.Abs(maxY - child.TopLeftAreaCorner.y) < 10).ToList();

            int index = Random.Range(0, sortedBottomStructure.Count);

            bottomStructure = sortedBottomStructure[index];
        }

        List <Node> topStructurePossibleNeighbors = structureTopChildren
                                                    .Where(child => GetXForNeighbor(bottomStructure.TopLeftAreaCorner, bottomStructure.TopRightAreaCorner,
                                                                                    child.BottomLeftAreaCorner, child.BottomRightAreaCorner) != 1).OrderBy(child => child.BottomRightAreaCorner.y).ToList();

        if (topStructurePossibleNeighbors.Count == 0)
        {
            topStructure = structure2;
        }
        else
        {
            topStructure = topStructurePossibleNeighbors[0];
        }

        int x = GetXForNeighbor(bottomStructure.TopLeftAreaCorner, bottomStructure.TopRightAreaCorner, topStructure.BottomLeftAreaCorner, topStructure.BottomRightAreaCorner);

        while (x == checkValue && sortedBottomStructure.Count > 1)
        {
            sortedBottomStructure = sortedBottomStructure.Where(child => child.TopLeftAreaCorner.x != topStructure.TopLeftAreaCorner.x).ToList();

            bottomStructure = sortedBottomStructure[0];

            x = GetXForNeighbor(bottomStructure.TopLeftAreaCorner, bottomStructure.TopRightAreaCorner, topStructure.BottomLeftAreaCorner, topStructure.BottomRightAreaCorner);
        }

        BottomLeftAreaCorner = new Vector2Int(x, bottomStructure.TopLeftAreaCorner.y);
        TopRightAreaCorner   = new Vector2Int(x + this.corridorWidth, topStructure.BottomLeftAreaCorner.y);
    }
コード例 #21
0
ファイル: Deserializer.cs プロジェクト: bsed/Freecon-Galactic
        /// <summary>
        /// Loads the structures associated with the given object
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static async Task <List <IStructure> > LoadStructures(IHasStructures loadMine, IDatabaseManager dbm, IGalaxyRegistrationManager rm, IPlayerLocator pl)
        {
            var loadedStructureModels = await dbm.GetStructuresAsync(loadMine.GetStructureIDs());

            List <IStructure> loadedStructures = new List <IStructure>();

            foreach (var ls in loadedStructureModels)
            {
                IStructure s = StructureHelper.InstantiateStructure(ls, pl, rm);
                loadMine.AddStructure(s);
                loadedStructures.Add(s);
            }

            return(loadedStructures);
        }
コード例 #22
0
        public ActionResult Delete()
        {
            var keys = new Dictionary <string, object>();

            if (Request.QueryString.Count > 0)
            {
                foreach (var key in Request.QueryString.AllKeys)
                {
                    keys.Add(key, Request.QueryString[key]);
                }
            }

            StructureHelper.Delete(tableSlug, keys);
            return(Redirect("/admin/" + tableSlug + "List"));
        }
コード例 #23
0
        public ActionResult Detail()
        {
            var keys = new Dictionary <string, object>();

            if (Request.QueryString.Count > 0)
            {
                foreach (var key in Request.QueryString.AllKeys)
                {
                    keys.Add(key, Request.QueryString[key]);
                }
            }

            ViewData.Model = StructureHelper.Detail(tableSlug, keys);
            return(View());
        }
コード例 #24
0
ファイル: DbScheme.cs プロジェクト: Cloudxtreme/Nimda
        public object FormatColumn(object val)
        {
            if (!string.IsNullOrEmpty(this.format))
            {
                if (this.type == "ref")
                {
                    if (val != null && !string.IsNullOrEmpty(val.ToString()))
                    {
                        var selectedValue = val.ToString();
                        var dict          = StructureHelper.GetRelation(format, selectedValue);
                        return(string.Join(",", dict.Values));
                    }
                }
                else if (this.type == "timestamp")
                {
                    var dt = new DateTime(1970, 1, 1).AddSeconds(Convert.ToInt32(val));
                    return(dt.ToString(this.format));
                }
                else if (this.type == "datetime" || this.type == "date")
                {
                    if (val != null && !string.IsNullOrEmpty(val.ToString()))
                    {
                        return(Convert.ToDateTime(val).ToString(this.format));
                    }
                    return(val);
                }
                else if (this.type == "enum")
                {
                    var arr = this.format.Split('^');
                    if (arr.First().IndexOf('@') > -1)
                    {
                        foreach (var item in arr)
                        {
                            var xxxx = item.Split('@');
                            if (xxxx[0] == val.ToString())
                            {
                                return(xxxx[1]);
                            }
                        }
                    }
                }
            }

            return(val);
        }
コード例 #25
0
    public List <RoomNode> GenerateRoomsInGivenSpaces(List <Node> roomSpaces, float roomBottomCornerModifer, float roomTopCornerModifer, int roomOffset)
    {
        List <RoomNode> listToReturn = new List <RoomNode>();

        foreach (var space in roomSpaces)
        {
            Vector2Int newBottomLeftPoint = StructureHelper.GenerateBottomLeftCornerBetween(space.BottomLeftAreaCorridor, space.TopRightAreaCorridor, roomBottomCornerModifer, roomOffset);
            Vector2Int newTopRightPoint   = StructureHelper.GenerateTopRightCornerBetween(space.BottomLeftAreaCorridor, space.TopRightAreaCorridor, roomTopCornerModifer, roomOffset);

            space.BottomLeftAreaCorridor  = newBottomLeftPoint;
            space.TopRightAreaCorridor    = newTopRightPoint;
            space.BottomRightAreaCorridor = new Vector2Int(newTopRightPoint.x, newBottomLeftPoint.y);
            space.TopLeftAreaCorridor     = new Vector2Int(newBottomLeftPoint.x, newTopRightPoint.y);

            listToReturn.Add((RoomNode)space);
        }

        return(listToReturn);
    }
コード例 #26
0
        // GET: Admin
        public ActionResult List(int pageIndex = 0, int pageSize = 20)
        {
            var result = new ResultList();

            result.pageIndex = pageIndex;
            result.pageSize  = pageSize;
            Dictionary <string, object> paramList = new Dictionary <string, object>();

            foreach (var q in Request.QueryString.AllKeys)
            {
                if (q != "pageIndex" && q != "pageSize" && !string.IsNullOrEmpty(Request.QueryString[q]))
                {
                    paramList.Add(q, Request.QueryString[q]);
                }
            }
            StructureHelper.Query(tableSlug, paramList, result);
            ViewData.Model    = result;
            ViewBag.condition = paramList;
            return(View());//TODO html editor, field mapping, validation for add and update
        }
コード例 #27
0
        public ActionResult Create()
        {
            var msg = "";

            ViewData.Model = StructureHelper.GetTableConfig(tableSlug);
            if (Request.HttpMethod == "POST")
            {
                var form = Request.Form;
                Dictionary <string, object> record = new Dictionary <string, object>();
                foreach (var key in form.AllKeys)
                {
                    record.Add(key, form[key]);
                }
                //TODO validation

                StructureHelper.Create(tableSlug, record);
                msg = "created";
            }
            ViewBag.msg = msg;
            return(View());
        }
コード例 #28
0
ファイル: LevelGenerator.cs プロジェクト: Dreys57/StealthGame
    public List <Node> BuildLevel(
        int maxIterations,
        int roomWidthMin,
        int roomLengthMin,
        int corridorWidth,
        float bottomLeftPointModifier,
        float topRightPointModifier,
        int offset)
    {
        BinarySpacePartitioner bsp = new BinarySpacePartitioner(levelWidth, levelLength);

        allNodesCollection = bsp.PrepareNodesCollection(maxIterations, roomWidthMin, roomLengthMin);
        List <Node> roomSpaces = StructureHelper.TraverseGraphToExtractLowestLeaf(bsp.RootNode);

        RoomGenerator   roomGenerator = new RoomGenerator(maxIterations, roomLengthMin, roomWidthMin);
        List <RoomNode> roomList      = roomGenerator.GenerateRoomInGivenSpace(roomSpaces, bottomLeftPointModifier, topRightPointModifier, offset);

        CorridorGenerator corridorGenerator = new CorridorGenerator();
        List <Node>       corridors         = corridorGenerator.CreateCorridor(allNodesCollection, corridorWidth);

        return(new List <Node>(roomList).Concat(corridors).ToList());
    }
コード例 #29
0
 public void GenerateDoors(List <Node> corridors)
 {
     foreach (CorridorNode node in corridors)
     {
         if (node.connectedRooms[0] != null && node.connectedRooms[1] != null)
         {
             Vector2Int center = StructureHelper.CalculateMiddlePoint(node.BottomLeftCorner, node.TopRightCorner);
             if (node.orientation == RelativePosition.Up || node.orientation == RelativePosition.Down)
             {
                 GameObject newDoor = Instantiate(doorObject, new Vector3(center.x, 0, center.y), Quaternion.Euler(new Vector3(-90, 0, 0)));
                 node.connectedRooms[0].doors.Add(newDoor.transform);
                 node.connectedRooms[1].doors.Add(newDoor.transform);
             }
             else
             {
                 GameObject newDoor = Instantiate(doorObject, new Vector3(center.x, 0, center.y), Quaternion.Euler(new Vector3(-90, 90, 0)));
                 node.connectedRooms[0].doors.Add(newDoor.transform);
                 node.connectedRooms[1].doors.Add(newDoor.transform);
             }
         }
     }
 }
コード例 #30
0
ファイル: CorridorNode.cs プロジェクト: Dreys57/StealthGame
    private int GetXForNeighbor(Vector2Int bottomNodeLeft, Vector2Int bottomNodeRight, Vector2Int topNodeLeft, Vector2Int topNodeRight)
    {
        if (topNodeLeft.x < bottomNodeLeft.x && bottomNodeRight.x < topNodeRight.x)
        {
            return(StructureHelper.CalculateCenter(bottomNodeLeft + new Vector2Int(wallDistanceModifier, 0), bottomNodeRight - new Vector2Int(this.corridorWidth + wallDistanceModifier, 0)).x);
        }

        if (topNodeLeft.x >= bottomNodeLeft.x && bottomNodeRight.x >= topNodeRight.x)
        {
            return(StructureHelper.CalculateCenter(topNodeLeft + new Vector2Int(wallDistanceModifier, 0), topNodeRight - new Vector2Int(this.corridorWidth + wallDistanceModifier, 0)).x);
        }

        if (bottomNodeLeft.x >= topNodeLeft.x && bottomNodeLeft.x <= topNodeRight.x)
        {
            return(StructureHelper.CalculateCenter(bottomNodeLeft + new Vector2Int(wallDistanceModifier, 0), topNodeRight - new Vector2Int(this.corridorWidth + wallDistanceModifier, 0)).x);
        }

        if (bottomNodeRight.x <= topNodeRight.x && bottomNodeRight.x >= topNodeLeft.x)
        {
            return(StructureHelper.CalculateCenter(topNodeLeft + new Vector2Int(wallDistanceModifier, 0), bottomNodeRight - new Vector2Int(this.corridorWidth + wallDistanceModifier, 0)).x);
        }

        return(checkValue);
    }
コード例 #31
0
 public ShellScreenObject(StructureHelper structureHelper) => StructureHelper = structureHelper;
コード例 #32
0
ファイル: LoginScreenObject.cs プロジェクト: LogoFX/tools
 public LoginScreenObject(StructureHelper structureHelper)
 {
     StructureHelper = structureHelper;
 }