SPD Modding Guide - Hoto-Mocha/ARranged-Pixel-Dungeon GitHub Wiki
- μ§§κ²λ³΄λ λ Ήν½λ λͺ¨λ© μμ
- λ Ήν½λ λͺ¨λ©μ κΈ°μ΄ - 1
- λ Ήν½λ λͺ¨λ©μ κΈ°μ΄ - 2
- νΉμλ§΅ μΆκ°νκΈ°
- μΈλ²€ν 리 μΉΈ μ λ리기
- μλλ‘μ΄λ μ€νλμ€ λ¨μΆν€ λ° κΈ°λ₯
- νΉμ± μΆκ°μ λ°λ₯Έ μ€λ°κΏμ΄ νμν λ
- λνΈ μ°κΈ°
- UI μ λ°κΎΈκΈ°
- 3λ²μ§Έ μΈλΆ μ§μ μΆκ°νκΈ°
- μ§μ μΆκ°νκΈ°
- PC νλ©΄μμ λ²νμ μ«μ(μ§μ μκ° λ±)κ° λ¨κ² νλ λ©μλλ iconTextDisplay()μ
- λ²ν νλ μ 무νλ‘λ©μ΄ 걸리λ κ²½μ° act()μ spend(TICK)μ΄ λΉ μ Έ μμ§λ μμλμ§ μ²΄ν¬, λ°κ²© κΈ°λ₯μΌ κ²½μ° callBack()μμ next()μ¬μ©ν΄λ³Ό κ²
- λ²νκ° λ©μΈλ©λ΄ κ°λ€ μμ λ μ¦λ°νλ κ²½μ° μ΄κΈ°μ μ§μ ν΄μ£Όλ κ°μ μΈλΆ μ°Έμ‘°κ° μλμ§ μ²΄ν¬
- μλλ‘μ΄λ μ€νλμ€μμ νκΈμ΄ κΉ¨μ§ λ
- μΈμ΄λΈ λ‘λ μ λ²ν νΉμ μμ΄ν μ΄ μ¬λΌμ§λ κ²½μ° μ΄κΈ°κ°μ μΈλΆ μ°Έμ‘°κ° μλμ§ μ²΄ν¬
- μΈμ΄λΈ λ‘λ μ λ²νμ μ‘μ λ²νΌμ΄ μ¬λΌμ§λ κ²½μ° restoreFromBundle()μ ActionIndicator.setAction(this)λ₯Ό λ£μ κ²
- λ§μ½ μλλ‘μ΄λ μ€νλμ€μμ μ€μ λ‘λ μ‘΄μ¬νμ§ μλ λΌμΈμ΄ μΆκ°λμ΄ λ³΄κΈ° λΆνΈν κ²½μ° Settings(Ctrl+Alt+S) - Inlay Hints - Code visionμ λΉνμ±νν κ²
- callBack()μ μ¬μ©ν λ ν΄μ μλͺ¨νμ§ μμΌλ©΄ λ€μ λμκΉμ§ νλμ μ§μ°μν¬ μ μλ€(ex. 곡격 ν λ€μ νλμ λ°λ―Έμ§ λ±)
- 곡격 μ λ²κ° μ΄ννΈ λ° μ°μ λ°λ―Έμ§ ν¨κ³Όλ₯Ό μ£Όκ³ μΆλ€λ©΄ λ€μ μ½λλ₯Ό μ μ ν λ³νν΄ μ¬μ©ν κ²
- ν μ€νΈ λΈλ(PixelScene.renderTextBlock)μ μΆκ°νλλ° μ€λ°κΏμ΄ μ λλ€λ©΄ .maxWidth(WIDTH)λ‘ μ΅λ λλΉλ₯Ό μ§μ ν΄ λ³΄μ.
ArrayList<Lightning.Arc> arcs = new ArrayList<>(); ArrayList affected = new ArrayList<>(); affected.clear(); arcs.clear();
Shocking.arc(hero, enemy, 2, affected, arcs);
affected.remove(enemy); //defender isn't hurt by lightning for (Char ch : affected) { if (ch.alignment != hero.alignment) { ch.damage(Math.round(dmg*0.2f), this); } }
hero.sprite.parent.addToFront( new Lightning( arcs, null ) ); Sample.INSTANCE.play( Assets.Sounds.LIGHTNING );
- μμ μ€νλΌμ΄νΈ μ΄λ―Έμ§μ ν¬κΈ°λ₯Ό λλ¦¬κ³ μΆλ€λ©΄
HeroSprite.javaμ tiers() λ©μλ λ΄μμ SmartTexture texture = TextureCache.get( Assets.Sprites.ROGUE );μμ Assets.Sprites.ROGUEλ₯Ό ν¬κΈ°λ₯Ό λλ € λμ μ€νλΌμ΄νΈλ‘ λ°κΏ νμκ° μλ€
- μμ μ ν μ°½μ μμ λν μ΄λ―Έμ§λ₯Ό λ°κΎΈκ³ μΆλ€λ©΄
HeroSelectScene.javaμμ icon(new Image(cl.spritesheet(), 0, 90, 12, 15));λ₯Ό μμμ μ’νλ‘ λ°κΎΈλ©΄ λλ€
- κ°λ°© μ°½μ μ¬λ‘― μμ λ°κΎΈκ³ μΆλ€λ©΄ InventorySlot.javaλ‘ κ°λ©΄ λλ€
InventoryPane.javaμ BagButtonν΄λμ€λ μ 체 μ€μΌμΌμ UIμμ νΉμ κ°λ°© ν μμ μ¬μ©λλ€. WndRanking.java -> ItemButton, QuickSlotButton (λ λ€) -> createChildren() -> bg μλ λ³κ²½ν΄μΌ λνΉμ μμ΄ν μ¬λ‘― μκΉμ΄ λ°λ
- νΉμ νμΌμ΄ λ§΅ λ°μ΄ μλμ§λ₯Ό νλ³νλ 쑰건
if (c >= 0 && c < Dungeon.level.length())
- PathFinder.NEIGHBORS~ λ₯Ό μ¬μ©νμ§ μκ³ λ²μλ₯Ό μ§μ νλ λ°©λ² : PathFinder.buildDistanceMap νμ©
- μ κ· μΈ΅ μΆκ°λ₯Ό νλλ°, λ΄λ €κ°λ κ³λ¨μ΄ μλμ μ νλ©΄ Hero.handle()μμ
Dungeon.depth < 26
λ₯Ό λ°κΏλ³Ό κ² - λ²νμ°½ κ°±μ νλ μ½λλ
BuffIndicator.refreshHero();
λ€. - μ€νλΌμ΄νΈ ν¬κΈ° μ‘°μ νλ λ°©λ²
μ€νλΌμ΄νΈ.java νμΌμ κ°μ super(); λ°μ this.scale.set(0.5f, 0.5f);λ₯Ό μΆκ°ν΄ μ€λ€. μ΄ μμλ κ°λ‘, μΈλ‘λ₯Ό κ° 0.5λ°°ν ν¨κ³Όλ₯Ό λΈλ€.
- Generator.random()λ©μλλ₯Ό μ¬μ©ν΄ μμ΄ν μ μμ±νλ©΄ μ΄ν μμ±λλ μμ΄ν μ μν₯μ μ€ μ μλ€. μ¦ κ°μ μλλΌλ λ€λ₯Έ μμ΄ν μ΄ μμ±λ μ μλ κ²μ΄λ€. μΈ΅ μμ± μ λλ€ μμ±λλ μμ΄ν μ΄ μλλΌλ©΄ Generator.randomUsingDefaults()λ©μλλ₯Ό μ¬μ©νλλ‘ νμ. μ΄κ²μ λ±μμ μμ΄ν μ κΊΌλ΄μ€μ§ μμΌλ©°, λ°λΌμ μ΄ν μΈ΅ μμ± μ μμ±λλ μμ΄ν μλ μν₯μ μ£Όμ§ μλλ€.
- μ€μ μκ°μ κΈ°λ€λ¦¬κ² νκΈ° μν ν΄λμ€λ Tweenerμ΄λ©°, onComplete()λ μκ°μ΄ λ€ μ§λ νμ μλνκ³ , updateValues()λ μκ°μ΄ μ§λλ©΄μ μ§λ μκ°μ λ³μλ‘ κ°μ§κ³ μλνλ€. μ΄λ₯Ό ν΅ν΄ νλμ μ€μ μκ°μ κΈ°λ°μΌλ‘ μ§μ° μκ°μ μ€ μ μλ€.
- μ΅μ λ²μ μ λ Ήν½λμ λ²μ λͺ μ INDEVκ° ν¬ν¨λ κ°λ° λ²μ λ§ κΉνλΈ μ λ°μ΄νΈλ₯Ό 체ν¬νκΈ° λλ¬Έμ, UpdateImpl.supportsUpdates()κ° νμ trueλ₯Ό 리ν΄νλλ‘ λ°κΎΈλ©΄ λ²μ μ κ΄κ³μμ΄ κΉνλΈ μ λ°μ΄νΈλ₯Ό 체ν¬νκ² λ§λ€ μ μλ€. κΉνλΈ μ£Όμλ GithubUpdates.checkForUpdate()μμ λ°κΏ μ μλ€.
- μΈμ€ν΄μ€μ λνμ¬
'μΈμ€ν΄μ€λ₯Ό μμ±νλ€' λΌλ λ§μ μ€κ³λλ‘λΆν° 물건μ μ°μ΄λ΄λ μμ μΌλ‘ λΉμ ν μ μλ€. ν΄λμ€ νλλ₯Ό κ°μ§κ³ λ 립μ μΈ λ¬Όμ²΄λ₯Ό μμ°ν΄ λ΄μ΄ μ¬μ©νλ κ²μ΄λ€.
μλ₯Ό λ€μ΄ ShortSword.javaκ° μ€κ³λκ³ , ShortSword weapon = new ShortSword();λ₯Ό ν΅ν΄ weaponμ΄λΌλ μ΄λ¦μ κ°μ§ μμλλ₯Ό νλ μμ°ν΄ λ΄λ κ²μ΄λ€.
staticμ΄ μλ μΈμ€ν΄μ€ λ³μλ κ° μΈμ€ν΄μ€(물건)μ΄ κ³΅μ νμ§ μλλ€. λ 립μ μ΄λΌλ λ»μ΄λ€.
- staticμ λνμ¬
staticμ μΈμ€ν΄μ€ μμ± μμ΄ μ κ·Ό κ°λ₯ν λ©λͺ¨λ¦¬ μλ¨μ μμΉνκ² λ§λλ κ²μ μλ―Ένλ€. λ°λΌμ μΈμ€ν΄μ€ μμ± μμ΄ ν΄λμ€λͺ .staticλ©€λ²λ³μλͺ νΉμ ν΄λμ€λͺ .staticλ©μλλͺ μΌλ‘ μ κ·Όν΄μΌ νλ€.
μΈμ€ν΄μ€λͺ .staticλ©€λ²λͺ μΌλ‘ μ κ·Ό μ체λ κ°λ₯νλ μ΄λ κ² ν κ²½μ° μ΄κ²μ΄ staticλ©€λ²μΈμ§ μλμ§ νΌλμ΄ μ€κΈ° λλ¬Έμ μ¬μ©νμ§ μλ κ²μ΄ λ°λμ§νλ€.
μΈμ€ν΄μ€ λ©μλμ static μμκ° μ¬μ©λ κ²½μ° μλ¬κ° λ°μνμ§ μμ : μ΄μ λ static μμλ ν΄λμ€λ₯Ό μμ±ν λ κ°μ΄ μμ±λμ΄ μμ΄ μΈμ€ν΄μ€ μμ± μ΄μ μλ μ¬μ©μ΄ κ°λ₯νκΈ° λλ¬Έ.
λ°λλ‘ static λ©μλμ μΈμ€ν΄μ€ μμκ° μ¬μ©λ κ²½μ° μλ¬ λ°μ : μ΄μ λ μΈμ€ν΄μ€ μμ±μ΄ νμν μμκ° μΈμ€ν΄μ€ μμ±μ΄ λμ§ μμ μνμμ νΈμΆλ μ μκΈ° λλ¬Έ. μΈμ€ν΄μ€κ° μΈμ μμ±λ μ§ λͺ¨λ₯΄λ μν©μμ μΈμ€ν΄μ€κ° νμν μ½λλ₯Ό μμ±νλ κ²μ μλͺ»λ κ²μ΄κ³ , μ€μ λ‘ μ€λ₯κ° λ°μνλ€ : Cannot use this in a static context μλ¬
staticμ λ¨λ°ν κ²½μ° λ©λͺ¨λ¦¬ μλ¨μ "νμ" μμΉνλ κ²λ€μ΄ λ§μμ§μ μλ―Ένλ©°, μ΄λ λΆνμν¨μλ νμ μ€λΉμ€μμ λ»νλ€. μ¦ μ¬μ© κ°λ₯ν λ©λͺ¨λ¦¬ μμ΄ μ€μ΄λ λ€λ μλ―Έμ΄κ³ , μ΄λ μ΅μ ν λ¬Έμ λ‘ μ΄μ΄μ§λ€.
- νλμ λ€νμ±
νλμ λ€νμ±μ΄λ μ‘°μν΄λμ€λ₯Ό μμλ°μ κ°μ²΄λ₯Ό μ‘°μν΄λμ€μ νμ μΌλ‘ μμ±ν μ μκ² λλ κ²μ μλ―Ένλ€.
νλμ λ€νμ±μ μ μ©νμ¬ μμ±λ μΈμ€ν΄μ€λ€μ μ‘°μν΄λμ€λΌλ νλμ 'μ’ λ₯'μ μνκ² λμ΄ μ‘°μν΄λμ€λ₯Ό λ§€κ°λ³μλ‘ μΌλ λ©μλμ λ€μ΄κ°κ±°λ ν μ μλ€.
μ΄λ κ² μμ±λ μΈμ€ν΄μ€λ μμν΄λμ€μμ λ 립μ μΌλ‘ μ μΈλ λ©€λ²λ μ¬μ©μ΄ λΆκ°λ₯νλ©°, μ‘°μν΄λμ€μμ μ μΈλ λ©μλλ§ μ¬μ© κ°λ₯νλ°, μ΄ λ μμν΄λμ€μμ μ€λ²λΌμ΄λ©λ λ©μλμ κ²½μ°λ μμν΄λμ€μ κ²μ΄ μ¬μ©λλ€.
μ¦, νλμ λ€νμ±μ μ¬μ©νλ μ΄μ λ κ°μ λ©μλλ₯Ό μμν΄λμ€λ³λ‘ λ€λ₯΄κ² ꡬννμ¬ μ¬μ©νκ³ μΆμ λ μ¬μ©νκ² λλ κ²μ΄λ€.
μΆμλ©μλμ μΈν°νμ΄μ€μ κ²½μ°λ λ§μ°¬κ°μ§λ‘, μ΄λ€ λν 리ν΄νμ μ΄λ μΈμ€ν΄μ€ νμ μΌλ‘ μ μΈλ μ μμ§λ§, λ©€λ² λ©μλμ κ²½μ°λ μμμ κ²μ μ¬μ©νκ² λλ€.
κ°λ Ή, μΈν°νμ΄μ€ Aλ₯Ό Memberν΄λμ€κ° ꡬν(implement)νμ κ²½μ° A a = new Member();λ‘ μΈμ€ν΄μ€ μμ±μ΄ κ°λ₯νλ©°,
Aμ method();κ° μ μΈλμ΄ μκ³ , Memberμμ κ·Έκ²μ μ€λ²λΌμ΄λνλ€λ©΄(λ§μ½ μ€λ²λΌμ΄λνμ§ μμμ κ²½μ° Memberλ μΆμν΄λμ€κ° λμ΄μΌ νλ€) a.method()λ Memberν΄λμ€μμ ꡬνν λ©μλκ° μ μΈλλ€.
- μΆμν΄λμ€μ μΈν°νμ΄μ€
μΆμλ©μλλ, λ©μλμ μ μΈλΆλ§ μ‘΄μ¬νκ³ κ΅¬νλΆ({})κ° μ‘΄μ¬νμ§ μλ λ©μλλ₯Ό λ§νλ€.
μΆμν΄λμ€λ, μΆμλ©μλκ° νλλΌλ μλ ν΄λμ€λ₯Ό μλ―Ένλ€.
μΆμν΄λμ€λ μ λλ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€. μλνλ©΄, λ―Έμμ±μ λ©μλκ° μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€.
μΆμν΄λμ€λ μμν΄λμ€κ° μΆμν΄λμ€λ₯Ό μμλ°κ³ μ‘°μμ μΆμλ©μλλ₯Ό μ€λ²λΌμ΄λνμ¬ κ΅¬νλΆλ₯Ό ꡬνν¨μΌλ‘μ¨ μμ±λλ€
μ΄λ κ² μΆμν΄λμ€λ₯Ό μμ±ν μμν΄λμ€λ μΈμ€ν΄μ€ μμ±μ΄ κ°λ₯νλ©°, λ§μ½ 미ꡬνλ λ©μλκ° λ¨μ μλ€λ©΄ μμν΄λμ€ λν μΆμν΄λμ€κ° λλ€.
μΆμν΄λμ€λ μ¬λ¬ μμ ν΄λμ€λ€μ΄ 곡ν΅μ μΌλ‘ μ¬μ©νμ§λ§, ꡬνλΆλ λ€λ₯Έ λ©μλλ€μ΄ νμν λ μ‘°μν΄λμ€λ‘μ μ¬μ©λλ€.
μΆμν΄λμ€λ λ€λ₯Έ μ‘°μν΄λμ€λ€κ³Ό λ§μ°¬κ°μ§λ‘ λ©μλμ λ§€κ°λ³μλ‘ λ€μ΄κ°κ±°λ, λ©μλμ 리ν΄νμ μ΄ λκ±°λ, μΈμ€ν΄μ€μ νμ μ΄ λλ κ²(νλμ λ€νμ±)μ΄ κ°λ₯νλ€.
μΈν°νμ΄μ€λ μΆμν΄λμ€μ λΉμ·νμ§λ§, ν΄λμ€κ° μλλ€.
μΈν°νμ΄μ€μλ 미ꡬνλ λ©μλλ§μ΄ μ‘΄μ¬νλ©°, λ©€λ²λ³μλ μλμΌλ‘ static finalμ΄ λλ€.
μΈν°νμ΄μ€λ₯Ό ꡬνν λμλ μΆμν΄λμ€μ λ€λ₯΄κ² μμμ΄ μλ ꡬν(implements)λ₯Ό μ¬μ©νκ° λλ€.
μΈν°νμ΄μ€λ μΆμν΄λμ€μ λ¬λ¦¬ ν΄λμ€κ° μλκΈ° λλ¬Έμ, ν΄λμ€μ 곡ν΅μ‘°μμΈ Objectλ₯Ό μ‘°μμΌλ‘ μΌμ§ μλλ€.
μΈν°νμ΄μ€λ₯Ό implementν ν΄λμ€μμ, μΈν°νμ΄μ€μ 미ꡬνλ λ©μλλ₯Ό νλλΌλ ꡬννμ§ μμλ€λ©΄ κ·Έ ν΄λμ€λ μΆμν΄λμ€κ° λλ€.
μΈν°νμ΄μ€ λν μΆμν΄λμ€μ λ§μ°¬κ°μ§λ‘ λ©μλμ λ§€κ°λ³μλ‘ λ€μ΄κ°κ±°λ, λ©μλμ 리ν΄νμ μ΄ λκ±°λ, μΈμ€ν΄μ€μ νμ μ΄ λλ κ²(νλμ λ€νμ±)μ΄ κ°λ₯νλ€.
μΈν°νμ΄μ€λ μλ‘ λ€λ₯Έ ν΄λμ€μ κ°μ μ μΈ κ΄κ³λ₯Ό λ§λ€μ΄μ€ μ μλ€. (List, Set, Mapκ³μ΄ λ±)
μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄ λμΌλ©΄ μ΄λ₯Ό ꡬννλ ν΄λμ€μμ μ΄λ€ λ©μλλ₯Ό μ¬μ©ν μ§ μ ν΄λμ μ μκΈ° λλ¬Έμ, νμ€νκ° κ°λ₯νκ³ , μ¬λ¬ λͺ μ΄ νμ ν λ μκ°μ λ¨μΆν μ μκ² ν΄μ£Όλ μν μ νλ€.
μΈν°νμ΄μ€λ₯Ό λ§λ λ€λ κ²μ ꡬνν΄λμ€μμ λͺ¨λ λ©μλλ₯Ό ꡬνν΄μΌ νλ―λ‘ λ³΄λ€ μΌκ΄λ κ°λ°μ΄ μ΄λ£¨μ΄μ Έ μ ννκ° κ°λ₯νλ€λ κ²μ΄λ€.
- λͺ¨λ°μΌ λ‘κ·ΈμΊ£ μμ±λ°©λ²
- λ§μ½ μμ΄ν μ κ°νμμΉκ° 1 μ΄μμΈλ°λ 보μ΄μ§ μλλ€λ©΄ levelKnownμ trueλ‘ λ§λ€μ΄λ³Ό κ²