New base parts

This commit is contained in:
Anuken 2020-09-08 15:46:24 -04:00
parent 905f1608de
commit ef617b7fd2
30 changed files with 45 additions and 8 deletions

Binary file not shown.

View File

@ -0,0 +1,2 @@
mschxœE}r@ ŵ|Ã.0ÉôÜ%ôÄÞºLlp×<70>4éiz47Cß[eÚa˜Z==ieËé<>dóxñò°N>|ý¼ZÞð5†NúÃ2ž‡ƒŸ×0}ÛN^ÚóôcŽÃmÙÂ!Ö¬ã<m—á°Ì¯þ} bòŽá}¸n—ë?yX¶Õi¯Ûùæ©=nÓ*ö3 i®ì:ÌËÑKÿ¦ãÉÿ7íßFÔþçÆÃÊ.·å<†á:ÎþŒ` P¯4ÀH[xžf?œüìÃHqñÙ^dÄ+•ty&‰IÄH#VáDRIðò'9P#DeBIr àhšJ+&E‰0—!¥˜‘­Ò}<7D>¦Éþgÿ@e&®Zj{˜<ºFdŠ\Q+…U81Ð2*tÀ
på¾ï¿ðþž¶Lô.<2E>¼ªb_#é~ß?ðÜ1ZiÃý²×Ë00FË…Þi `‡D#)WIƒ R‰Š;¨iÅÈ)ZEGe£Ê†JÞªÜ •†V“QjUj¹"ç=¬•‰m¸ŒóYšV<0F>VEG"“øÛÁÃá)Ä3¹xœRëZ­kµ®es<>æ:ÍuzÙŽž”üct´fTKB4*Á<>9•´ì×ÑÎI¯#õ:R¯#õ)—ä¢RXE+I-<2D>ü¥r æ™ã!VðG§u

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
mschxś5Í[ŽĂ ĐkôĄiŐ5ô;B4EĘK„Tęî{]k>ĐÁćÚŕG<>źÓ”qJµ•qĚőáź©Ś¸·ŇŇ\ö©ů•ßKĹőŻ¦őYZîך· ±.{˶¦~[ö:dÜÖ9ďSječ+WxđŔÁ DŃ»hĄwçĐńU„°ęŕ-éYâŤŔő-č:Gtń:µ)„żh.2Ř8X˙¨Â˙oDt“EÎ˙<C38E>6ĎšT:ĂÁ<>ĆA·\8÷ĹŢ`äŇ#`

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,4 @@
mschxś-ÎMnÄ `ţŇÉbÔt5»ŠI\‰$# jŹ?~q<>˘đ32Mt3äö´1}ţpĺž—TľVţć˝q¤ŘÔ;W
ő8á´ćÖk~žý¨tí|nIzćµćRčţ$4ó_ŻiAbjGIu~Ąť Mąó6·ă¬ ŃC~€ąÎSFĚA‰<41>X4 2<C2A0>“2úp
˛FD<"FĐçĺÚ8ÁéeŔÓ^łH^ AG
Ř âȸ°ŠSţkA‰ŕS«8Ĺ+A‰dÝČËŚŁ}Â)*o

Binary file not shown.

View File

@ -0,0 +1 @@
mschxœ-Ík à)[¶úËSôPHI$¡mB©‰·w×5°ùL´¸70«_"ú=øZc™¼·è¶¾ãg+¸-1¼üšÏÓ\RÎhÿA¸9íµ¤çQ)çR<C3A7>Ë´oG ÀƒÐ#´¢ƒ¢EÐåïÄ£$¢8¢¡åAÃÐжÂIh…N8 ½à„p®5\ÄÆrƒ¡;K½ê ø¥%

Binary file not shown.

View File

@ -0,0 +1 @@
mschMIƒ0 —„"qhû<68>Üú¡,É8¢Ï¯ÓƒÇ£YlL˜®Æ˜OåXÂÆ5¼G<®¨,<2C>¿*1é!xi“%WîØ¥9+—pMãY8}bÍ)îa•¼ïv°ÉÆA<C386>-»æS%/­<17>Ù7ÁÞƒŒáî­ëƒÁr€ äm;s þ¦ë&Á÷.Œ›ø^±'<27>

View File

@ -0,0 +1 @@
mschxś= n<>0E} !]—čMśÄJŔ¦ĆnŐŰ×Ă—Š@_~üç<C3A7>Ţ)K(5jŃÔo«uzµ?Ú­ł2ľ¦úf?}+ouóô¦űčlđÚQqłć&O<>î:=>´ŃnŻ6ť•WeôLů˘Í]3 îˇGĎŰ˙o¶ŮŕnšŠ«ňqÓ_jý§všÇ5,+}®$><E2809A>!Iň*%!#Ţa«xóŰŚxÍśv"ˇK4%t =Lˇg\äH(1v=‡žŁ™CϡôÓKL/ˇWĐ+4+čô°†Ţ`z<>é ôzf ˝…Ţ\ĚběÓĐ{č=š=ôúđ}ŔôÓ†9ťH”|XF'FžĎ<>Ä+GAçxüt/ź”t‰#âąđ?1"¬čŤĹÜV9ť

View File

@ -0,0 +1 @@
mschxœ-Kƒ0 D'Ÿ†Ð®Ú]Á™<C381>E¬lB@D<>_!ËcûÍÁÀWšŸ|<7C>$N㺜,c]wè6Î3×Ï‹<0E>ÂL…êÄ×vHæao6âJB¥ÐA¿ ×†…5ЊN‡[­Uæaœúšñ- ¾xۇo]þ¡&þ

Binary file not shown.

View File

@ -0,0 +1,2 @@
mschxœMŽan„ Š®ºmMÿöŠètC`ºí‰{Š]:àŸ& ïñ˜¤Óázh·ª`öÝÒWiS‡Oa!Ìw)(úŽA/ѼzcÿÉyw”6Í¢Ö`¬å^)ÜHE'¾]¼¶j!ƒùL7Â{4Q;“6µx÷E?Ü¡L{y¢œ_‰½ú̇±†“êØÈ–ðÁ…¶$ÊŽ†ˆ¶êj7CÃn6ÿŠŽõѳ!Ot-G+ĉæë oíÀè†.?ó£dò —Ì<E28094>œkr/‰Ô8N4@Ϩƒd41úSqñ c%
ÆÄÉ<>M

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -26,6 +26,7 @@ public class BaseGenerator{
private Tiles tiles; private Tiles tiles;
private Team team; private Team team;
private ObjectMap<Item, OreBlock> ores = new ObjectMap<>(); private ObjectMap<Item, OreBlock> ores = new ObjectMap<>();
private ObjectMap<Item, Floor> oreFloors = new ObjectMap<>();
private Seq<Tile> cores; private Seq<Tile> cores;
public void generate(Tiles tiles, Seq<Tile> cores, Tile spawn, Team team, Sector sector){ public void generate(Tiles tiles, Seq<Tile> cores, Tile spawn, Team team, Sector sector){
@ -41,6 +42,8 @@ public class BaseGenerator{
for(Block block : content.blocks()){ for(Block block : content.blocks()){
if(block instanceof OreBlock && block.asFloor().itemDrop != null){ if(block instanceof OreBlock && block.asFloor().itemDrop != null){
ores.put(block.asFloor().itemDrop, (OreBlock)block); ores.put(block.asFloor().itemDrop, (OreBlock)block);
}else if(block.isFloor() && block.asFloor().itemDrop != null && !oreFloors.containsKey(block.asFloor().itemDrop)){
oreFloors.put(block.asFloor().itemDrop, block.asFloor());
} }
} }
@ -73,7 +76,8 @@ public class BaseGenerator{
pass(tile -> { pass(tile -> {
if(!tile.block().alwaysReplace) return; if(!tile.block().alwaysReplace) return;
if((tile.drop() != null || (tile.floor().liquidDrop != null && Mathf.chance(nonResourceChance * 2))) && Mathf.chance(resourceChance)){ if(((tile.overlay().asFloor().itemDrop != null || (tile.drop() != null && Mathf.chance(nonResourceChance)))
|| (tile.floor().liquidDrop != null && Mathf.chance(nonResourceChance * 2))) && Mathf.chance(resourceChance)){
Seq<BasePart> parts = bases.forResource(tile.drop() != null ? tile.drop() : tile.floor().liquidDrop); Seq<BasePart> parts = bases.forResource(tile.drop() != null ? tile.drop() : tile.floor().liquidDrop);
if(!parts.isEmpty()){ if(!parts.isEmpty()){
tryPlace(parts.random(), tile.x, tile.y); tryPlace(parts.random(), tile.x, tile.y);
@ -94,10 +98,6 @@ public class BaseGenerator{
//small walls //small walls
pass(tile -> { pass(tile -> {
//no walls around cores
if(cores.contains(t -> t.within(tile, (3 + 4) * tilesize))){
return;
}
if(tile.block().alwaysReplace){ if(tile.block().alwaysReplace){
boolean any = false; boolean any = false;
@ -175,19 +175,20 @@ public class BaseGenerator{
} }
if(part.required instanceof Item){ if(part.required instanceof Item){
Item item = (Item)part.required;
for(Stile tile : result.tiles){ for(Stile tile : result.tiles){
if(tile.block instanceof Drill){ if(tile.block instanceof Drill){
tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> { tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> {
if(!tiles.getn(ex, ey).floor().isLiquid){ if(!tiles.getn(ex, ey).floor().isLiquid){
tiles.getn(ex, ey).setOverlay(ores.get((Item)part.required)); set(tiles.getn(ex, ey), item);
} }
Tile rand = tiles.getc(ex + Mathf.range(1), ey + Mathf.range(1)); Tile rand = tiles.getc(ex + Mathf.range(1), ey + Mathf.range(1));
if(!rand.floor().isLiquid){ if(!rand.floor().isLiquid){
//random ores nearby to make it look more natural //random ores nearby to make it look more natural
rand.setOverlay(ores.get((Item)part.required)); set(rand, item);
} }
}); });
} }
@ -196,9 +197,32 @@ public class BaseGenerator{
Schematics.place(result, cx + result.width/2, cy + result.height/2, team); Schematics.place(result, cx + result.width/2, cy + result.height/2, team);
//fill drills with items after placing
if(part.required instanceof Item){
Item item = (Item)part.required;
for(Stile tile : result.tiles){
if(tile.block instanceof Drill){
Building build = world.tile(tile.x + cx, tile.y + cy).build;
if(build != null){
build.items.add(item, build.block.itemCapacity);
}
}
}
}
return true; return true;
} }
void set(Tile tile, Item item){
if(ores.containsKey(item)){
tile.setOverlay(ores.get(item));
}else if(oreFloors.containsKey(item)){
tile.setFloor(oreFloors.get(item));
}
}
boolean isTaken(Block block, int x, int y){ boolean isTaken(Block block, int x, int y){
int offsetx = -(block.size - 1) / 2; int offsetx = -(block.size - 1) / 2;
int offsety = -(block.size - 1) / 2; int offsety = -(block.size - 1) / 2;

View File

@ -326,7 +326,7 @@ public class Tile implements Position, QuadTreeObject, Displayable{
setOverlay(content.block(ore)); setOverlay(content.block(ore));
} }
public void setOverlay(Block block){ public void setOverlay(@NonNull Block block){
this.overlay = (Floor)block; this.overlay = (Floor)block;
recache(); recache();