SPD Modding Guide - Hoto-Mocha/ARranged-Pixel-Dungeon GitHub Wiki

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계열 λ“±)

μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄ λ†“μœΌλ©΄ 이λ₯Ό κ΅¬ν˜„ν•˜λŠ” ν΄λž˜μŠ€μ—μ„œ μ–΄λ–€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  μ§€ 정해놓을 수 있기 λ•Œλ¬Έμ—, ν‘œμ€€ν™”κ°€ κ°€λŠ₯ν•˜κ³ , μ—¬λŸ¬ λͺ…이 ν˜‘μ—…ν•  λ•Œ μ‹œκ°„μ„ 단좕할 수 있게 ν•΄μ£ΌλŠ” 역할을 ν•œλ‹€.

μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“ λ‹€λŠ” 것은 κ΅¬ν˜„ν΄λž˜μŠ€μ—μ„œ λͺ¨λ‘ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•˜λ―€λ‘œ 보닀 μΌκ΄€λœ 개발이 이루어져 μ •ν˜•ν™”κ°€ κ°€λŠ₯ν•˜λ‹€λŠ” 것이닀.

⚠️ **GitHub.com Fallback** ⚠️