From b3c0074eb2d07d6fd31f1fa43552a00982a57b0b Mon Sep 17 00:00:00 2001 From: guderian2nd <gshin3@live.com> Date: Fri, 8 Mar 2019 10:14:48 +0900 Subject: [PATCH] major model overhaul, makes turns transparent --- ISEKAI/Assets/ISEKAI_Model/Core/EventCore.cs | 19 ++++++++---- ISEKAI/Assets/ISEKAI_Model/Core/Game.cs | 30 +++++++++++++++---- .../Assets/ISEKAI_Model/Events/Blasphemy_1.cs | 2 +- .../Assets/ISEKAI_Model/Events/Farming_3.cs | 4 +-- .../Assets/ISEKAI_Model/Events/Hunting_1.cs | 2 +- .../Assets/ISEKAI_Model/Events/Hunting_2.cs | 2 +- ISEKAI/Assets/ISEKAI_Model/Events/Mine_1.cs | 2 +- ISEKAI/Assets/ISEKAI_Model/Events/Prolog_2.cs | 2 +- .../Assets/ISEKAI_Model/Scripts/Hunting_2.txt | 1 - ISEKAI/Assets/ISEKAI_VIEW/EventManager.cs | 4 +-- ISEKAI/Assets/ISEKAI_VIEW/GameManager.cs | 30 +++++++------------ 11 files changed, 57 insertions(+), 41 deletions(-) diff --git a/ISEKAI/Assets/ISEKAI_Model/Core/EventCore.cs b/ISEKAI/Assets/ISEKAI_Model/Core/EventCore.cs index c160846..28e7455 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Core/EventCore.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Core/EventCore.cs @@ -29,14 +29,16 @@ namespace ISEKAI_Model } public abstract class EventCore // Every future event must inherit this. { - public bool isNew => (_seasonMadeIn == game.turn.season) && (turnsLeft == givenMaxTurn); + public bool isNew => (_seasonMadeIn == game.turn.season) && (monthsLeft == givenMaxMonth); public bool isForcedEvent => forcedEventPriority > 0; public bool isActivatedAlready; public abstract int forcedEventPriority {get;} // 0 if the event is not forced event. public abstract string eventName {get;} public EventStatus status {get; set;} public abstract int givenMaxTurn {get;} // -1 if the event is permanent. - public int turnsLeft {get; protected set;} // how many turns left for this event to be gone. + public int givenMaxMonth { get { return (6 * givenMaxTurn); } } + //public int turnsLeft {get; protected set;} // how many turns left for this event to be gone. + public int monthsLeft { get; protected set; } public abstract int cost {get;} // how many AP this event takes. public abstract Season availableSeason {get;} // when this event is available. public abstract EventLocation location { get; } @@ -53,7 +55,7 @@ namespace ISEKAI_Model public void ActivateEvent() { status = EventStatus.Visible; - turnsLeft = givenMaxTurn; + monthsLeft = givenMaxMonth; isActivatedAlready = true; } @@ -61,7 +63,7 @@ namespace ISEKAI_Model { status = EventStatus.Ready; this.game = game; - turnsLeft = 0; + monthsLeft = 0; } @@ -84,9 +86,15 @@ namespace ISEKAI_Model } - public void ReduceTurnsLeft() + /*public void ReduceTurnsLeft() { turnsLeft--; + }*/ + + + public void ReduceMonthsLeft(int monthspassed) + { + monthsLeft -= monthspassed; } public virtual void Complete() @@ -96,6 +104,7 @@ namespace ISEKAI_Model game.turn.totalMonthNumber += cost; game.Proceed(beforeSeason); + game._ReduceEveryEventsMonthsLeft(cost); game.OccurEvents(); /* if (beforeSeason != game.turn.season) diff --git a/ISEKAI/Assets/ISEKAI_Model/Core/Game.cs b/ISEKAI/Assets/ISEKAI_Model/Core/Game.cs index 86ee247..afbedfd 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Core/Game.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Core/Game.cs @@ -68,8 +68,8 @@ namespace ISEKAI_Model private void _InitEvents() // should add EVERY events when new event plan comes. { - allEventsList.Add(new Prolog_1(this)); - allEventsList.Add(new Prolog_2(this)); + //allEventsList.Add(new Prolog_1(this)); + //allEventsList.Add(new Prolog_2(this)); allEventsList.Add(new ReturnWarning(this)); @@ -224,7 +224,7 @@ namespace ISEKAI_Model { town.ApplyPostTurnChange(); turn.IncreaseTurnNumber(); - _ReduceEveryEventsTurnsLeft(); + //_ReduceEveryEventsTurnsLeft(); } public void ApplyChoiceEffect(ChoiceEffect choiceEffect) @@ -283,7 +283,7 @@ namespace ISEKAI_Model } } - private void _ReduceEveryEventsTurnsLeft() // Not recommended to call manually. Only called by Proceed(). + /*private void _ReduceEveryEventsTurnsLeft() // Not recommended to call manually. Only called by Proceed(). { foreach (EventCore e in allEventsList) { @@ -301,6 +301,26 @@ namespace ISEKAI_Model e.isRemovedLastTurn = true; } } + }*/ + + public void _ReduceEveryEventsMonthsLeft(int monthsPassed) // Not recommended to call manually. Only called by Proceed(). + { + foreach (EventCore e in allEventsList) + { + if (e.givenMaxMonth < 0) + continue; + if (e.status == EventStatus.Completed) + continue; + if (e.isActivatedAlready) + e.ReduceMonthsLeft(monthsPassed); + + if (e.monthsLeft <= 0 && e.isActivatedAlready) + { + e.status = EventStatus.Ready; + e.isActivatedAlready = false; + e.isRemovedLastTurn = true; + } + } } private void _SetAllEventActivable() @@ -328,7 +348,7 @@ namespace ISEKAI_Model } else if (e.isActivatedAlready) { - if (e.SeasonCheck() && e.turnsLeft > 0) + if (e.SeasonCheck() && e.monthsLeft > 0) e.status = EventStatus.Visible; else e.status = EventStatus.Ready; diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Blasphemy_1.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Blasphemy_1.cs index 3fbaf63..5b3c14b 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Blasphemy_1.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Blasphemy_1.cs @@ -18,7 +18,7 @@ namespace ISEKAI_Model protected override bool exclusiveCondition() { - bool turnCondition = game.turn.totalMonthNumber >= 13; + bool turnCondition = game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 3")).status == EventStatus.Completed; int chance = (new Random()).Next() / 10; bool chanceCondition = chance <= 2; if (_isFirstOccur && turnCondition) diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Farming_3.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Farming_3.cs index 4a185f9..f12f9c0 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Farming_3.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Farming_3.cs @@ -9,7 +9,7 @@ namespace ISEKAI_Model public override string eventName { get { return "ë†ì‚¬ ì´ë²¤íŠ¸ 3"; } } public override EventLocation location { get { return EventLocation.Field; } } public override int givenMaxTurn { get { return 1; } } - public override int cost { get { return 2; } } + public override int cost { get { return 3; } } public override Season availableSeason { get { return Season.Spring; } } public override List<Command> script { get { return Parser.ParseScript("Assets/ISEKAI_Model/Scripts/Farming_3.txt"); } } // command list. @@ -20,7 +20,7 @@ namespace ISEKAI_Model public Farming_3(Game game) : base(game) { - turnsLeft = 0; + monthsLeft = 0; } } } diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_1.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_1.cs index 4957b96..b3e4546 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_1.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_1.cs @@ -18,7 +18,7 @@ namespace ISEKAI_Model protected override bool exclusiveCondition() { - bool turnCondition = game.turn.totalMonthNumber >= 13 && game.turn.totalMonthNumber <= 36; + bool turnCondition = (game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 3")).status == EventStatus.Completed) && game.turn.totalMonthNumber <= 40; int chance = (new Random()).Next() / 10; bool chanceCondition = chance <= 1; if (_isFirstOccur && turnCondition) diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_2.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_2.cs index 3b7af3a..59d0b97 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_2.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Hunting_2.cs @@ -18,7 +18,7 @@ namespace ISEKAI_Model protected override bool exclusiveCondition() { - bool turnCondition = game.turn.totalMonthNumber >= 13 && game.turn.totalMonthNumber <= 44; + bool turnCondition = game.turn.totalMonthNumber <= 44; int chance = (new Random()).Next() / 10; bool chanceCondition = chance <= 1; bool prevCondition = game.allEventsList.Find(e => e.eventName == "사냥 ì´ë²¤íŠ¸ 1").status == EventStatus.Completed; diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Mine_1.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Mine_1.cs index 3e99586..a2f513e 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Mine_1.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Mine_1.cs @@ -18,7 +18,7 @@ namespace ISEKAI_Model protected override bool exclusiveCondition() { - bool turnCondition = game.turn.totalMonthNumber >= 13; + bool turnCondition = game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 3")).status == EventStatus.Completed; int chance = (new Random()).Next() / 10; bool chanceCondition = chance <= 2; if (_isFirstOccur && turnCondition) diff --git a/ISEKAI/Assets/ISEKAI_Model/Events/Prolog_2.cs b/ISEKAI/Assets/ISEKAI_Model/Events/Prolog_2.cs index 2de3730..c5abb4d 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Events/Prolog_2.cs +++ b/ISEKAI/Assets/ISEKAI_Model/Events/Prolog_2.cs @@ -20,7 +20,7 @@ namespace ISEKAI_Model public Prolog_2(Game game) : base(game) { - turnsLeft = 0; + monthsLeft = 0; } } } diff --git a/ISEKAI/Assets/ISEKAI_Model/Scripts/Hunting_2.txt b/ISEKAI/Assets/ISEKAI_Model/Scripts/Hunting_2.txt index a704d7a..1c8708e 100644 --- a/ISEKAI/Assets/ISEKAI_Model/Scripts/Hunting_2.txt +++ b/ISEKAI/Assets/ISEKAI_Model/Scripts/Hunting_2.txt @@ -7,7 +7,6 @@ Load Background "Background\Door" ## "나" "「계ì‹ë‹ˆê¹Œ.ã€" # "ìž ì‹œ ê¸°ë‹¤ë ¸ì§€ë§Œ 아무 ì†Œë¦¬ë„ ì—†ì—ˆë‹¤." # "ë”± ë– ë‚˜ë ¤ëŠ” ì°¸ì—, ë¬¸ì´ ì—´ë ¸ë‹¤." -VFX Sound "VFX\Sound\Dooropening" Load Character "Character\Carpenter\a\normal" -center ## "ë§ˆì„ ëª©ìˆ˜" "「누구ì‹ë‹ˆ.. ì•„ 장ë™ë¬´ 아니ì‹ë‹ˆê¹Œ.ã€" -center ## "나" "「아. 나무를 다룰줄 ì•ˆë‹¤ê³ ë“¤ì–´ì„œ 왔습니다만.. 다룰줄 압니까?ã€" diff --git a/ISEKAI/Assets/ISEKAI_VIEW/EventManager.cs b/ISEKAI/Assets/ISEKAI_VIEW/EventManager.cs index 77f9d6e..2ebb767 100644 --- a/ISEKAI/Assets/ISEKAI_VIEW/EventManager.cs +++ b/ISEKAI/Assets/ISEKAI_VIEW/EventManager.cs @@ -91,12 +91,10 @@ public class EventManager : MonoBehaviour { if (!scriptEnumerator.MoveNext()) { - Debug.Log(GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).status + " " + GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).IsFirstVisible()); eventCore.Complete(); - Debug.Log(GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).status + " " + GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).IsFirstVisible()); SceneManager.LoadScene("TownScene", LoadSceneMode.Single); + Debug.Log("HONTONI: " + GameManager.instance.game.turn.totalMonthNumber.ToString()); GameManager.instance.TryOccurForcedEvent(); - Debug.Log(GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).status + " " + GameManager.instance.game.allEventsList.Find(e => e.eventName.Equals("ë†ì‚¬ ì´ë²¤íŠ¸ 2")).IsFirstVisible()); GameManager.instance.TryInstantiateEventSDs(); GameManager.instance.TryUpdateEventSDs(); } diff --git a/ISEKAI/Assets/ISEKAI_VIEW/GameManager.cs b/ISEKAI/Assets/ISEKAI_VIEW/GameManager.cs index 9958773..8543317 100644 --- a/ISEKAI/Assets/ISEKAI_VIEW/GameManager.cs +++ b/ISEKAI/Assets/ISEKAI_VIEW/GameManager.cs @@ -14,7 +14,7 @@ public class GameManager : MonoBehaviour public static GameManager instance; public EventCore currentEvent; - public Sprite[] turnsLeftSprites; + public Sprite[] monthsLeftSprites; public Sprite[] seasonSprites; public Sprite[] numberSprites; @@ -79,19 +79,14 @@ public class GameManager : MonoBehaviour sd.position = GetEventSDVectorByLocation(e.location); sd.name = e.eventName; - if (e.givenMaxTurn < 0) + if (e.givenMaxMonth < 0) sd.GetChild(2).gameObject.SetActive(false); //else //sd.GetChild(2).GetComponent<SpriteRenderer>().sprite = turnsLeftSprites[e.givenMaxTurn - 1]; // sprite array index is 0-based, but starts with sprite of 1, so -1 is needed. else { - int monthOffset; - if (game.turn.monthNumber >= 0 && game.turn.monthNumber < 6) - monthOffset = 5 - game.turn.monthNumber; - else - monthOffset = 11 - game.turn.monthNumber; - - int totalMonthLeft = 6 * (e.turnsLeft - 1) + monthOffset; + + int totalMonthLeft = e.monthsLeft; int year = totalMonthLeft / 12; int month = totalMonthLeft % 12 + 1; @@ -130,19 +125,14 @@ public class GameManager : MonoBehaviour else sd.gameObject.SetActive(false); - if (e.givenMaxTurn < 0) + if (e.givenMaxMonth < 0) continue; - if (e.turnsLeft >= 1) + if (e.monthsLeft >= 1) { //sd.GetChild(2).GetComponent<SpriteRenderer>().sprite = turnsLeftSprites[e.turnsLeft - 1]; // sprite array index is 0-based, but starts with sprite of 1, so -1 is needed. - int monthOffset; - if (game.turn.monthNumber >= 0 && game.turn.monthNumber < 6) - monthOffset = 5 - game.turn.monthNumber; - else - monthOffset = 11 - game.turn.monthNumber; - - int totalMonthLeft = 6 * (e.turnsLeft - 1) + monthOffset; + + int totalMonthLeft = e.monthsLeft; int year = totalMonthLeft / 12; int month = totalMonthLeft % 12 + 1; @@ -162,9 +152,9 @@ public class GameManager : MonoBehaviour sd.GetChild(4).gameObject.SetActive(false); else sd.GetChild(4).GetComponent<SpriteRenderer>().sprite = seasonSprites[(int)e.availableSeason - 1]; - if (e.turnsLeft != e.givenMaxTurn) + if (e.monthsLeft != e.givenMaxMonth) sd.GetChild(3).gameObject.SetActive(false); - if (e.turnsLeft <= 0) + if (e.monthsLeft <= 0) { toDestroyList.Add(sd); continue; -- 2.22.0