From 416ca3fb52055f4bb9c6249e4e9c4ee2c85442ec Mon Sep 17 00:00:00 2001 From: xDm1try <112641839+xDm1try@users.noreply.github.com> Date: Wed, 15 Feb 2023 09:39:11 +0700 Subject: [PATCH 1/2] gun & shotgun --- level.out | Bin 38556 -> 31690 bytes .../java/ru/nsu/fit/dib/projectdib/App.java | 40 +++++- .../ru/nsu/fit/dib/projectdib/Config.java | 2 + .../ru/nsu/fit/dib/projectdib/EntityType.java | 5 +- .../ru/nsu/fit/dib/projectdib/Factory.java | 36 +++-- .../fit/dib/projectdib/data/HeroSpecs.java | 112 ++++++++++++---- .../fit/dib/projectdib/data/Projectiles.java | 4 +- .../components/PlayerMovingComponent.java | 34 ++++- .../resources/assets/levels/tmx/level.tmx | 126 +++++++++--------- src/main/resources/assets/textures/gun.png | Bin 0 -> 29495 bytes .../resources/assets/textures/shotgun.png | Bin 0 -> 9456 bytes 11 files changed, 244 insertions(+), 115 deletions(-) create mode 100644 src/main/resources/assets/textures/gun.png create mode 100644 src/main/resources/assets/textures/shotgun.png diff --git a/level.out b/level.out index a19264870431c333619e3440577381b2f22a6719..6156d9d74798eb46691022db14b2f35bb32a00aa 100644 GIT binary patch literal 31690 zcmeHQYm8mhb>8RBjEy~hj9(BNjCo}+#>_ax#tt?xcI?27hv3*Qu{^2D^~|+r!uZbg z&YkhNEjU&q>?BoUq&x{x9KaQ=+yq5Dnuj8q(lk_RMXdaw#qd$7t+Kq%-HNeZIZ+x4yOZJ`a<7PQPwiMv7)lakQf_GTO0!pw!Vfu&-md zIP{5pZwZHk`LX=q?;OY%^2JMo9UlK)Qf-$_n8#eZkgf9KAjp@Vn&;n>{RZCVZ# zbHn87jz(PVDiue2OQXg7NavOvcf!HO9@BI%H(WAJJw4fOlPMNTW?}aya$~v9(bB+R z=gwTAZ|ES6cS(_GbPtS_N~TSnM+?}Dlyb$=@0tfq)NPte#eBYGZl5r-?tE_l#_?fe zOxJ(^(>LG5o^o<~138In)&cYEp&x(lQ?nlZR>sUy8JcmZoGO>2*4})9`0p4RC`hQe zL#0k`p-^Yv>oOy8wq|J z$1sPEZlP_Xx7Lw$>##TPAoC7yb&-W!-PS;^q$oSeMVWoH^oMWm&pw+m%~><2FnVxb zzQ}w>s1Eae2lBQK7pOYiRm%0=Px8zv4E5zla2^?G={EC9#oSoFIFj$%Mje@G3&(gR z(VWk6pwK(mLEEoa{pkC%9$KC;X1r+H2S8tTg)G%sv)lVK|cE6&}gC5V_M7R)?6u9GK+dF-@#nrK<7RCu%6f=C(Vo*EjmC4 z03Bt(iND+Pjkb{+2Ehmu;^goY|KB*tx=4iETrB1eBOT*M&n*AyU+2EwWFoAK1HYHI zSvb^8Q6U%iPOM~j7290s+f8eZs-(@ue69n3nm0bM`9pK}9?O`SYT7daS(q#5bTgK_ z@_Lps)o-NRAY(bP+v>l^uzCYhe)@9y8*)8%`6IlyI6k=m8_a_&T zCE6|~Yx#pHjg=)cO%t=-!g8fLYe&x6%$+WwTb1>QMY-s>%z=H@DIMP#jrv%0~b z1gllv0;^RZwT_#>1x4~UZE=NcmoS$#-X*x)=q+$r73Z?np9B{>Fa`yeb#X3K!sb=l zq|(SxC5#e1MO&+PIfE=IVT>O6b7UAJT##5vGZ?gaC|hwZfS;vpu?L~fZKTiz*URm+ ziA!AaM3)Y-I%0iq5-ywQO zC8NKWtn2-`>&R*sE|}VqqZ`SR93kWc7mRg=Hi;XFTNY;j)^{_juY+ zVrk4;R#`8VT$Xt*Gsyui&6XXwAP+K&F}hs=a1L=?AzYA^YyIe8W|I#nm|Yj=(nd{B z(I)c*H)nDwz-sa#+Gcu}xRsN6w1KQ9e{MZl8R2p}nNo|92)M802ues+poCnyPzs40A?`lf zBsTc7D<8Pve&GGI$r=J(#6pg2r6VdZn=f2YFAF{GF0y19W6Rw=wCuWjb9Xl*v0z~# z*+-jX^lGwh<@1gdT4eICBuk#tt|e=e9~Z0YMj?gxZucj_Sf1Kob)krV=(!-Q`)HG7 z;D*Ys+2Dc=qqlgMbIFpYL=^dYe-5d=MY!NiTmTX-V21F73l<`)8{)v? zaEs@HTak6b1*?#7!8J^{z^cgw;>EdO`IkixMJ!y_kR@DDMv4n6PPkyI3l|i4f(z

*r+7rF32Jkh1HUa+Q1 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 Dz&9GL literal 38556 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 diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/App.java b/src/main/java/ru/nsu/fit/dib/projectdib/App.java index 2244540e..ccb051eb 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/App.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/App.java @@ -14,14 +14,18 @@ import com.almasb.fxgl.app.GameSettings; import com.almasb.fxgl.app.scene.Viewport; import com.almasb.fxgl.dsl.FXGL; +import com.almasb.fxgl.dsl.FXGLForKtKt; import com.almasb.fxgl.dsl.components.HealthIntComponent; import com.almasb.fxgl.entity.Entity; +import com.almasb.fxgl.entity.SpawnData; import com.almasb.fxgl.entity.components.CollidableComponent; import com.almasb.fxgl.entity.level.LevelLoader; import com.almasb.fxgl.entity.level.tiled.TMXLevelLoader; import com.almasb.fxgl.input.UserAction; import com.almasb.fxgl.input.virtual.VirtualButton; import com.almasb.fxgl.io.FileSystemService; +import com.almasb.fxgl.pathfinding.CellState; +import com.almasb.fxgl.pathfinding.astar.AStarGrid; import com.almasb.fxgl.physics.CollisionHandler; import java.awt.Dimension; import java.awt.Toolkit; @@ -148,6 +152,29 @@ protected void onActionBegin() { setSkipOther(true); }); } + if(!isSkipOther()){ + getGameWorld().getEntitiesByType(EntityType.GUN) + .stream() + .filter(gun -> gun.hasComponent(CollidableComponent.class) && gun.isColliding(player)) + .forEach(gun -> { + spawn(player.getComponent(PlayerMovingComponent.class).getSpecification().getMainWeapon(), player.getCenter().subtract(new Point2D(80,100))); + player.getComponent(PlayerMovingComponent.class).getSpecification().setMainWeapon("gun"); + gun.removeFromWorld(); + setSkipOther(true); + }); + } + if(!isSkipOther()){ + getGameWorld().getEntitiesByType(EntityType.SHOTGUN) + .stream() + .filter(shotgun -> shotgun.hasComponent(CollidableComponent.class) && shotgun.isColliding(player)) + .forEach(shotgun -> { + spawn(player.getComponent(PlayerMovingComponent.class).getSpecification().getMainWeapon(), player.getCenter().subtract(new Point2D(80,100))); + player.getComponent(PlayerMovingComponent.class).getSpecification().setMainWeapon("shotgun"); + shotgun.removeFromWorld(); + setSkipOther(true); + }); + } + setSkipOther(false); } }, KeyCode.F, VirtualButton.X); @@ -204,6 +231,7 @@ protected void initGame() { viewport = getGameScene().getViewport(); factory = new Factory(); getGameWorld().addEntityFactory(factory); + /* Level lvl= new Level(new Random().nextInt(),64,64,1,15); String levelName = "tmx/" + LevelToTmx.levelToTmx(lvl); @@ -227,14 +255,15 @@ protected void initGame() { player.addComponent(new ChunkLoaderComponent(new ChunkLoader(wallMapper))); viewport.setZoom(1.2); viewport.setLazy(true); +*/ - /* FXGL.setLevelFromMap("tmx/level2.tmx"); Spawn.spawnInitialObjects(); - spawn("enemy", 48, 240); - this.player = spawn("player", getAppWidth() / 2, getAppHeight() / 2); + //spawn("enemy", 48, 240); + HeroSpecs specs = new HeroSpecs("1", "shotgun", "ak",10, 250.0, "player.png"); + this.player = FXGL.spawn("player", new SpawnData(getAppWidth() / 2, getAppHeight() / 2).put("specification", specs) ); viewport.bindToEntity(player, getAppWidth() / 2, getAppHeight() / 2); AStarGrid grid = AStarGrid.fromWorld(FXGL.getGameWorld(), FXGLForKtKt.getAppWidth(), getAppHeight(), 25, 25, (type) -> { @@ -247,9 +276,10 @@ protected void initGame() { set("grid", grid); spawn("ak", 600, 600); - this.player = spawn("player", 60, 60); + // this.player = spawn("player", 60, 60); + spawn("gun", 600, 700); viewport.bindToEntity(player, getAppWidth() / 2, getAppHeight() / 2); - viewport.setLazy(true); */ + viewport.setLazy(true); } private void serialize(Level lvl) throws IOException { diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/Config.java b/src/main/java/ru/nsu/fit/dib/projectdib/Config.java index 725386bb..5bd2d4cb 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/Config.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/Config.java @@ -15,6 +15,8 @@ public class Config { public static String WINDOW_MODE; public static final javafx.util.Duration SHOOT_DELAY_ARROW = Duration.seconds(0.3); public static final javafx.util.Duration SHOOT_DELAY_AK = Duration.seconds(0.1); + public static final javafx.util.Duration SHOOT_DELAY_GUN = Duration.seconds(1); + public static final javafx.util.Duration SHOOT_DELAY_SHOTGUN = Duration.seconds(1); diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/EntityType.java b/src/main/java/ru/nsu/fit/dib/projectdib/EntityType.java index e7b3958a..f22332f1 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/EntityType.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/EntityType.java @@ -21,8 +21,9 @@ public enum EntityType { DOOR_TRIGGER("doorTrigger"), CHEST("chest"), BOW("bow"), - AK("ak"); - + AK("ak"), + GUN("gun"), + SHOTGUN("shotgun"); private final String name; EntityType(String name) { diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/Factory.java b/src/main/java/ru/nsu/fit/dib/projectdib/Factory.java index d68bc9b5..abe74384 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/Factory.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/Factory.java @@ -1,16 +1,12 @@ package ru.nsu.fit.dib.projectdib; -import static com.almasb.fxgl.dsl.FXGL.entityBuilder; -import static com.almasb.fxgl.dsl.FXGL.getAppHeight; -import static com.almasb.fxgl.dsl.FXGL.getInput; -import static com.almasb.fxgl.dsl.FXGL.geto; -import static com.almasb.fxgl.dsl.FXGL.texture; +import static com.almasb.fxgl.dsl.FXGL.*; import static com.almasb.fxgl.dsl.FXGLForKtKt.getGameWorld; import static com.almasb.fxgl.dsl.FXGLForKtKt.set; import com.almasb.fxgl.core.util.LazyValue; import com.almasb.fxgl.dsl.FXGL; import com.almasb.fxgl.dsl.FXGLForKtKt; -import static com.almasb.fxgl.dsl.FXGL.getGameWorld; + import static java.lang.Character.getName; import static java.lang.Character.toUpperCase; import com.almasb.fxgl.dsl.FXGL; @@ -80,7 +76,7 @@ public Entity newPlayer(SpawnData data) { WallMapper wallMapper = new WallMapper(64, 16, arr);*/ ////////////// - HeroSpecs specs = new HeroSpecs("1", "bow", "ak", 250.0, "player.png"); + //HeroSpecs specs = new HeroSpecs("1", "shotgun", "ak",10, 250.0, "player.png"); return entityBuilder() .from(data) @@ -89,7 +85,7 @@ public Entity newPlayer(SpawnData data) { .bbox(new HitBox(new Point2D(25, 110), BoundingShape.box(160, 160))) .anchorFromCenter() .with(physics) - .with(new PlayerMovingComponent(specs)) + .with(new PlayerMovingComponent(data.get("specification"))) .with(new CellMoveComponent(25, 25, 250)) .with(new AStarMoveComponent(new LazyValue<>(() -> geto("grid")))) //.with(new ChunkLoaderComponent(new ChunkLoader(wallMapper))) @@ -213,7 +209,7 @@ public Entity newCoin(SpawnData data) { @Spawns("projectile") public Entity newProjectile(SpawnData data) { Entity player = FXGLForKtKt.getGameWorld().getSingleton(EntityType.PLAYER); - Point2D direction = getInput().getMousePositionWorld().subtract(player.getCenter().subtract(new Point2D(60,90))); + Point2D direction = getInput().getMousePositionWorld().subtract(new Point2D(data.get("vert_deflection"),data.get("vert_deflection"))).subtract(player.getCenter().subtract(new Point2D(60,90))); Projectiles projectile = data.get("typeProj"); return entityBuilder() .from(data) @@ -224,7 +220,6 @@ public Entity newProjectile(SpawnData data) { .collidable() .build(); } - @Spawns("bow") public Entity newBow(SpawnData data) { return entityBuilder(data) @@ -247,6 +242,27 @@ public Entity newAK(SpawnData data) { .build(); } + @Spawns("gun") + public Entity newGun(SpawnData data) { + return entityBuilder(data) + .from(data) + .type(EntityType.GUN) + .viewWithBBox(texture("gun.png", 25, 20)) + .bbox(new HitBox(BoundingShape.box(25,20))) + .with(new CollidableComponent(true)) + .build(); + } + @Spawns("shotgun") + public Entity newShotgun(SpawnData data) { + return entityBuilder(data) + .from(data) + .type(EntityType.SHOTGUN) + .viewWithBBox(texture("shotgun.png", 80, 50)) + .bbox(new HitBox(BoundingShape.box(80,50))) + .with(new CollidableComponent(true)) + .build(); + } + /** * Entity Enemy. * diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/data/HeroSpecs.java b/src/main/java/ru/nsu/fit/dib/projectdib/data/HeroSpecs.java index a29d08dd..b7fe188d 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/data/HeroSpecs.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/data/HeroSpecs.java @@ -1,34 +1,88 @@ package ru.nsu.fit.dib.projectdib.data; +import javax.swing.text.html.parser.Entity; +import java.util.List; + public class HeroSpecs { - private String name; - private String mainWeapon; - private String secondWeapon; - private double speed = 250; - private String playerImage; - - public HeroSpecs(String name, String firstWeapon, String secondWeapon, Double speed, String playerImage){ - this.name = name; - this.mainWeapon = firstWeapon; - this.secondWeapon = secondWeapon; - this.speed = speed; - this.playerImage = playerImage; - } - - public String getPlayerImage() {return playerImage;} - public Double getSpeed() {return speed;} - public String getMainWeapon() { - return mainWeapon; - } - public String getSecondWeapon() { - return secondWeapon; - } - - public void setMainWeapon(String newWeapon) { - mainWeapon = newWeapon; - } - public void setSecondWeapon(String newWeapon) { - secondWeapon = newWeapon; - } + private String name; + private String mainWeapon; + private String secondWeapon; + private double speed = 250; + private String playerImage; + private List inventory; + + private int HP; + private double Str; + private double Dex; + private double Phys; + private double Int; + private double Wis; + private double Char; + + public HeroSpecs( + String name, + String firstWeapon, + String secondWeapon, + int hp, + Double speed, + String playerImage) { + this.name = name; + this.mainWeapon = firstWeapon; + this.secondWeapon = secondWeapon; + this.HP = hp; + this.speed = speed; + this.playerImage = playerImage; + } + + public String getPlayerImage() { + return playerImage; + } + + public Double getSpeed() { + return speed; + } + + public String getMainWeapon() { + return mainWeapon; + } + + public String getSecondWeapon() { + return secondWeapon; + } + + public int getHP() { + return HP; + } + + public double getStr() { + return Str; + } + + public double getDex() { + return Dex; + } + + public double getPhys() { + return Phys; + } + + public double getInt() { + return Int; + } + + public double getWis() { + return Wis; + } + + public double getChar() { + return Char; + } + + public void setMainWeapon(String newWeapon) { + mainWeapon = newWeapon; + } + public void setSecondWeapon(String newWeapon) { + secondWeapon = newWeapon; + } } diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/data/Projectiles.java b/src/main/java/ru/nsu/fit/dib/projectdib/data/Projectiles.java index 1be46bab..d0124e44 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/data/Projectiles.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/data/Projectiles.java @@ -2,12 +2,14 @@ public enum Projectiles { ARROW("arrow", 250), - BULLET("bullet", 500); + BULLET("bullet", 400); private final String name; private final Integer speed; + + Projectiles(String name, Integer speed) { this.name = name; this.speed = speed; diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/moving/components/PlayerMovingComponent.java b/src/main/java/ru/nsu/fit/dib/projectdib/moving/components/PlayerMovingComponent.java index 72f00ef2..11f3a2d1 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/moving/components/PlayerMovingComponent.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/moving/components/PlayerMovingComponent.java @@ -160,19 +160,43 @@ public void shoot() { case("bow"): if (!shootTimer.elapsed(Config.SHOOT_DELAY_ARROW)) return; FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) - .put("typeProj", Projectiles.ARROW)); + .put("typeProj", Projectiles.ARROW) + .put("vert_deflection", 0.0)); shootTimer.capture(); break; case("ak"): if(!shootTimer.elapsed(Config.SHOOT_DELAY_AK)) return;; FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) - .put("typeProj", Projectiles.BULLET)); + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", 0.0)); shootTimer.capture(); break; - /*default: - currentWeapon = "bow"; + case("gun"): + if(!shootTimer.elapsed(Config.SHOOT_DELAY_GUN)) return;; + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", 0.0)); + shootTimer.capture(); + break; + case("shotgun"): + if(!shootTimer.elapsed(Config.SHOOT_DELAY_SHOTGUN)) return;; + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", 0.0)); + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", 25.0)); + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", 50.0)); + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", -25.0)); + FXGL.spawn("projectile", new SpawnData(getEntity().getPosition().getX()+20,getEntity().getPosition().getY()+30) + .put("typeProj", Projectiles.BULLET) + .put("vert_deflection", -50.0)); + shootTimer.capture(); break; - */ } diff --git a/src/main/resources/assets/levels/tmx/level.tmx b/src/main/resources/assets/levels/tmx/level.tmx index 6c387f32..5b4c803e 100644 --- a/src/main/resources/assets/levels/tmx/level.tmx +++ b/src/main/resources/assets/levels/tmx/level.tmx @@ -6,69 +6,69 @@ 627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, -627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,627,627,627,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,627,627,627,131,131,131,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, -627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, -627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,131,131,131,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,131,131,131,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,131,131,131,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,131,131,131,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, -627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, -627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, -627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,627,131,131,131,131,627,627,627,131,627,627,627,131,131,131,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,627,627,627,627,131,627,627,627,131,131,131,131,627,627,627,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,627,627,627,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,131,627,627,627,627,627, -627,627,131,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,627,627,627,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,627,627,627,131,627,627,627,131,131,131,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,627,627,627,131,627,627,627,627,131,627,627,627,627,627,627,627,131,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,627,627,627,131,627,627,627,627,131,627,627,627,627,627,627,627,131,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,627,131,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,627,627,627,131,131,131,627,627,131,627,627,627,627,131,131,131,131,131,131,627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,627,627,627,627,131,627,627,627,627,627, -627,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,627,627,627,627,627,627,131,627,627,627,627,627,131,131,131,131,131,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,131,131,131,627,627,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627, -627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,131,131,131,627,627,131,131,131,131,627,131,131,131,131,131,131,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,131,131,627,627,627,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627, +627,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627, +627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, +627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, +627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,627,627,627,627,627, +627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,131,131,627,627,627,627,627, +627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,627, +627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,627, +627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,627, +627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,131,627,627,627,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,627,627,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,627, +627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,627,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627, +627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,131,131,131,131,131,131,131,131,131,627,627,627,627,627,131,131,131,131,131,131,627,627,627,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627, +627,627,131,627,627,627,131,627,627,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,627, +627,131,131,627,627,131,131,131,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,131,131,131,131,627,627,627,131,627,627,627,627,627,627,627,627,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,131,131,131,131,627,627,627,131,627,627,627,627,627,627,627,627,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,627,627,627,627,627,627,131,627,627,627,627,627,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,131,131,131,627,627,627,131,131,131,131,131,627,627,131,131,131,131,131,627,131,131,131,131,131,627,627,131,627,627,627,131,131,131,131,131,131,131,131,131,131,131,627,627,131,131,131,131,627,627,131,131,131,131,131,131,131,131,131,131,627, +627,131,131,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,131,131,131,131,131,131,131,131,131,131,627, 627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627 diff --git a/src/main/resources/assets/textures/gun.png b/src/main/resources/assets/textures/gun.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a797077493f4f00d374275de690278cc923d77 GIT binary patch literal 29495 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/textures/shotgun.png b/src/main/resources/assets/textures/shotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec35ed65e67c208403df3294badf3eec22a4480 GIT binary patch literal 9456 zcmeI2c~lcg9>+U^2uPNAfOvuNsc5(b)QkuiVHrV@g>V^O5tHX%8f9xOo+*#k7R9;@EyQ;f>_4(GX zs(zI|?dIx))Lf(qK@f85j}Gn-q*?@j)z!e2esoDa1TBNMI&8*A(|&8ceSSsLA+?Se z3pdQ?p4wqQfw&yD>VgJ|d*swiy&sm5H&`rN)t^kZcdAX_aC7tJ z}02^+030m z)i`(NRiN)~tf}{6l`Cx(5{LcyneoRNk!hSHx`T-7b6r5c?ZvNYY(&1vWE zl*~?~~y^>_ii*yVkViF+pOpDb%q`aq* z?gds=_2oA%c&Z2bR?%xK!#<0>smYC3FZPh}IWD9U1`vyM1* zT@SP>)v(sR!5wk+rE!fR#PtHs)uEwb&Fof|{dW%Qipo<r}w9w2BV2vfY!A~5C86HYUSeSl6omB#p1?$<}XJp zpGtS#TpO=5G7!bESgl711%BVj0K;^4gZM4lE7Y3(d_#jXJ75j3q{lgcw>q$EjfrsB z>WIkmaanyzW&D%(3yDuTN2i8!&`)0Zn3he{wBGrLU$#)zch8t7=3_7k_1$gDLkjahCeCye`eoAwM2DY_tNCFjS98sNp*kIo%(%%-}Hqo+Xrz z{j);|q&k+`QAYY-6T*2tjqyY82m_9SaEeg;qL4K3(yWap^}KoH>E9+tMLa`Jj$|aC zHQqNw9+KP_wqK5yhP20v_lbm1h@?g?3l@#mXN*q9g^KBiLK4SRt`9j0!pU>? z(IUopl<~TJmXqP!7(T-!-^69H982hpZmi*N$gmBlN^Gkz<~g$6tE2Fd1-6`vbUV3f z$NgsR@|KDP%ozTd#>0t;>+G^N)9|i&eBP4W$q7HwW159Gq3|xRxH7!J>i#Gp5WX>~ zl{+In1x&Uef%VUv0bQea{Tp||l@9bR>afn}@-(1#?H4Q@HCgd0Z};KXerr0h7_2vJ zG@UX-(1}++JwEvGL)+mvoP}*w@L+x!@9o3`(b|)_wzf?R)&|!$&JFP@wh8@QrKdUq z^JaQE*0BF}^}VWjcYY$ayf|NgAYQ@}$A+4OfrL3@=AK0Ep0fSy&p!6 zd=pVOjwzd{RPn#)sO5j{*~uuZrpUUR7>209V@vzXIO4eXP4bUt)-y=*LdxV8aMCFb zcjm~_Nb)zS4AyPbfjg4k3i`NcGsN|ybWBf6P1f1UWFe>R{0djOlRbxKpaHKM$O%x7%`ZK%f?0T z1Dkn+$3MHrr;KcP)(ZnRS?N@>OEfbzJ6Q`Ms9bwGI&u7zk*SG>prS-gbi*fmz6(Ru zd?Nfw@zSma?M@6OtbK_TRWNd2$V%c&3dKMkAQ)0FU@7y6cHPhdh)U0anF!dLZ49qN zFJjNoJz19Wco34+RjcWOhS8ZF=j4;3dAE3tcFd4law*_Qqat+8^Et62SF;S@@N%OY zdc_r()TUq^9Ec!itt&cp6Q}29vGH)CpcV{6K)$12l6FfJTrYv?aaDA1Kj)y-@U?h# zZ5}Kqq&*#=oY?~_ETn;f6N2;=+L_<*zln?X@j|OYQ1n+a5tAu~74Q$1>x{hWk!Nq^xh39{jka+#yi4A(Ezu2Df;=0x z3(R_8*1V$Gc_P+-%8wv|9(fLMf-SZdIyi;tCU_V;*ey_jl~_D-ItO?dz!A2K3i|+3 z^Z>7}z;?$C)&uM^AdP{T`yU&^NPrYYi3qq0t?!=afyTo{-r!&hz!t;*!$@_vdH3J#6-wIWqc8W#PQJp9{j=-YPj)7(_Rg9Xv-&94xLD9iEYRV#n1LLRS{f#= zt;9P37QJM!5DILj^nYmmbfrW7Ws@FTE11FMtaNY%nJ@+OSziK2Hz{DHA6KAZpHOJD zOKOa}kiY>n}-$o2))5zq|A({I9MuDG7WF0xI22Dd5Eb rCj2hIw|JiN8A<|50!jk^GXiI4YD@}yqFXz3;3~E{x;hl#$jAN#6sbaC literal 0 HcmV?d00001 From ee76b15db6ea6aa93e7d030a351a3dcc78679477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=85=D0=BE=D0=B2?= Date: Wed, 15 Feb 2023 10:18:47 +0700 Subject: [PATCH 2/2] merge commit --- src/main/java/ru/nsu/fit/dib/projectdib/App.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/nsu/fit/dib/projectdib/App.java b/src/main/java/ru/nsu/fit/dib/projectdib/App.java index 53c2e010..ee1b84e2 100644 --- a/src/main/java/ru/nsu/fit/dib/projectdib/App.java +++ b/src/main/java/ru/nsu/fit/dib/projectdib/App.java @@ -247,19 +247,12 @@ protected void initGame() { LevelSetter.setLevelFromMap(levelName, getGameWorld()); WallMapper wallMapper = new WallMapper(256, 16, lvl.map); lvl.print(); - this.player = spawn("player", (lvl.start.getCentrePoint().x - 1) * 16, (lvl.start.getCentrePoint().y - 1) * 16); + HeroSpecs specs = new HeroSpecs("1", "shotgun", "ak",10, 250.0, "player.png"); + this.player = FXGL.spawn("player", new SpawnData((lvl.start.getCentrePoint().x - 1) * 16, (lvl.start.getCentrePoint().y - 1) * 16).put("specification", specs)); viewport.bindToEntity(player, getAppWidth() / 2, getAppHeight() / 2); player.addComponent(new ChunkLoaderComponent(new ChunkLoader(wallMapper))); viewport.setZoom(1.2); viewport.setLazy(true); - - - FXGL.setLevelFromMap("tmx/level2.tmx"); - Spawn.spawnInitialObjects(); - //spawn("enemy", 48, 240); - HeroSpecs specs = new HeroSpecs("1", "shotgun", "ak",10, 250.0, "player.png"); - this.player = FXGL.spawn("player", new SpawnData((lvl.start.getCentrePoint().x - 1) * 16, (lvl.start.getCentrePoint().y - 1) * 16).put("specification", specs) ); } - }