Add CrashingPunch and making it work
This commit is contained in:
parent
1c3056778e
commit
d7c19e2572
15 changed files with 204 additions and 27 deletions
43
Assets/Battle/BaseCard.cs
Normal file
43
Assets/Battle/BaseCard.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public enum CardId {
|
||||||
|
CrashingPunch
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CardType {
|
||||||
|
Action
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class BaseCard
|
||||||
|
{
|
||||||
|
private CardId id;
|
||||||
|
private string displayName;
|
||||||
|
private int cost;
|
||||||
|
private CardType type;
|
||||||
|
private string effectText;
|
||||||
|
|
||||||
|
public BaseCard(CardId id, string displayName, int cost, CardType type, string effectText) {
|
||||||
|
this.id = id;
|
||||||
|
this.displayName = displayName;
|
||||||
|
this.cost = cost;
|
||||||
|
this.type = type;
|
||||||
|
this.effectText = effectText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract IEnumerator Use(BattlePlayerControls playerControls);
|
||||||
|
|
||||||
|
public CardId GetId() {return id;}
|
||||||
|
public string GetDisplayName() {return displayName;}
|
||||||
|
public int GetCost() {return cost;}
|
||||||
|
public string GetDisplayType() {
|
||||||
|
switch (type) {
|
||||||
|
case CardType.Action:
|
||||||
|
return "";
|
||||||
|
default:
|
||||||
|
throw new System.ArgumentException("CardType unknown", "cardType");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string GetEffectText() {return effectText;}
|
||||||
|
}
|
||||||
11
Assets/Battle/BaseCard.cs.meta
Normal file
11
Assets/Battle/BaseCard.cs.meta
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e40048c9e74d54948bcbc7d7cad13e95
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -29,11 +29,14 @@ public class BattleController : MonoBehaviour
|
||||||
HeroId id = heroIds[i];
|
HeroId id = heroIds[i];
|
||||||
|
|
||||||
heroes[i] = new BattleHero(id);
|
heroes[i] = new BattleHero(id);
|
||||||
heroes[i].init();
|
heroes[i].Init();
|
||||||
|
|
||||||
heroSprites[i] = HeroDatabase.createHeroSprite(id);
|
heroSprites[i] = HeroDatabase.createHeroSprite(id);
|
||||||
heroSprites[i].name = "Hero" + i + "_Sprite";
|
heroSprites[i].name = "Hero" + i + "_Sprite";
|
||||||
heroSprites[i].transform.position = new Vector3(-6 + 6 * i, 0, 0);
|
heroSprites[i].transform.position = new Vector3(-6 + 6 * i, 0, 0);
|
||||||
|
BattleParticipantSprite bps = heroSprites[i].AddComponent<BattleParticipantSprite>();
|
||||||
|
BattleParticipant participant = heroes[i];
|
||||||
|
bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);};
|
||||||
|
|
||||||
heroUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI));
|
heroUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI));
|
||||||
heroUIs[i].Init(heroSprites[i], heroes[i]);
|
heroUIs[i].Init(heroSprites[i], heroes[i]);
|
||||||
|
|
@ -46,11 +49,14 @@ public class BattleController : MonoBehaviour
|
||||||
MonsterId id = monsterIds[i];
|
MonsterId id = monsterIds[i];
|
||||||
|
|
||||||
monsters[i] = MonsterDatabase.createMonsterScript(id);
|
monsters[i] = MonsterDatabase.createMonsterScript(id);
|
||||||
monsters[i].init();
|
monsters[i].Init();
|
||||||
|
|
||||||
monsterSprites[i] = MonsterDatabase.createMonsterSprite(id);
|
monsterSprites[i] = MonsterDatabase.createMonsterSprite(id);
|
||||||
monsterSprites[i].name = "Monster" + i + "_Sprite";
|
monsterSprites[i].name = "Monster" + i + "_Sprite";
|
||||||
monsterSprites[i].transform.position = new Vector3(-6 + 6 * i, 3, 0);
|
monsterSprites[i].transform.position = new Vector3(-6 + 6 * i, 3, 0);
|
||||||
|
BattleParticipantSprite bps = monsterSprites[i].AddComponent<BattleParticipantSprite>();
|
||||||
|
BattleParticipant participant = monsters[i];
|
||||||
|
bps.OnSpriteClicked += delegate() {battlePlayerControls.OnParticipantSpriteClicked(participant);};
|
||||||
|
|
||||||
monsterUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI));
|
monsterUIs[i] = (HeroInfoUI) Instantiate(heroUIPrefab.gameObject, uiCanvas.transform).GetComponent(typeof(HeroInfoUI));
|
||||||
monsterUIs[i].Init(monsterSprites[i], monsters[i]);
|
monsterUIs[i].Init(monsterSprites[i], monsters[i]);
|
||||||
|
|
@ -68,14 +74,14 @@ public class BattleController : MonoBehaviour
|
||||||
|
|
||||||
public void HitRandomParticipant() {
|
public void HitRandomParticipant() {
|
||||||
if (Random.Range(0f, 1f) < 0.5f) {
|
if (Random.Range(0f, 1f) < 0.5f) {
|
||||||
heroes[Random.Range(0, heroes.Length)].dealDamage(1);
|
heroes[Random.Range(0, heroes.Length)].DealDamage(1);
|
||||||
} else {
|
} else {
|
||||||
monsters[Random.Range(0, monsters.Length)].dealDamage(2);
|
monsters[Random.Range(0, monsters.Length)].DealDamage(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnCardUsed(int index) {
|
public void OnCardUsed(BaseCard card) {
|
||||||
Debug.Log("OnCardClicked " + index);
|
Debug.Log("OnCardClicked " + card);
|
||||||
HitRandomParticipant();
|
StartCoroutine(card.Use(battlePlayerControls));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,23 +8,23 @@ public class BattleParticipant
|
||||||
protected int hp;
|
protected int hp;
|
||||||
protected int maxHP;
|
protected int maxHP;
|
||||||
|
|
||||||
public void init() {
|
public void Init() {
|
||||||
this.hp = this.maxHP;
|
this.hp = this.maxHP;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string getDisplayName() {
|
public string GetDisplayName() {
|
||||||
return this.displayName;
|
return this.displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getHP() {
|
public int GetHP() {
|
||||||
return this.hp;
|
return this.hp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxHP() {
|
public int GetMaxHP() {
|
||||||
return this.maxHP;
|
return this.maxHP;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dealDamage(int damage) {
|
public void DealDamage(int damage) {
|
||||||
this.hp -= damage;
|
this.hp -= damage;
|
||||||
if (this.hp < 0) this.hp = 0;
|
if (this.hp < 0) this.hp = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
36
Assets/Battle/BattleParticipantSprite.cs
Normal file
36
Assets/Battle/BattleParticipantSprite.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class BattleParticipantSprite : MonoBehaviour
|
||||||
|
{
|
||||||
|
public delegate void SpriteClickedAction();
|
||||||
|
public event SpriteClickedAction OnSpriteClicked;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start() {
|
||||||
|
gameObject.AddComponent<BoxCollider2D>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMouseDown() {
|
||||||
|
Debug.Log("Clicked " + this.name);
|
||||||
|
OnSpriteClicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Color savedColor;
|
||||||
|
|
||||||
|
void OnMouseEnter() {
|
||||||
|
SpriteRenderer sprite = GetComponent<SpriteRenderer>();
|
||||||
|
this.savedColor = sprite.color;
|
||||||
|
sprite.color = Color.Lerp(this.savedColor, Color.white, .5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnMouseExit() {
|
||||||
|
SpriteRenderer sprite = GetComponent<SpriteRenderer>();
|
||||||
|
sprite.color = this.savedColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Battle/BattleParticipantSprite.cs.meta
Normal file
11
Assets/Battle/BattleParticipantSprite.cs.meta
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f53484a8e76654248a278d9cc4910f0e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -5,13 +5,15 @@ using UnityEngine.UI;
|
||||||
|
|
||||||
public class BattlePlayerControls : MonoBehaviour
|
public class BattlePlayerControls : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
public BattleController battleController;
|
||||||
public GameObject uiCanvas;
|
public GameObject uiCanvas;
|
||||||
public GameObject cardPrefab;
|
public GameObject cardPrefab;
|
||||||
|
|
||||||
public delegate void CardUsedAction(int i);
|
public delegate void CardUsedAction(BaseCard card);
|
||||||
public event CardUsedAction OnCardUsed;
|
public event CardUsedAction OnCardUsed;
|
||||||
|
|
||||||
private List<GameObject> cardsInHand;
|
private List<BaseCard> cardsInHand;
|
||||||
|
private List<GameObject> cardsInHandUIs;
|
||||||
|
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
void Start()
|
void Start()
|
||||||
|
|
@ -26,14 +28,19 @@ public class BattlePlayerControls : MonoBehaviour
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetHand(int numberOfCards) {
|
public void SetHand(int numberOfCards) {
|
||||||
this.cardsInHand = new List<GameObject>();
|
this.cardsInHand = new List<BaseCard>();
|
||||||
|
this.cardsInHandUIs = new List<GameObject>();
|
||||||
for (int i = 0; i < numberOfCards; i++) {
|
for (int i = 0; i < numberOfCards; i++) {
|
||||||
GameObject newCard = Instantiate(this.cardPrefab, this.uiCanvas.transform);
|
// TODO
|
||||||
|
BaseCard newCard = new CardCrashingPunch();
|
||||||
this.cardsInHand.Add(newCard);
|
this.cardsInHand.Add(newCard);
|
||||||
newCard.transform.position = CalculateCardPosition(i, numberOfCards);
|
|
||||||
Button button = newCard.GetComponent<Button>();
|
GameObject newCardUI = Instantiate(this.cardPrefab, this.uiCanvas.transform);
|
||||||
|
this.cardsInHandUIs.Add(newCardUI);
|
||||||
|
newCardUI.transform.position = CalculateCardPosition(i, numberOfCards);
|
||||||
|
newCardUI.GetComponent<CardUI>().Init(newCard);
|
||||||
int cardIndex = i;
|
int cardIndex = i;
|
||||||
button.onClick.AddListener(delegate {OnCardClicked(cardIndex);});
|
newCardUI.GetComponent<Button>().onClick.AddListener(delegate {OnCardClicked(newCard);});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -45,7 +52,27 @@ public class BattlePlayerControls : MonoBehaviour
|
||||||
return new Vector3(Screen.width * 0.5f - DELTA / 2 * (count - 1) + DELTA * index, 160, 0);
|
return new Vector3(Screen.width * 0.5f - DELTA / 2 * (count - 1) + DELTA * index, 160, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCardClicked(int index) {
|
private void OnCardClicked(BaseCard card) {
|
||||||
OnCardUsed(index);
|
OnCardUsed(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool waitingForTarget = false;
|
||||||
|
private BattleParticipant participantClicked = null;
|
||||||
|
|
||||||
|
public IEnumerator ChooseTarget(System.Action<BattleParticipant> targetCallback) {
|
||||||
|
this.waitingForTarget = true;
|
||||||
|
while (this.participantClicked == null) {
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
this.waitingForTarget = false;
|
||||||
|
targetCallback(participantClicked);
|
||||||
|
this.participantClicked = null;
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnParticipantSpriteClicked(BattleParticipant paticipant) {
|
||||||
|
if (this.waitingForTarget) {
|
||||||
|
this.participantClicked = paticipant;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,13 @@ public class CardUI : MonoBehaviour
|
||||||
public Image artImage;
|
public Image artImage;
|
||||||
public Text effectText;
|
public Text effectText;
|
||||||
|
|
||||||
|
public void Init(BaseCard card) {
|
||||||
|
this.nameText.text = card.GetDisplayName();
|
||||||
|
this.typeText.text = card.GetDisplayType();
|
||||||
|
this.costText.text = "" + card.GetCost();
|
||||||
|
this.effectText.text = card.GetEffectText();
|
||||||
|
}
|
||||||
|
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
8
Assets/Battle/Cards.meta
Normal file
8
Assets/Battle/Cards.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4e4390544ec8a5d49a21725388e0b297
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
17
Assets/Battle/Cards/CardCrashingPunch.cs
Normal file
17
Assets/Battle/Cards/CardCrashingPunch.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class CardCrashingPunch : BaseCard
|
||||||
|
{
|
||||||
|
public CardCrashingPunch() : base(CardId.CrashingPunch, "Crashing Punch", 3, CardType.Action, "Deals 3 damage to target.") {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IEnumerator Use(BattlePlayerControls playerControls) {
|
||||||
|
List<BattleParticipant> target = new List<BattleParticipant>();
|
||||||
|
yield return playerControls.StartCoroutine(playerControls.ChooseTarget((t) => {target.Add(t);}));
|
||||||
|
Debug.Log("Punching " + target[0]);
|
||||||
|
target[0].DealDamage(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Battle/Cards/CardCrashingPunch.cs.meta
Normal file
11
Assets/Battle/Cards/CardCrashingPunch.cs.meta
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ceb8168e4a1f0d24a91a86ec71f73a96
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -29,7 +29,7 @@ public class HeroInfoUI : MonoBehaviour
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
this.mainCamera = Camera.main;
|
this.mainCamera = Camera.main;
|
||||||
this.nameText.text = this.battleParticipant.getDisplayName();
|
this.nameText.text = this.battleParticipant.GetDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
|
|
@ -38,8 +38,8 @@ public class HeroInfoUI : MonoBehaviour
|
||||||
Vector3 targetPos = this.mainCamera.WorldToScreenPoint(target.transform.position);
|
Vector3 targetPos = this.mainCamera.WorldToScreenPoint(target.transform.position);
|
||||||
transform.position = targetPos;
|
transform.position = targetPos;
|
||||||
|
|
||||||
int hp = this.battleParticipant.getHP();
|
int hp = this.battleParticipant.GetHP();
|
||||||
int maxHP = this.battleParticipant.getMaxHP();
|
int maxHP = this.battleParticipant.GetMaxHP();
|
||||||
|
|
||||||
if (this.renderedHP != hp || this.renderedMaxHP != maxHP) {
|
if (this.renderedHP != hp || this.renderedMaxHP != maxHP) {
|
||||||
this.renderedHP = hp;
|
this.renderedHP = hp;
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ SpriteRenderer:
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_Sprite: {fileID: 21300000, guid: d3a33a2fc41587b4bb7e1d6a6218cb6b, type: 3}
|
m_Sprite: {fileID: 21300000, guid: d3a33a2fc41587b4bb7e1d6a6218cb6b, type: 3}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 0.6666667, g: 0.6666667, b: 0.6666667, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
m_FlipY: 0
|
m_FlipY: 0
|
||||||
m_DrawMode: 0
|
m_DrawMode: 0
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ SpriteRenderer:
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_Sprite: {fileID: 21300000, guid: 0db4860a348ace4418e775be386e2cbd, type: 3}
|
m_Sprite: {fileID: 21300000, guid: 0db4860a348ace4418e775be386e2cbd, type: 3}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 0.6666667, g: 0.6666667, b: 0.6666667, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
m_FlipY: 0
|
m_FlipY: 0
|
||||||
m_DrawMode: 0
|
m_DrawMode: 0
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ SpriteRenderer:
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_Sprite: {fileID: 21300000, guid: fff60ca0f889c6b4bb3fa3b13d8a846b, type: 3}
|
m_Sprite: {fileID: 21300000, guid: fff60ca0f889c6b4bb3fa3b13d8a846b, type: 3}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 0.6666667, g: 0.6666667, b: 0.6666667, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
m_FlipY: 0
|
m_FlipY: 0
|
||||||
m_DrawMode: 0
|
m_DrawMode: 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue