Merge branch 'main' into Tools

This commit is contained in:
j.mei7
2022-02-21 19:03:55 +01:00
66 changed files with 8435 additions and 446 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 419a6c97c6863fe4bba52001e71d1df1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,72 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class Calendar : MonoBehaviour
{
TimeManager timeManager;
Image prevImage;
Transform daysTransform;
[SerializeField]
Color currentDayColor;
Color originDayColor;
[SerializeField]
TextMeshProUGUI monthText;
[SerializeField]
TextMeshProUGUI yearText;
private void Start()
{
daysTransform = transform.Find("Days");
timeManager = GameObject.Find("GameManager").GetComponent<TimeManager>();
originDayColor = daysTransform.Find("1").gameObject.GetComponent<Image>().color;
}
void Update()
{
if(gameObject.activeSelf)
RefreshCalendar();
}
void RefreshCalendar()
{
DateTime dateTime = timeManager.GetDateTime();
int counter;
int daysInMonth = DateTime.DaysInMonth(dateTime.Year, dateTime.Month);
monthText.text = dateTime.ToString("MMMM");
yearText.text = dateTime.ToString("yyyy");
counter = 1;
while (counter <= 31)
{
if (counter >= daysInMonth + 1)
{
daysTransform.Find(counter.ToString()).gameObject.SetActive(false);
}
else
{
daysTransform.Find(counter.ToString()).gameObject.SetActive(true);
}
counter++;
}
if (prevImage != daysTransform.Find(dateTime.Day.ToString()).gameObject.GetComponent<Image>())
{
if (prevImage != null)
prevImage.color = originDayColor;
daysTransform.Find(dateTime.Day.ToString()).gameObject.GetComponent<Image>().color = currentDayColor;
prevImage = daysTransform.Find(dateTime.Day.ToString()).gameObject.GetComponent<Image>();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 96c62da3e09569940847187705433290
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 741c7832dc601f543a927012a305d288
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 0
m_EditorClassIdentifier:
character: 48
sprite: {fileID: -137505861, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5cf69db9da6a3174fbf1c2db03e4d273
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 1
m_EditorClassIdentifier:
character: 49
sprite: {fileID: -962980277, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f0634e776b7110740b86e03f868a8f61
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 2
m_EditorClassIdentifier:
character: 50
sprite: {fileID: 487589554, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1ccbdb38e3f0ee544abe81a6ddb0950c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 3
m_EditorClassIdentifier:
character: 51
sprite: {fileID: 74470796, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ef26f62b59eb70d4194ec17eec59b1fb
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 4
m_EditorClassIdentifier:
character: 52
sprite: {fileID: -896167774, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 91df1f9de99188447a6d391f4fdd91a9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 5
m_EditorClassIdentifier:
character: 53
sprite: {fileID: 764630823, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a4230635bd95e104192dc0de15fe1d80
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 6
m_EditorClassIdentifier:
character: 54
sprite: {fileID: 202394885, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 654dd30445678804a98c11ce29a6cc9f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 7
m_EditorClassIdentifier:
character: 55
sprite: {fileID: 139823083, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 907350cffbf366f429b2ee2b1ac21fb9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 8
m_EditorClassIdentifier:
character: 56
sprite: {fileID: 1521955375, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6a45ecd7a629b5a408b83f8d65f6a450
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56080594b83657b43bd583e66fc21ec2, type: 3}
m_Name: 9
m_EditorClassIdentifier:
character: 57
sprite: {fileID: -282099095, guid: 5e57c8b70699ac44aab52f27c9fdb5f3, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 452f75a9bed11884fa0624c79e300113
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,10 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "CharSprite", menuName = "CharSprite", order = 1)]
public class CharSprite : ScriptableObject
{
public char character;
public Sprite sprite;
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 56080594b83657b43bd583e66fc21ec2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,10 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharToSprite
{
[SerializeField]
List<Sprite> sprites = new List<Sprite>();
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: feba03cebe25b2642880b207d200fbec
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 415ae7da5bed43345b965569c9070e15
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public void Die()
{
Debug.Log("----- PLAYER DIED!!! -----");
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5ee4c18f008d122488cbb74c779ef5c4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -5,7 +5,14 @@ using UnityEngine;
// Handles the player input, such as interactions
public class PlayerController : MonoBehaviour
{
[SerializeField]
GameObject calendar;
void Update()
{
if (Input.GetButtonDown("Calendar") && calendar != null)
{
calendar.SetActive(!calendar.activeSelf);
}
}
}

View File

@@ -0,0 +1,105 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
public class PlayerInteraction : MonoBehaviour
{
[SerializeField]
TextMeshProUGUI interactionText;
[SerializeField]
Image interactionProgressImg;
void Update()
{
bool successfulHit = false;
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit.collider != null)
{
Interactable interactable = hit.collider.gameObject.GetComponent<Interactable>();
if(interactable != null)
{
// Debug.Log("Target Position: " + hit.collider.gameObject.transform.position);
HandleInteraction(interactable);
successfulHit = true;
HandleInteractionText(interactable);
HandleInteractionProgress(interactable);
}
}
if (!successfulHit)
{
interactionText.text = "";
interactionProgressImg.fillAmount = 0;
}
}
void HandleInteractionProgress(Interactable interactable)
{
interactionProgressImg.fillAmount = interactable.GetHoldTime() / interactable.GetHoldDuration();
}
void HandleInteractionText(Interactable interactable)
{
interactionText.text = interactable.GetDescription();
interactionText.transform.position = new Vector3(Input.mousePosition.x + interactionText.rectTransform.sizeDelta.x / 2 + 20, Input.mousePosition.y - 5, Input.mousePosition.z);
}
/// <summary>
/// <c>HandleInteraction</c> <strong>handles the player interaction based on the Interactable.InteractionType.</strong>
/// </summary>
/// <param name="interactable"></param>
void HandleInteraction(Interactable interactable)
{
switch (interactable.interactionType)
{
case Interactable.InteractionType.Click:
if (Input.GetButtonDown("Interact") && interactable.isInRange())
{
interactable.Interact();
}
break;
case Interactable.InteractionType.Hold:
if (Input.GetButton("Interact") && interactable.isInRange())
{
interactable.IncreaseHoldTime();
if(interactable.GetHoldTime() > interactable.GetHoldDuration())
{
interactable.Interact();
interactable.ResetHoldTime();
}
}
else
{
interactable.ResetHoldTime();
}
break;
case Interactable.InteractionType.Harvest:
Harvestable harvestable = interactable.GetComponent<Harvestable>();
ToolItem toolItem = (ToolItem)GetComponent<InventoryController>().selectedItem;
bool isCorrectTool = (toolItem != null && toolItem.toolType == harvestable.toolType);
if (Input.GetButton("Interact") && interactable.isInRange() && isCorrectTool)
{
harvestable.IncreaseHarvestTime();
if (harvestable.GetHarvestTime() >= harvestable.GetHarvestDuration())
{
harvestable.Interact();
harvestable.ResetHarvestTime();
}
}
break;
default:
throw new System.Exception("Unsupported type of interactable");
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c17c7c66da95ea747b93edf1da56ba16
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,68 @@
using System;
using System.Globalization;
using System.Collections.Generic;
using UnityEngine;
public class TimeManager : MonoBehaviour
{
public static Action OnTimeInterval;
public static TimeManager instance;
public enum PartOfDay
{
MORNING,
AFTERNOON,
EVENING,
NIGHT
}
public PartOfDay partOfDay;
[SerializeField]
float intervalTime = 1.0f; // 1.0f -> 1 real second is 1 ingame minute
int minutesPerInterval = 1;
public CultureInfo cultureInfo = new CultureInfo("en-us");
DateTime dateTime = new DateTime(1, 1, 1, 0, 0, 0);
float timer;
public DateTime GetDateTime() => dateTime;
public string GetTime() => dateTime.ToString("hh:mm tt", cultureInfo);
public string GetDate() => dateTime.ToString("dd/mm/yyyy", cultureInfo);
public float GetintervalTime() => intervalTime;
void Start()
{
timer = intervalTime;
}
void Update()
{
timer -= Time.deltaTime;
if (timer <= 0)
{
dateTime = dateTime.AddMinutes(minutesPerInterval);
CheckPartsOfDay();
OnTimeInterval?.Invoke();
timer = intervalTime;
}
}
void CheckPartsOfDay()
{
if (dateTime.Hour >= 22)
partOfDay = PartOfDay.NIGHT;
else if(dateTime.Hour < 6)
partOfDay = PartOfDay.NIGHT;
else if (dateTime.Hour >= 6 && dateTime.Hour < 12)
partOfDay = PartOfDay.MORNING;
else if (dateTime.Hour >= 12 && dateTime.Hour < 17)
partOfDay = PartOfDay.AFTERNOON;
else if (dateTime.Hour >= 17 && dateTime.Hour < 22)
partOfDay = PartOfDay.EVENING;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4d46ba76ed78c6c41805320f865295d6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

24
Assets/Scripts/TimeUI.cs Normal file
View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class TimeUI : MonoBehaviour
{
[SerializeField]
TextMeshProUGUI dateTimeText;
TimeManager timeManager;
private void Start()
{
timeManager = GameObject.Find("GameManager").GetComponent<TimeManager>();
}
private void Update()
{
DateTime dateTime = timeManager.GetDateTime();
if (dateTimeText != null)
dateTimeText.text = dateTime.ToString("hh:mm tt / dd.MM.yyyy", timeManager.cultureInfo);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e980066e5baa94e4c993240ec95348fe
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,59 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Vitality : MonoBehaviour
{
Player player;
[Header("Vitality")]
[Range(0f, 1f)]
[SerializeField]
public float health = 1f;
[Range(0f, 1f)]
[SerializeField]
public float food = 1f;
[Range(0f, 1f)]
[SerializeField]
public float drink = 1f;
[Header("Vitality Modifier Per Interval")]
[Range(0f, 50f)]
[SerializeField]
float healthModifier = 30f;
[Range(0f, 5f)]
[SerializeField]
float foodModifier = 0.4f;
[Range(0f, 5f)]
[SerializeField]
float drinkModifier = 0.6f;
private void Start()
{
TimeManager.OnTimeInterval += VitalityInterval;
player = gameObject.GetComponent<Player>();
}
void VitalityInterval()
{
food -= foodModifier / 1000;
drink -= drinkModifier / 1000;
if(food <= 0f || drink <= 0f)
{
health -= healthModifier / 1000;
}
if(health <= 0f)
{
player.Die();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 259b4dba2ac00aa4983a6562c5f4eed5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class VitalityUI : MonoBehaviour
{
Vitality playerVitality;
[SerializeField]
Image healthBar;
[SerializeField]
Image foodBar;
[SerializeField]
Image drinkBar;
private void Start()
{
TimeManager.OnTimeInterval += UpdateBars;
playerVitality = GameObject.Find("Player").GetComponent<Vitality>();
}
void UpdateBars()
{
healthBar.fillAmount = playerVitality.health;
foodBar.fillAmount = playerVitality.food;
drinkBar.fillAmount = playerVitality.drink;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4ba453e35e0237c4b8b18316c15c160c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: