Example #1
0
    protected RoomCandidate NewRoom(int MaxX, int MaxY, int MaxDimX, int MaxDimY, int MinDimX, int MinDimY)
    {
        RoomCandidate roomCand = new RoomCandidate();

        if (MinDimX >= MaxDimX)
        {
            MinDimX = MaxDimX - 1;
        }
        if (MinDimY >= MaxDimY)
        {
            MinDimY = MaxDimY - 1;
        }

        roomCand.x    = Random.Range(1, MaxX);
        roomCand.y    = Random.Range(1, MaxY);
        roomCand.dimX = Random.Range(MinDimX, MaxDimX);
        roomCand.dimY = Random.Range(MinDimY, MaxDimY);
        if (roomCand.x + roomCand.dimX >= MaxX)
        {
            roomCand.dimX = MaxX - roomCand.x;
        }
        if (roomCand.y + roomCand.dimY >= MaxY)
        {
            roomCand.dimY = MaxY - roomCand.y;
        }
        return(roomCand);
    }
Example #2
0
    public virtual void FillSubRegionSmall(int NoOfSubRegions)
    {                                          //At the moment just add rooms
        int NoOfAttempts = NoOfSubRegions * 8; //Try each room 8 times.
        int minDimX = 3; int minDimY = 3;      //A medium sized room.

        while ((NoOfSubRegions > 0) && (NoOfAttempts > 0))
        {
            NoOfAttempts--;
            RoomCandidate roomCand = NewRoom(MapWidth - 1, MapHeight - 1, 15, 15, minDimX, minDimY);
            if (!DoesRoomCollide(roomCand))
            {//A a room or cave subregion.
                PlaceRoom(roomCand, UnderworldGenerator.RegionIndex + 1);
                switch (Random.Range(0, 2))
                {
                case 0:
                    SubRegions.Add(new RoomRegion(UnderworldGenerator.RegionIndex++, layer + 1, roomCand.x, roomCand.y, roomCand.dimX, roomCand.dimY, 0, this)); break;

                case 1:
                default:
                    SubRegions.Add(new CaveRegion(UnderworldGenerator.RegionIndex++, layer + 1, roomCand.x, roomCand.y, roomCand.dimX, roomCand.dimY, 0, this)); break;
                }
                NoOfSubRegions--;
            }
        }
    }
Example #3
0
 protected void PlaceRoom(RoomCandidate candidate, int roomIndex)
 {
     for (int x = candidate.x; x <= candidate.x + candidate.dimX && x <= Map.GetUpperBound(0); x++)
     {
         for (int y = candidate.y; y <= candidate.y + candidate.dimY && y <= Map.GetUpperBound(1); y++)
         {
             Map[x, y].RoomMap = roomIndex;
         }
     }
 }
Example #4
0
        public async Task <ActionResult> PostCandidate([FromForm] CandidateAddViewModel candidate)
        {
            var a = candidate;

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (candidate.ExamId > 0)
            {
                if (candidate.TC != null && candidate.Image != null)
                {
                    string NewImageName = Guid.NewGuid().ToString() + "_" + candidate.Image.FileName;
                    string NewImagePath = Path.Combine("Images", NewImageName);
                    string image        = Path.Combine(_hostEnv.WebRootPath, NewImagePath);
                    candidate.Image.CopyTo(new FileStream(image, FileMode.Create));



                    string NewFileName = Guid.NewGuid().ToString() + "_" + candidate.TC.FileName;
                    string NewFilePath = Path.Combine("Files", NewFileName);
                    string file        = Path.Combine(_hostEnv.WebRootPath, NewFilePath);
                    candidate.Image.CopyTo(new FileStream(file, FileMode.Create));


                    Candidate candidateToPost = _mapper.Map <Candidate>(candidate);
                    candidateToPost.ImagePath = NewImagePath;
                    candidateToPost.TCPath    = NewFilePath;
                    _repo.Add(candidateToPost);
                    var save = await _repo.SaveAsync(candidateToPost);

                    var rooms = await _room.GetT();

                    foreach (var room in rooms)
                    {
                        if (_roomCandidateRepo.CountCandidatesInRoom(room.RoomId, candidate.ExamId) < room.Capacity)
                        {
                            RoomCandidate rc = new RoomCandidate {
                                RoomId = room.RoomId, ExamId = candidate.ExamId, CandidateId = candidateToPost.CandidateId
                            };
                            _seat.Add(rc);
                            await _seat.SaveAsync(rc);

                            candidateToPost.Exams  = null;
                            rc.Room.RoomCandidates = null;
                            return(Ok(rc));
                        }
                    }
                    return(Ok(candidateToPost));
                }
            }
            return(BadRequest());
        }
Example #5
0
 protected bool DoesRoomCollide(RoomCandidate candidate)
 {
     for (int x = candidate.x; x <= candidate.x + candidate.dimX && x <= Map.GetUpperBound(0); x++)
     {
         for (int y = candidate.y; y <= candidate.y + candidate.dimY && y <= Map.GetUpperBound(1); y++)
         {
             if (Map[x, y].RoomMap != 0)
             {//Space already contains a room.
                 return(true);
             }
         }
     }
     return(false);
 }