SHARE
TWEET

Untitled

a guest Dec 16th, 2019 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //README: to any poor sod who has to read through this I apologize for the absolute horror below, I should really have done this in python.
  2.  
  3. //for each piece
  4.  
  5. int numberOfRooms = 0;
  6. int maxLoungeSize = 0;
  7. int minBathroomSize = 100;
  8.  
  9. int loungeID = 0;
  10. int bathroomID = 0;
  11. int hallID = 0;
  12. int kitchenID = 0;
  13. int bedroomIDs[]; //IDs of rooms that are not halls, lounges or bathrooms.
  14.  
  15. string allRooms[]; //encoded string containing room vals. Syntax for a 2x2 room of prims 3,4,5,6: "S 3 4 5 6 " might not need start and end tags
  16.  
  17. /*structure
  18. //set min, max
  19. //set Room IDs
  20. //set rooms into groups based on ID -- might be able to condesne the end down here.
  21.  
  22. */
  23.  
  24. //this runs on the assumption the connectivity node is always sorted (replacement code at end)
  25. numberOfRooms = primattrib(0,"class",(@numprim -1),0);
  26.  
  27.  
  28.  
  29. //loop through each piece, initally setting max & min
  30. for(int i = 0; i <= numberOfRooms; i++){
  31.    
  32.     int curRoomSize = 0;
  33.     string curRoomVal = "S ";
  34.     int isHall = 0;
  35.    
  36.    
  37.     //loop through
  38.     for(int j = 0; j < @numprim; j++){
  39.         //get size
  40.         if(primattrib(0,"class",j,0) == i){
  41.             append(curRoomVal, sprintf("%i ",j));
  42.             curRoomSize = curRoomSize + 1;
  43.          
  44.             //check if hallway
  45.             if(inprimgroup(0,"HallGroup",j) == 1){
  46.                 isHall = 1;
  47.             }
  48.         }          
  49.     }
  50.    
  51.     //set largest room to lounge
  52.     if((curRoomSize > maxLoungeSize) && (isHall == 0)){
  53.         maxLoungeSize = curRoomSize;
  54.         loungeID = i;
  55.     }
  56.     //not an else because of edge case where bathroom is 1st room encountered
  57.     if((curRoomSize < minBathroomSize) && (isHall == 0)){
  58.         minBathroomSize = curRoomSize;
  59.         bathroomID = i;
  60.     }
  61.     if(isHall == 1){
  62.         hallID = i;
  63.     }  
  64.     append(allRooms,curRoomVal);
  65. }
  66.  
  67. //make array of remaning rooms
  68. for(int i = 0; i <= numberOfRooms; i++){
  69.     if(i != loungeID && i != bathroomID && i != hallID){
  70.         append(bedroomIDs,i);
  71.        // printf("bedroom: % i", i);
  72.     }
  73. }
  74.  
  75. //make the last item a kitchen.if the array is 1 long then set the lounge to a kitchen. Randomising this would be nice but I dont think its possible in vex without serious spaghetti.
  76. if(len(bedroomIDs) != 1){
  77.     kitchenID = pop(bedroomIDs);
  78. }else{
  79.     kitchenID = loungeID;
  80. }
  81.  
  82. printf("\n bathroom = %i, Lounge = %i, Hall = %i Kitchen = %i Bedrooms = %i",bathroomID,loungeID,hallID,kitchenID,bedroomIDs);
  83.  
  84.  
  85. //set groups through loops again
  86. for(int i = 0; i <= numberOfRooms; i++){
  87.      for(int j = 0; j < @numprim; j++){
  88.        
  89.      
  90.      //Loop Through matching all single existance rooms, this means we can then just assume anything else is a bedroom, so we dont need to loop through.
  91.         if(primattrib(0,"class",j,0) == kitchenID){
  92.             setattrib(0,"prim","roomType",j,0,"kitchen","set");      
  93.             //setprimgroup(0,"g_kitchen",j,1,"set");                
  94.         }else if(primattrib(0,"class",j,0) == hallID){
  95.             setattrib(0,"prim","roomType",j,0,"hall","set");      
  96.             //setprimgroup(0,"g_hall",j,1,"set");
  97.         }else if(primattrib(0,"class",j,0) == loungeID){
  98.             setattrib(0,"prim","roomType",j,0,"lounge","set");      
  99.             //setprimgroup(0,"g_lounge",j,1,"set");
  100.         }else if(primattrib(0,"class",j,0) == bathroomID){
  101.             setattrib(0,"prim","roomType",j,0,"bathroom","set");      
  102.             //setprimgroup(0,"g_bathroom",j,1,"set");
  103.         }else{
  104.             setattrib(0,"prim","roomType",j,0,"bedroom","set");        
  105.             //setprimgroup(0,"g_bedroom",j,1,"set");
  106.         }    
  107.      }
  108. }
  109.  
  110.  
  111.  
  112. /* ------------------------------------------ */
  113.  
  114.  
  115. /*
  116. for(int i = 0; i <= @numprim; i++){
  117.      if(primattrib(0,"class",i,0) > numberOfRooms){
  118.      numberOfRooms = primattrib(0,"class",(@numprim -1),0);
  119.      }
  120. }*/
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top