Commit 56513006 authored by 18김민수's avatar 18김민수

Farming event update

parent 4544a0c8
......@@ -32,8 +32,8 @@ namespace ISEKAI_Model
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;}
public abstract int turnsLeft {get; protected set;} // how many turns left for this event to be gone.
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 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; }
......@@ -56,6 +56,7 @@ namespace ISEKAI_Model
{
status = EventStatus.Ready;
this.game = game;
turnsLeft = 0;
}
......
......@@ -139,6 +139,10 @@ namespace ISEKAI_Model
{
foreach (EventCore e in allEventsList)
{
if (e.givenMaxTurn < 0)
continue;
if (e.status == EventStatus.Completed)
continue;
if(e.isActivatedAlready)
e.ReduceTurnsLeft();
......@@ -161,6 +165,8 @@ namespace ISEKAI_Model
{
foreach (EventCore e in allEventsList)
{
if (e.status == EventStatus.Completed)
continue;
if (e.isForcedEvent && e.IsFirstVisible())
{
e.status = EventStatus.ForcedVisible;
......@@ -187,6 +193,8 @@ namespace ISEKAI_Model
allEventsList.Add(new ExampleEvent1(this));
allEventsList.Add(new Prolog_1(this));
allEventsList.Add(new Prolog_2(this));
allEventsList.Add(new Farming_1(this));
allEventsList.Add(new Farming_2(this));
}
private void _SortForcedEventList(List<EventCore> lst)
......
......@@ -15,7 +15,7 @@ namespace ISEKAI_Model
{
public Turn() // initiallize turn instance.
{
season = Season.Winter;
season = Season.Summer;
state = State.PreTurn;
year = 1994;
}
......
......@@ -8,7 +8,6 @@ namespace ISEKAI_Model
{
public override string eventName {get {return "예시 이벤트";}}
public override int givenMaxTurn {get {return 4;}}
public override int turnsLeft {get; protected set;}
public override int cost {get {return 2;}}
public override Season availableSeason {get {return Season.Summer;}}
public override int forcedEventPriority {get {return 0;}}
......@@ -32,7 +31,6 @@ namespace ISEKAI_Model
}
public ExampleEvent1(Game game) : base(game)
{
turnsLeft = 0;
}
}
......
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace ISEKAI_Model
{
public class Farming_1 : EventCore
{
public override int forcedEventPriority { get { return 0; } }
public override string eventName { get { return "농사 이벤트 1"; } }
public override EventLocation location { get { return EventLocation.Field; } }
public override int givenMaxTurn { get { return -1; } }
public override int cost { get { return 2; } }
public override Season availableSeason { get { return Season.Summer; } }
public override List<Command> script { get { return Parser.ParseScript("Assets/ISEKAI_Model/Scripts/Farming_1.txt"); } } // command list.
protected override bool exclusiveCondition()
{
return true;
}
public Farming_1(Game game): base(game)
{
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 1e3ee868e5221fc4a8e5d5411bad6f83
guid: b4f90978e780bd44c956b53d70d48ff6
MonoImporter:
externalObjects: {}
serializedVersion: 2
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ISEKAI_Model
{
public class Farming_2 : EventCore
{
public override int forcedEventPriority { get { return 0; } }
public override string eventName { get { return "농사 이벤트 2"; } }
public override EventLocation location { get { return EventLocation.Field; } }
public override int givenMaxTurn { get { return -1; } }
public override int cost { get { return 2; } }
public override Season availableSeason { get { return Season.Autumn; } }
public override List<Command> script { get { return Parser.ParseScript("Assets/ISEKAI_Model/Scripts/Farming_2.txt"); } } // command list.
protected override bool exclusiveCondition()
{
return game.allEventsList.Find(e => e.eventName.Equals("농사 이벤트 1")).status == EventStatus.Completed;
}
public Farming_2(Game game) : base(game)
{
}
}
}
fileFormatVersion: 2
guid: 9ec25defc6f54564a93b568a6979ed7f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -9,7 +9,6 @@ namespace ISEKAI_Model
public override string eventName { get { return "프롤로그 이벤트-1"; } }
public override EventLocation location { get { return EventLocation.None; } }
public override int givenMaxTurn { get { return 10; } }
public override int turnsLeft { get; protected set; }
public override int cost { get { return 0; } }
public override Season availableSeason { get { return Season.None; } }
public override List<Command> script { get { return Parser.ParseScript("Assets/ISEKAI_Model/Scripts/Prolog_1.txt"); } } // command list.
......@@ -21,7 +20,6 @@ namespace ISEKAI_Model
public Prolog_1(Game game) : base(game)
{
turnsLeft = 0;
}
}
}
......@@ -9,7 +9,6 @@ namespace ISEKAI_Model
public override string eventName { get { return "프롤로그 이벤트-2"; } }
public override EventLocation location { get { return EventLocation.None; } }
public override int givenMaxTurn { get { return 10; } }
public override int turnsLeft { get; protected set; }
public override int cost { get { return 0; } }
public override Season availableSeason { get { return Season.None; } }
public override List<Command> script { get { return Parser.ParseScript("Assets/ISEKAI_Model/Scripts/Prolog_2.txt"); } } // command list.
......
Load Background "Backgrounds\fields.png"
# "선녀가 가르켜 준대로 마을 바깥으로 나오자, 다시 그 이상한 작물이 잔뜩 심겨진 드넓은 밭이 보였다."
# "내가 가야할 곳이 어딘지를 찾는건 어렵지 않았다. 저 멀리서 선녀와 일행이 팔을 흔드며 나에게 인사를 해오고 있었기 때문이다. 나도 인사를 하며 그쪽으로 걸어갔다."
Load Character "Sprites\Heroine\b\normal.png" -left
Load Character "Sprites\Rancher\b\normal.png" -right
## "선녀" "야, 쟝 동무, 무사히 길을 찾아왔기래." -left
# "선녀는 밝은 미소를 지으며 나에게 먼저 말을 걸어왔다. 옆에 있던 다른 사내는 반면 그렇게 좋은 기분인 듯은 아니어 보였다."
## "???" "흠, 이름이 쟝 동무라고 했소." -right
## "???" "나를 제대로 소개하겠소. 내 이름은 자광철, 이 부락의 통계원이오." -right
## "통계원" "분명하게 말하겠지만 난 이걸 작업반장 동지가 명했기에만 하는 것이오." -right
## "통계원" "이래봐도 마을에 음식이 부족한데, 장 동무 같은 외지인을 마을에 들이는건 난 이래봐도 찝찝하오." -right
## "통계원" "게다가 우리 농사법은 당에서 정한거라 함부로 바꿀수 있는게 아니오. 이해해줬으면 하겠소." -right
## "나" "당연합니다. 전 그저 저를 돌봐주신 대가를 지불하고 싶을 뿐입니다."
## "통계원" "흥, 그건 두고 봐야지." -right
## "통계원" "어찌되었든 작업반장 동지의 명에 따라 여기 작은 땅을 일시적으로 장 동무 대여토지로 해놓았소." -right
## "통계원" "1년동안 이곳에 쟝 동무가 잘 농사를 해서 만약 잘된다면 그 방법 대로 할지 우리 아바이가 결정할테니, 신중히 하오 동무!" -right
# "설명은 한동안 계속 됬고, 나는 내용을 숙지 했다."
Unload Character -right
Unload Character -left
Load Character "Sprites\Heroine\b\normal.png" -center
## "선녀" "하하....통계원 동지는 원래 조금 까칠하긴 할수다." -center
## "선녀" "하지만 그래도 마을을 위해 진심으로 걱정하는 동지니, 너무 험하게 생각하지 말시오다." -center
Unload Character -center
# "그날 밤 나는 내가 원래 있던 세계로부터 들도온 소지품들을 점검하였다."
## "나" "어디보자....어렵게 구한 양피지 라틴어 성경, 잉크통과 깃털펜, 수업 내용이 필기된 종이, 깨끗한 종이....엇!"
# "대지학 실습 수업을 위해 준비해 놨던 다양한 작물들의 씨들이 있는것을 보고 난 놀라움을 금탄치 못했다. 이 얼마나 전지한 신의 선견지명을 들어내는 우연인가!"
# "그 이후 며칠동안 나는 이 마을 인근 땅을 관찰하고 기후에 대해 선녀와 선녀의 아버지와 같은 분들과 얘기를 나누며 계획을 세웠다."
# "빨리 계획을 세워야 했다. 마을 사람들과 얘기를 나누어본 결과 이들은 윤년 규칙이 조금 다른 것을 뺴곤 거의 율리우스 달력과 비슷한 달력을 쓰고 있었는데, 벌써 6월에 이미 들어선 시점이었다."
# "밀과 같이 지력을 많이 소모하는 작물을 이런 척박한 땅에 기르는 것은 안 좋을 것이다....그렇다면 선택지는 보리, 귀리, 또는 호밀이다."
# "보리는 척박한 땅에서 제일 수확량이 제일 좋을테고, 맛도 제일 좋을 것이다. 대신 땅의 지력을 제일 빨리 소모할것 이기에, 장기적으로 보면 안 좋을 수도 있다."
# "귀리는 보리와는 다르게 지력을 오히려 잘 회복시켜줄수 있을것이다. 하지만 보리보다 맛이 떨어지고, 수확량이 너무 적어 내년 농사로 커버하지 않으면 힘들 수도 있다."
# "호밀은 귀리보다는 조금 더 수확량이 많고, 동시에 이 척박한 땅을 되살리는데 기여할 수 있다. 하지만 제일 맛이 없기에 마을 사람들이 싫어 할 수도 있다."
# "무엇을 기를까?"
Choice
-- "보리를 재배한다." -FoodP (-10) -Food (+20) -Morale (+20)
-- "귀리를 재배한다." -FoodP (+5) -Food (+5) -Morale (-10)
-- "호밀을 재배한다." -FoodP (+5) -Food (+10) -Morale (-20)
-#
--1 # "보리는 분명 지력을 깍아 먹긴 하지만, 마을에는 지금 당장 음식이 필요하다. "
--1 # "땅이 힘들어 하면 내년에는 휴경지로 해서 복구를 하면 될테이니, 보리를 기르자."
--2 # "귀리는 비록 수확량이 적기는 하지만, 이세계에 떨어진 이상 장기적으로 생각을 해야 한다. "
--2 # "땅의 지력을 최대한 빨리 회복시키는 것이 불안정한 내년의 기후에 기대는 것보단 더 안전할 테니, 귀리를 기르자."
--3 # "호밀은 비록 맛이 되게 없긴 하지만, 귀리의 수확량 만으로는 마을 사람들에게 나를 증명하지 못할 지도 모른다. "
--3 # "지력도 회복시키고 적당한 수확량을 기대할수 있는 호밀을 기르자."
# "그렇게 마음을 정한 나는 세 달 동안 뼈 빠지게 밭을 갈구며 농사를 했다."
\ No newline at end of file
fileFormatVersion: 2
guid: 96c6643540e4df848942838e329728bd
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Load Background "Background\fields.png"
Load Character "Character\farmer\a\normal.png" -center
## "마을 사람" "아이고~ 우린 이제 망했다~" -center
# "수확할 시기가 되자 내 우려는 현실이 됬다."
# "마을의 밭에는 시들어 가거나 제대로 자라지 못한 작물들로 가득했다."
# "대다수 마을 사람들은 나와서 이 참사를 보며 통곡하고 있었다."
# "물론 내가 담당한 밭의 일부는 풍성하게 자라 있었다."
# "분명 이번 년 마을 사람들은 음식을 아끼며 배고프게 지내야 하겠지만, 적어도 풍요로운 내 밭의 모습은 그들에게 조금이 나마 안심이 되겠지, 라던지의 생각을 나는 했다."
Unload Character -center
Load Character "Character\Heroine\b\sad.png" -left
Load Character "Character\Father\b\sad.png" -right
## "작업반장 동지" "흠......쟝 동무, 뭐라 할 말이 없구먼 그래." -right
## "작업반장 동지" "그저 의심해서 미안하고, 이해해 줬으면 부탁한다 할 수 밖에 없다네." -right
## "작업반장 동지" "우리가 자네 말을 들었더라면 당이랑 연락이 복귀될 때까지 조금을 버텨봤을수도 있겠지만......" -right
## "작업반장 동지" "지금 이대로라면 이번 겨울은 힘들테야. 그건 자네도 마찬가지겠지. 미안하네." -right
## "나" "아닙니다, 내년에 수확으로 올해를 이겨내면 되죠."
## "나" "올해의 겨울은, 곡창에 남아있는 음식으로 버틸 수 없나요? 아니면 다른 마을들에게 연락해서..."
## "선녀" "그, 그게, 내래 쟝 동무를 만난 날 폭풍우가 산사태를 일으켰는데, 그것 때문에 마을에서 나가는 길과 외부와 모든 연락이 끊겨서..." -left
## "선녀" "내가 알기론 곡창에 남아있는 음식을 다 잘 배분해서 쓰면 괜찮은 것으로 알고 있지만, 그래도 많이 힘들 고 내년 농사가 잘못되기라도 하면 정말 큰일 이라 알고 있슴메." -left
## "나" "이런....그렇다면, 곡창에 겨울 작물 씨앗은 없는 것인가?"
## "나" "내가 고향에서 가져온 양이 조금 있지만 이걸 뿌려서 마을 사람들을 살리기 위해선 택도 없이 부족하다."
# "내가 말하자 선녀는 나를 이상한 사람 보듯 쳐다본다."
# "선녀" "쟝 동무, 그게 무슨 말이요? 겨울 작물이라니, 겨울에 씨를 뿌려 농사를 한단 말이오?" -left
# "아아, 이 마을 사람들은 이모작의 개념을 모르는 듯 했다."
## "나" "오이오이, 모르는것인가."
## "나" "이건 이모작 이란 것이다. 1년에 같은 밭에 두 작물을 심고 기르는 것이지."
## "나" "가을에, 눈이 오기 전 한 달 전 쯤에 뿌려서 다음 해 봄에 수확하는 작물들이 있다. 보리, 귀리, 호밀 같은 것들이지."
## "작업반장 동지" "오....그렇고 보니 당이 농사를 뭐라 하기 시키기 전에 그런 것 을 했었던 거 같기도 하군." -right
## "작업반장 동지" "기억 상 우리가 배급 받았던 호밀은 겨울에 심어도 되는 종자라 예전에 들었던거 같기도 해." -right
## "작업반장 동지" "하지만 마을 밭에 전부 뿌릴 만한 양은 절대로 되지 않는다네. 가뜩이나 음식이 부족한데, 그냥 먹는게 더 좋지 않겠는가?"
## "나" "아닙니다. 밭 전부에 뿌릴 필요는 없고, 1/3에만 뿌리시면 됩니다."
## "나" "나머지 2/3는 휴경지로 하여 소모된 지력을 회복하게 해야 합니다."
## "작업반장 동지" "휴경지라니....그것은 또 무엇인가?" -right
# "아아, 이것도 모르는 것인가. 정말 농업 적으로 뒤떨어진 문화인듯 했다. 정말 위험한 상황이었다."
## "나" "아아, 휴경지란, 밭을 쉬게 하여 지력을 회복하게 하는 것입니다. "
## "나" "매년 마다 계속 작물을 심으면 땅의 올바른 4원소들의 비율이 바뀌어 비옥한 토양이 황폐하게 됩니다."
## "나" "이를 가만히 놔두어 쉬게하면 자연스러운 원소들의 비율이 회복되게 됩니다."
## "나" "둘러보니 마을에 소들이 많던데, 이들을 휴경지에 놔두어 풀을 뜯어 먹게 하면 특히 더욱더 좋습니다."
## "선녀" "아아....역시 쟝 동무, 대단하다오! 어떻게 그렇게 지식에 해박할 수가 있소!" -left
## "나" "아아, 이것은 삼포제 라는 것이다. 내가 있던 곳에선 다들 하던 것이지."
## "작업반장 동지" "아아....쟝 동무는 정말 이 마을의 구세주요. 더 이상 쟝 동무를 의심하는 실수를 범하진 않겠소." -right
## "작업반장 동지" "당장 마을 사람들을 불러 씨를 심게 하겠소이다." -left
Unload Character -left
Unload Character -right
# "그렇게 마을의 농경지를 3부분으로 나누어, 이들의 이상한 '주체농법'에서 제대로된 농사법으로 바꾸는 작업을 시작했다."
# "문제는 휴경지에서 나왔다."
# "보통 프랑스에선 휴경지를 아무것도 심지 않고 그냥 나두며 동물들을 나두었는데, 이 동네의 땅은 보통 프랑스의 마을들보다 훨씬 심각한 상태였다."
# "무언가 더 특별한 조취를 취하지 않으면 안될 것 같았다."
# "선택은 3가지중 하나다."
# "첫번째는 그냥 아무것도 안하는 것이다. 그냥 휴경지로 나두는 것은 프랑스에서 증명되고 안전한 방법이었다."
# "그렇지만 특히 이번 겨울 동안 반년만 쉬는 휴경지도 있고, 앞서 말한 이유로 도박을 할 수 있을지는 애매했다."
# "두번째는 휴경지에 토끼풀을 심는 것이다."
# "나는 예전 저명한 학자 알바르트 마그누스의 서적들에서 이 희한한 작물에 대해 읽은 적이 있었다."
# "이베리아 반도로 한때 여행을 갔었을 때 그곳 평민들에게서 토끼풀을 심으면 땅이 비옥해져 다음해 수확량이 많아진다는 소문을 들은적도 있었다."
# "하지만 여기 지역에 있는 토끼풀이 같은 종류인지는 확실치 않았기에, 이 역시 도박이었다."
# "마지막은 콩과 순무를 심는 것이었다."
# "콩과 순무는 많은 마을들에서 이모작 작물로 휴경지의 일부는 심기는 하는걸로 나는 알고 있었다."
# "문제는 순무는 겨울에 잘 자라지 않고, 콩은 단기간으로는 오히려 수확량을 줄인다는 것이다."
# "마을에는 물론 장기간을 생각해야 하지만 지금 당장 바로도 효과를 가져올 무언가가 필요했다."
Choice
-- "휴경지에 아무것도 심지 않는다" -FoodP (+50) -Food (+10) -Morale (+20)
-- "휴경지에 토끼풀을 심는다" -FoodP (+80) -Food (+10) -Morale (-20)
-- "휴경지에 콩과 순무를 심는다" -FoodP (+30) -Food (+50) -Morale (-10)
-#
--1 # "그래, 안전하게 가는 것이 좋다. 뭔가를 옮겨 심을 필요 없으니 마을 사람들도 덜 힘들 것이다."
--2 # "실험적이지만, 장기적으로나 단기적으로 지금 당장 지력을 회복시키지 않으면 위험했다."
--2 # "토끼풀을 심게 하자."
--3 # "단기적으로 지력을 깍아 먹겠지만, 적어도 콩과 순무가 수확되면 이를 어느 정도 상쇄해줄지도 모른다. 게다가 장기적으론 이 방법이 제일 확실했다."
\ No newline at end of file
fileFormatVersion: 2
guid: 8ad626955601d114d957e285115a8768
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -9,8 +9,6 @@ using UnityEngine.SceneManagement;
public class EventManager : MonoBehaviour
{
public GameObject UI;
public GameObject containerFullScript;
public GameObject containerChoice;
......@@ -57,9 +55,14 @@ 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);
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();
}
else
{
......
......@@ -5,12 +5,22 @@ using UnityEngine.UI;
using ISEKAI_Model;
using System.Linq;
using UnityEngine.SceneManagement;
using System;
public class GameManager : MonoBehaviour
{
public List<EventCore>.Enumerator forcedEventEnumerator;
public Transform eventPrefab;
public static GameManager instance;
public EventCore currentEvent;
public Sprite[] turnsLeftSprites;
public Sprite[] seasonSprites;
public Sprite[] numberSprites;
public Transform town;
public Transform outskirts;
public bool isTutorialPlayed = false;
void Awake()
{
......@@ -39,9 +49,7 @@ public class GameManager : MonoBehaviour
public EventCore GetEventCoreFromEventSd(Transform sd)
{
var a = game.allEventsList.Find(e => e.eventName.Equals(sd.name));
Debug.Log(a.eventName);
return a;
return game.allEventsList.Find(e => e.eventName.Equals(sd.name));
}
public void LoadEventScene(Transform t)
......@@ -58,4 +66,81 @@ public class GameManager : MonoBehaviour
return;
LoadEventScene(forcedEventEnumerator.Current);
}
public List<Transform> eventSDList = new List<Transform>();
public void TryInstantiateEventSDs() // find an events which is newly set to visible and make an SD of them.
{
Game game = GameManager.instance.game;
foreach (EventCore e in game.visibleEventsList)
{
if (e.forcedEventPriority > 0) continue; // if event is forced event, there is no need to make SD.
if (e.isNew) // if
{
var sd = Instantiate(eventPrefab, new Vector3(0, 0, 0), Quaternion.identity);
//TODO : set event sprite to the sprite of this event.
if (_SmallLocationToBigLocation(e.location) == Location.Town)
sd.SetParent(town);
else
sd.SetParent(outskirts);
sd.name = e.eventName;
if (e.givenMaxTurn < 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.
sd.GetChild(1).GetChild(0).GetComponent<SpriteRenderer>().sprite = numberSprites[e.cost];
if (e.availableSeason == Season.None)
sd.GetChild(4).gameObject.SetActive(false);
else
sd.GetChild(4).GetComponent<SpriteRenderer>().sprite = seasonSprites[(int)e.availableSeason - 1];
eventSDList.Add(sd);
}
}
}
public void TryUpdateEventSDs()
{
List<Transform> toDestroyList = new List<Transform>();
foreach (Transform sd in eventSDList)
{
if (sd == null)
return;
EventCore e = GetEventCoreFromEventSd(sd);
if (e.seasonCheck())
sd.gameObject.SetActive(true);
else
sd.gameObject.SetActive(false);
if (e.givenMaxTurn < 0)
return;
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.
sd.GetChild(1).GetChild(0).GetComponent<SpriteRenderer>().sprite = numberSprites[e.cost];
if (e.availableSeason == Season.None)
sd.GetChild(4).gameObject.SetActive(false);
else
sd.GetChild(4).GetComponent<SpriteRenderer>().sprite = seasonSprites[(int)e.availableSeason - 1];
if (e.turnsLeft != e.givenMaxTurn)
sd.GetChild(3).gameObject.SetActive(false);
if (e.turnsLeft <= 0)
{
toDestroyList.Add(sd);
continue;
}
}
foreach (Transform sd in toDestroyList)
{
Destroy(sd.gameObject);
eventSDList.Remove(sd);
}
}
private Location _SmallLocationToBigLocation(EventLocation l)
{
if (l == 0)
throw new InvalidOperationException("Forced Event can't be located anywhere.");
if ((int)l <= 5 && l > 0)
return Location.Outskirts;
else
return Location.Town;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TutorialButton : MonoBehaviour
{
public TutorialManager tutorialManager;
void OnMouseDown()
{
tutorialManager.ProceedTutorial();
}
}
......@@ -9,6 +9,7 @@ public class TutorialManager : MonoBehaviour
public GameObject clickDetector;
public GameObject entireTutorial;
public GameObject[] tutorials;
public GameObject eventSDs;
public bool isInTutorial = true;
public int currentTutorialIdx = 0;
public List<string> allTexts = new List<string>();
......@@ -26,15 +27,16 @@ public class TutorialManager : MonoBehaviour
public void ProceedTutorial()
{
eventSDs.SetActive(false);
if (currentTutorialIdx == allTexts.Count)
{
eventSDs.SetActive(true);
GameManager.instance.isTutorialPlayed = true;
entireTutorial.SetActive(false);
return;
}
SetActiveTutorial(GetTutNum(currentTutorialIdx));
tutorials[GetTutNum(currentTutorialIdx)].transform.GetChild(0).GetChild(0).GetChild(0).GetComponent<Text>().text = allTexts[currentTutorialIdx];
Debug.Log(allTexts[currentTutorialIdx] + " " + currentTutorialIdx + " " + GetTutNum(currentTutorialIdx));
currentTutorialIdx++;
}
......
......@@ -6,19 +6,19 @@ using UnityEngine.UI;
using ISEKAI_Model;
using UnityEngine.SceneManagement;
public class UITownManager : MonoBehaviour
public enum Location
{
private enum Location
{
Outskirts, Town
}
}
public class UITownManager : MonoBehaviour
{
public TutorialManager tutorialManager;
public Transform test;
public Transform eventPrefab;
public GameObject moveBtnLocation;
public GameObject background;
......@@ -31,16 +31,14 @@ public class UITownManager : MonoBehaviour
public Sprite townSprite;
public Sprite outskirtsSprite;
public GameObject nextTurn;
private Button _moveBtnLocation;
private Text _moveTxtlocation;
private SpriteRenderer _background;
private Location _location;
private GameObject _eventList;
public Sprite[] turnsLeftSprites;
public Sprite[] seasonSprites;
public Sprite[] numberSprites;
public Transform town, outskirts;
......@@ -87,13 +85,14 @@ public class UITownManager : MonoBehaviour
default:
throw new InvalidOperationException("Location should be town or outskirts");
}
UpdatePanel();
}
public void OnClickNextTurnButton()
{
Game _game = GameManager.instance.game;
_game.Proceed();
//TryOccurForcedEvent();
GameManager.instance.TryOccurForcedEvent();
UpdatePanel();
}
......@@ -104,17 +103,22 @@ public class UITownManager : MonoBehaviour
textPleasant.text = _game.town.totalPleasantAmount + "/" + 200;
textTurn.text = _game.turn.ToString();
textAP.text ="AP: " + _game.remainAP + "/" + 4;
TryInstantiateEventSDs();
TryUpdateEventSDs();
if (_game.turn.IsFormerSeason())
nextTurn.SetActive(false);
else
nextTurn.SetActive(true);
GameManager.instance.TryInstantiateEventSDs();
GameManager.instance.TryUpdateEventSDs();
}
public List<Transform> eventSDList = new List<Transform>();
/*
public void TryInstantiateEventSDs() // find an events which is newly set to visible and make an SD of them.
{
Game game = GameManager.instance.game;
foreach (EventCore e in game.visibleEventsList)
{
Debug.Log(e.eventName + " " + e.status + " " + e.givenMaxTurn);
if (e.forcedEventPriority > 0) continue; // if event is forced event, there is no need to make SD.
if (e.isNew) // if
{
......@@ -125,6 +129,9 @@ public class UITownManager : MonoBehaviour
else
sd.SetParent(outskirts);
sd.name = e.eventName;
if (e.givenMaxTurn < 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.
sd.GetChild(1).GetChild(0).GetComponent<SpriteRenderer>().sprite = numberSprites[e.cost];
if (e.availableSeason == Season.None)
......@@ -141,17 +148,16 @@ public class UITownManager : MonoBehaviour
List<Transform> toDestroyList = new List<Transform>();
foreach(Transform sd in eventSDList)
{
EventCore e = GameManager.instance.GetEventCoreFromEventSd(sd);
if (e.turnsLeft <= 0)
{
toDestroyList.Add(sd);
continue;
}
EventCore e = GameManager.instance.GetEventCoreFromEventSd(sd);
if (e.seasonCheck())
sd.gameObject.SetActive(true);
else
sd.gameObject.SetActive(false);
if (e.givenMaxTurn < 0)
return;
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.
sd.GetChild(1).GetChild(0).GetComponent<SpriteRenderer>().sprite = numberSprites[e.cost];
if (e.availableSeason == Season.None)
......@@ -160,30 +166,16 @@ public class UITownManager : MonoBehaviour
sd.GetChild(4).GetComponent<SpriteRenderer>().sprite = seasonSprites[(int)e.availableSeason - 1];
if (e.turnsLeft != e.givenMaxTurn)
sd.GetChild(3).gameObject.SetActive(false);
if (e.turnsLeft <= 0)
{
toDestroyList.Add(sd);
continue;
}
}
foreach(Transform sd in toDestroyList)
{
Destroy(sd.gameObject);
eventSDList.Remove(sd);
}
}
private Location _SmallLocationToBigLocation(EventLocation l)
{
if (l == 0)
throw new InvalidOperationException("Forced Event can't be located anywhere.");
if ((int)l <= 5 && l > 0)
return Location.Outskirts;
else
return Location.Town;
}
/*
public void LoadEventScene(EventCore eventCore)
{
SceneManager.LoadScene("EventScene", LoadSceneMode.Single);
GameManager.instance.currentEvent = eventCore;
}*/
}
......@@ -1085,8 +1085,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
tutorialManager: {fileID: 1044825101}
test: {fileID: 1250787778}
eventPrefab: {fileID: 3920842106340043547, guid: be615c87dea007e4192b5cd9befe2098,
type: 3}
moveBtnLocation: {fileID: 1346498941}
background: {fileID: 1226834386}
textPleasant: {fileID: 664483366}
......@@ -1096,21 +1094,7 @@ MonoBehaviour:
textLocation: {fileID: 375941633}
townSprite: {fileID: 21300000, guid: 83b697996c055a84a8c5e82746eff5ff, type: 3}
outskirtsSprite: {fileID: 21300000, guid: 8e1c07192964cba47bcb36e41a23ff53, type: 3}
turnsLeftSprites:
- {fileID: 21300000, guid: aaf9351c0f512de488c121fcc7d3763b, type: 3}
- {fileID: 21300000, guid: d34b9589c543d6c448562360b6b948d0, type: 3}
- {fileID: 21300000, guid: ff9011d21b8d80e40885121e93fe0ed2, type: 3}
- {fileID: 21300000, guid: 751abaa361ba69c4582d4e02eeaf73b8, type: 3}
seasonSprites:
- {fileID: 21300000, guid: d73b5e078ae9eca499416f87dc02f18d, type: 3}
- {fileID: 21300000, guid: ae14224f1c3b2d14e981972d812a728d, type: 3}
- {fileID: 21300000, guid: 58a37176638876e4d96ed2034316f9b8, type: 3}
- {fileID: 21300000, guid: e92f27a6f1c9fe64cbd21afd3c532d09, type: 3}
numberSprites:
- {fileID: 21300000, guid: 9f5ce47489853df47b94657bda1b7cee, type: 3}
- {fileID: 21300000, guid: ed4b39fc94c334d4988c82964a699f47, type: 3}
- {fileID: 21300000, guid: 475a467753b84594eb0cc414056f9227, type: 3}
- {fileID: 21300000, guid: 8802e46c0e17e2449b7f9f9433bd451a, type: 3}
nextTurn: {fileID: 1567870480}
town: {fileID: 277250603}
outskirts: {fileID: 1303797059}
eventSDList: []
......@@ -2764,6 +2748,7 @@ MonoBehaviour:
- {fileID: 801529208}
- {fileID: 1250787777}
- {fileID: 199451095}
eventSDs: {fileID: 1773535927}
isInTutorial: 1
currentTutorialIdx: 0
allTexts: []
......@@ -5277,7 +5262,28 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0f5ef3df2d2457747b2435b5921a34e2, type: 3}
m_Name:
m_EditorClassIdentifier:
eventPrefab: {fileID: 3920842106340043547, guid: be615c87dea007e4192b5cd9befe2098,
type: 3}
turnsLeftSprites:
- {fileID: 21300000, guid: aaf9351c0f512de488c121fcc7d3763b, type: 3}
- {fileID: 21300000, guid: d34b9589c543d6c448562360b6b948d0, type: 3}
- {fileID: 21300000, guid: ff9011d21b8d80e40885121e93fe0ed2, type: 3}
- {fileID: 21300000, guid: 751abaa361ba69c4582d4e02eeaf73b8, type: 3}
seasonSprites:
- {fileID: 21300000, guid: d73b5e078ae9eca499416f87dc02f18d, type: 3}
- {fileID: 21300000, guid: ae14224f1c3b2d14e981972d812a728d, type: 3}
- {fileID: 21300000, guid: 58a37176638876e4d96ed2034316f9b8, type: 3}
- {fileID: 21300000, guid: e92f27a6f1c9fe64cbd21afd3c532d09, type: 3}
numberSprites:
- {fileID: 21300000, guid: 9f5ce47489853df47b94657bda1b7cee, type: 3}
- {fileID: 21300000, guid: ed4b39fc94c334d4988c82964a699f47, type: 3}
- {fileID: 21300000, guid: 475a467753b84594eb0cc414056f9227, type: 3}
- {fileID: 21300000, guid: 8802e46c0e17e2449b7f9f9433bd451a, type: 3}
- {fileID: 21300000, guid: a740aaedae81c80419fa5ea8826c4d03, type: 3}
town: {fileID: 277250603}
outskirts: {fileID: 1303797059}
isTutorialPlayed: 0
eventSDList: []
--- !u!4 &1934312140
Transform:
m_ObjectHideFlags: 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment