feature: multiple players connecting and working in sync movement
This commit is contained in:
parent
13b33c3d9d
commit
ab2255db29
|
|
@ -1,7 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tileset version="1.9" tiledversion="1.9.2" name="waterfall" tilewidth="32" tileheight="32" tilecount="209" columns="19">
|
||||
<tileset version="1.10" tiledversion="1.10.2" name="waterfall" tilewidth="32" tileheight="32" tilecount="209" columns="19">
|
||||
<image source="../../Tilesets/waterfall.png" width="608" height="352"/>
|
||||
<tile id="1">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="20.6699" y="0.255183" width="11.2281" height="31.7278"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="1" duration="100"/>
|
||||
<frame tileid="2" duration="100"/>
|
||||
|
|
@ -14,6 +17,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="10">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="0.0850611" y="0" width="32.068" height="31.8129"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="10" duration="100"/>
|
||||
<frame tileid="11" duration="100"/>
|
||||
|
|
@ -26,6 +32,10 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="20">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="14.6305" y="0.0850611" width="17.2674" height="31.8129"/>
|
||||
<object id="2" x="0" y="18.9686" width="31.8129" height="12.7592"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="20" duration="100"/>
|
||||
<frame tileid="21" duration="100"/>
|
||||
|
|
@ -38,6 +48,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="29">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="-0.0850611" y="0.0850611" width="32.068" height="31.6427"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="29" duration="100"/>
|
||||
<frame tileid="30" duration="100"/>
|
||||
|
|
@ -50,6 +63,10 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="39">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="25.093" y="0.0850611" width="6.80489" height="31.8129"/>
|
||||
<object id="2" x="-0.170122" y="-0.0850611" width="31.8979" height="29.0909"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="39" duration="100"/>
|
||||
<frame tileid="40" duration="100"/>
|
||||
|
|
@ -62,6 +79,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="48">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="0" y="-0.0850611" width="31.8979" height="32.068"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="48" duration="100"/>
|
||||
<frame tileid="49" duration="100"/>
|
||||
|
|
@ -74,6 +94,11 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="58">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="32.3232" y="0">
|
||||
<polygon points="0,0 -14.7156,0.170122 -14.4604,9.61191 -24.9229,9.86709 -24.8379,16.2467 -32.2382,16.3317 -32.4083,31.6427 0,31.8979"/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="58" duration="100"/>
|
||||
<frame tileid="59" duration="100"/>
|
||||
|
|
@ -86,6 +111,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="67">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="0.170122" y="-0.255183" width="31.8979" height="32.2382"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="67" duration="100"/>
|
||||
<frame tileid="68" duration="100"/>
|
||||
|
|
@ -98,6 +126,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="77">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="15.8214" y="18.2031" width="16.0766" height="13.7799"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="77" duration="100"/>
|
||||
<frame tileid="78" duration="100"/>
|
||||
|
|
@ -110,6 +141,9 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="96">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="-0.170122" y="-0.170122" width="15.8214" height="32.1531"/>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="96" duration="100"/>
|
||||
<frame tileid="97" duration="100"/>
|
||||
|
|
@ -122,6 +156,11 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="115">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="0.0850611" y="0.255183">
|
||||
<polygon points="0,0 9.44179,-0.0850611 10.1223,11.7384 31.8129,15.7363 31.7278,31.4726 -0.340245,31.8129"/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="115" duration="100"/>
|
||||
<frame tileid="116" duration="100"/>
|
||||
|
|
@ -134,6 +173,11 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="134">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="0.0850611" y="0.425306">
|
||||
<polygon points="0,0 31.8129,-0.255183 31.8129,29.3461 5.44391,26.369 6.29452,31.3025 -0.595428,31.4726"/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="134" duration="100"/>
|
||||
<frame tileid="135" duration="100"/>
|
||||
|
|
@ -146,6 +190,11 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="153">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="10.5476" y="0.255183">
|
||||
<polygon points="0,0 21.3503,12.589 21.5205,31.3876 -10.5476,31.5577 -10.6326,-0.255183"/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="153" duration="100"/>
|
||||
<frame tileid="154" duration="100"/>
|
||||
|
|
@ -158,6 +207,11 @@
|
|||
</animation>
|
||||
</tile>
|
||||
<tile id="172">
|
||||
<objectgroup draworder="index" id="2">
|
||||
<object id="1" x="-0.170122" y="14.2903">
|
||||
<polygon points="0,0 6.88995,0.170122 8.33599,4.25306 13.6948,4.33812 15.9915,8.50611 16.3317,14.5455 12.504,17.6077 -0.170122,17.6927"/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<animation>
|
||||
<frame tileid="172" duration="100"/>
|
||||
<frame tileid="173" duration="100"/>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -11,5 +11,5 @@ ScriptedImporter:
|
|||
importerVersion: 16
|
||||
pixelsPerUnit: 32
|
||||
edgesPerEllipse: 32
|
||||
numberOfObjectsImported: 2540
|
||||
numberOfObjectsImported: 2541
|
||||
colliderType: 0
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 30fc42f2cb50b824a873f39660da4d25
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 53d6c2bae7c54ea4bb76be08ec62cb81
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 71c5e5231d33835438032cc8f41bc885
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7fdc31061c6ec0d4391d5dfa159ee1b4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4c73dca65e15c3c4fbe05bbf570af49d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3b206247d936c314eb2b36e1a5c61ed1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b370d582bb5522341abd050fff5adf3c
|
||||
guid: 6264ad8b345cf4c49a5ef6f305165f1c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e596f5d698705704baf1e4312019f924
|
||||
guid: 6ade19d133834a04796ba0c514e2d5bb
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f37c8a048b2bc324387113e5b027a962
|
||||
guid: 6de5f693aca544b4bad9e1c5025ac433
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2986f9119f4d7ab41b64ba9a5a9b9d93
|
||||
guid: 62790b88b76e72d46a664b2bcdef2b86
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1ed5b35ea681aa94eb527f275ec55aee
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c886a5109726cad4b883a508bc176899
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d4a891ce4a277a14797ac62961406fce
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 42fe1881572db4e49abe248f2eb4c83a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 48875e2fc8a635f4289a022d196808e8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6dd170e0ea2a8454090648138834c162
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Types;
|
||||
using Types.UI;
|
||||
using UnityEngine;
|
||||
|
||||
// Example: PlayerData.cs
|
||||
namespace Data.ScriptableObjects
|
||||
{
|
||||
[CreateAssetMenu(fileName = "Player", menuName = "Game Data/Player")]
|
||||
public class GamePlayerSo : ScriptableObject
|
||||
{
|
||||
private static GamePlayerSo _instance;
|
||||
|
||||
// public Display<int, Slot>; boxSlots;
|
||||
public string playerName;
|
||||
public int level;
|
||||
public int health;
|
||||
public int maxHealth;
|
||||
public int inventorySize;
|
||||
public int toolbarSize;
|
||||
public int experience;
|
||||
public int gold;
|
||||
public int attack;
|
||||
public int defense;
|
||||
public int speed;
|
||||
public int luck;
|
||||
public int magic;
|
||||
public int sanity;
|
||||
public int maxSanity;
|
||||
|
||||
|
||||
// Movement
|
||||
public float moveSpeed;
|
||||
|
||||
public bool movingRight;
|
||||
public bool movingLeft;
|
||||
public bool movingDown;
|
||||
public bool movingUp;
|
||||
|
||||
public int playerDirection;
|
||||
|
||||
public bool attacking;
|
||||
public float attackCoolDownTime;
|
||||
public bool justAttacked;
|
||||
|
||||
public bool hurting;
|
||||
public float hurtingCoolDownTime;
|
||||
public bool justHurt;
|
||||
|
||||
|
||||
public int weaponInUse;
|
||||
|
||||
public string currentMap;
|
||||
public Vector3 currentPosition;
|
||||
|
||||
public bool isKnockedBack;
|
||||
public Vector2 knockbackDirection;
|
||||
public Vector2 moveInput;
|
||||
|
||||
public int playerNumber;
|
||||
|
||||
public readonly Dictionary<int, GameSlot> EquipmentSlots = new();
|
||||
|
||||
|
||||
// player inventory slots data
|
||||
public readonly Dictionary<int, GameSlot> InventorySlots = new();
|
||||
|
||||
public readonly Dictionary<int, GameSlot> ToolbarSlots = new();
|
||||
public Guid ID;
|
||||
|
||||
// clone as new Player
|
||||
// set defaults when creating new player
|
||||
public GamePlayerSo()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
ID = Guid.NewGuid();
|
||||
playerName = "Player";
|
||||
level = 1;
|
||||
health = 100;
|
||||
maxHealth = 100;
|
||||
inventorySize = 20;
|
||||
toolbarSize = 10;
|
||||
experience = 0;
|
||||
gold = 0;
|
||||
attack = 10;
|
||||
defense = 10;
|
||||
|
||||
|
||||
// set the default inventory slots
|
||||
for (var i = 0; i < inventorySize; i++)
|
||||
{
|
||||
var slot = new GameSlot();
|
||||
slot.Position = i;
|
||||
slot.SlotType = SlotType.Inventory;
|
||||
slot.Item = null;
|
||||
InventorySlots.Add(slot.GetId(), slot);
|
||||
}
|
||||
|
||||
// set the default toolbar slots
|
||||
for (var i = 0; i < toolbarSize; i++)
|
||||
{
|
||||
var slot = new GameSlot();
|
||||
slot.Position = i;
|
||||
slot.SlotType = SlotType.Toolbar;
|
||||
slot.Item = null;
|
||||
ToolbarSlots.Add(slot.GetId(), slot);
|
||||
}
|
||||
|
||||
// set the default equipment slots
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
var slot = new GameSlot();
|
||||
slot.Position = i;
|
||||
slot.SlotType = SlotType.Equipment;
|
||||
slot.Item = null;
|
||||
EquipmentSlots.Add(slot.GetId(), slot);
|
||||
}
|
||||
}
|
||||
|
||||
public GamePlayer Clone()
|
||||
{
|
||||
return new GamePlayer(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Data.ScriptableObjects.Items;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects
|
||||
{
|
||||
[CreateAssetMenu(fileName = "ItemDatabase", menuName = "Game/Item Database")]
|
||||
public class ItemDatabase : ScriptableObject
|
||||
{
|
||||
public static ItemDatabase Instance;
|
||||
[SerializeField] private int lastAssignedId;
|
||||
|
||||
private readonly Dictionary<int, GameItem> _itemDictionary = new();
|
||||
[SerializeField] public List<GameItem> AllItems = new();
|
||||
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
if (Instance == null) Instance = this;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_itemDictionary.Clear();
|
||||
foreach (var item in AllItems) _itemDictionary[item.ID] = item;
|
||||
}
|
||||
|
||||
public int GetNextId()
|
||||
{
|
||||
return ++lastAssignedId;
|
||||
}
|
||||
|
||||
|
||||
public void AddItem(GameItem item)
|
||||
{
|
||||
if (!_itemDictionary.ContainsKey(item.ID))
|
||||
{
|
||||
AllItems.Add(item);
|
||||
_itemDictionary[item.ID] = item;
|
||||
}
|
||||
}
|
||||
|
||||
public GameItem GetItemById(int id)
|
||||
{
|
||||
if (_itemDictionary.TryGetValue(id, out var item)) return item.Clone();
|
||||
return null;
|
||||
}
|
||||
|
||||
public GameItem GetItemByName(string searchName)
|
||||
{
|
||||
return AllItems.Find(item => item.ItemName == searchName)?.Clone();
|
||||
}
|
||||
|
||||
public void RemoveItem(GameItem item)
|
||||
{
|
||||
if (_itemDictionary.ContainsKey(item.ID))
|
||||
{
|
||||
AllItems.Remove(item);
|
||||
_itemDictionary.Remove(item.ID);
|
||||
}
|
||||
}
|
||||
|
||||
public int GetMaxId()
|
||||
{
|
||||
lastAssignedId = 0;
|
||||
foreach (var item in AllItems)
|
||||
if (item.ID > lastAssignedId)
|
||||
lastAssignedId = item.ID;
|
||||
|
||||
return lastAssignedId;
|
||||
}
|
||||
|
||||
public void LoadAllItems()
|
||||
{
|
||||
AllItems.Clear();
|
||||
var scriptableGameItems = Resources.LoadAll<GameItemSo>("GameItems");
|
||||
|
||||
// loop over them all, convert each to GameItem and add to AllItems
|
||||
foreach (var scriptableGameItem in scriptableGameItems)
|
||||
{
|
||||
var gameItem = scriptableGameItem.Clone();
|
||||
AllItems.Add(gameItem);
|
||||
}
|
||||
|
||||
// AllItems.AddRange();
|
||||
GetMaxId();
|
||||
if (lastAssignedId == 0) lastAssignedId = GetNextId();
|
||||
|
||||
// check ids of all items.
|
||||
// id should not be zero, reassign to lastAssignedId if it is.
|
||||
foreach (var item in AllItems.Where(item => item.ID == 0))
|
||||
item.ID = GetNextId();
|
||||
// EditorUtility.SetDirty(item);
|
||||
|
||||
foreach (var item in AllItems) _itemDictionary[item.ID] = item;
|
||||
}
|
||||
|
||||
|
||||
// get random item by type
|
||||
public GameItem GetRandomItemByType(ItemType type)
|
||||
{
|
||||
var items = AllItems.FindAll(item => item.Type == type);
|
||||
return items[Random.Range(0, items.Count - 1)].Clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8137f139f4cc4b8c971c96e60272781f
|
||||
timeCreated: 1720270386
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3aaac8eb3f3443c59e0943dfdfe403f4
|
||||
timeCreated: 1719324845
|
||||
guid: 9b4c5bc1986841adbcfe5265574868f9
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "ConsumableItem", menuName = "Game Data/Consumable")]
|
||||
public class Consumable : GameItem
|
||||
{
|
||||
public int health;
|
||||
public int sanity;
|
||||
public int stamina;
|
||||
public int magic;
|
||||
public int luck;
|
||||
public int speed;
|
||||
public int attack;
|
||||
public int defense;
|
||||
public int critChance;
|
||||
public int critDamage;
|
||||
public int duration;
|
||||
|
||||
// high quality
|
||||
public int quality;
|
||||
|
||||
// Add other consumable-specific properties and methods here
|
||||
|
||||
// set the default values for the consumable item
|
||||
public Consumable()
|
||||
{
|
||||
health = 0;
|
||||
sanity = 0;
|
||||
stamina = 0;
|
||||
magic = 0;
|
||||
luck = 0;
|
||||
speed = 0;
|
||||
attack = 0;
|
||||
defense = 0;
|
||||
critChance = 0;
|
||||
critDamage = 0;
|
||||
duration = 0;
|
||||
quality = 0;
|
||||
type = ItemType.Consumable;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "ConsumableItem", menuName = "Game Data/Consumable")]
|
||||
public class ConsumableItemSo : GameItemSo
|
||||
{
|
||||
public int attack;
|
||||
public int critChance;
|
||||
public int critDamage;
|
||||
public int defense;
|
||||
public int duration;
|
||||
public int health;
|
||||
public int luck;
|
||||
public int magic;
|
||||
|
||||
// high quality
|
||||
public int quality;
|
||||
public int sanity;
|
||||
public int speed;
|
||||
public int stamina;
|
||||
|
||||
// Add other consumable-specific properties and methods here
|
||||
|
||||
// set the default values for the consumable item
|
||||
public ConsumableItemSo()
|
||||
{
|
||||
health = 0;
|
||||
sanity = 0;
|
||||
stamina = 0;
|
||||
magic = 0;
|
||||
luck = 0;
|
||||
speed = 0;
|
||||
attack = 0;
|
||||
defense = 0;
|
||||
critChance = 0;
|
||||
critDamage = 0;
|
||||
duration = 0;
|
||||
quality = 0;
|
||||
type = ItemType.Consumable;
|
||||
}
|
||||
|
||||
public new ConsumableItem Clone()
|
||||
{
|
||||
var clone = new ConsumableItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
IsUsable = isUsable,
|
||||
Health = health,
|
||||
Sanity = sanity,
|
||||
Stamina = stamina,
|
||||
Magic = magic,
|
||||
Luck = luck,
|
||||
Speed = speed,
|
||||
Attack = attack,
|
||||
Defense = defense,
|
||||
CritChance = critChance,
|
||||
CritDamage = critDamage,
|
||||
Duration = duration,
|
||||
Quality = quality,
|
||||
Type = type
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f1edfdde36b2477cb608b62fcde8b71f
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
// Example: GameItem.cs
|
||||
|
||||
[CreateAssetMenu(fileName = "CropItem", menuName = "Game Data/Crop")]
|
||||
public class CropItem : GameItem
|
||||
{
|
||||
public int experience;
|
||||
|
||||
// set the type of crop on instantiation
|
||||
public CropItem()
|
||||
{
|
||||
type = ItemType.Crop;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
// Example: GameItem.cs
|
||||
|
||||
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "CropItem", menuName = "Game Data/Crop")]
|
||||
public class CropItemSo : GameItemSo
|
||||
|
||||
{
|
||||
public int experience;
|
||||
|
||||
// set the type of crop on instantiation
|
||||
public CropItemSo()
|
||||
{
|
||||
type = ItemType.Crop;
|
||||
}
|
||||
|
||||
public new CropItem Clone()
|
||||
{
|
||||
var clone = new CropItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
Experience = experience
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2468b57fe3934b01891fc721b7f0dfbc
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "EquipmentItem", menuName = "Game Data/Equipment")]
|
||||
public class EquipmentItem : GameItem
|
||||
{
|
||||
public enum Slot
|
||||
{
|
||||
Weapon,
|
||||
Helmet,
|
||||
Armor,
|
||||
Boots,
|
||||
Gloves,
|
||||
Accessory,
|
||||
Ring
|
||||
}
|
||||
|
||||
public Slot slot;
|
||||
public int weight;
|
||||
public int level;
|
||||
public int armor;
|
||||
public int durability;
|
||||
public int maxDurability;
|
||||
public int attack;
|
||||
public int defense;
|
||||
public int speed;
|
||||
public int luck;
|
||||
public int magic;
|
||||
public int sanity;
|
||||
public int health; // ex. if consumable heals for 10 health or if equipment adds 10 health
|
||||
|
||||
// Add other equipment-specific properties and methods here
|
||||
|
||||
// set the type on creation
|
||||
public EquipmentItem()
|
||||
{
|
||||
type = ItemType.Equipment;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "EquipmentItem", menuName = "Game Data/Equipment")]
|
||||
public class EquipmentItemSo : GameItemSo
|
||||
{
|
||||
public int armor;
|
||||
public int attack;
|
||||
public int defense;
|
||||
public int durability;
|
||||
public int health; // ex. if consumable heals for 10 health or if equipment adds 10 health
|
||||
public int level;
|
||||
public int luck;
|
||||
public int magic;
|
||||
public int maxDurability;
|
||||
public int sanity;
|
||||
|
||||
public EquipmentSlot slot;
|
||||
public int speed;
|
||||
public int weight;
|
||||
|
||||
// Add other equipment-specific properties and methods here
|
||||
|
||||
public EquipmentItemSo()
|
||||
{
|
||||
type = ItemType.Equipment;
|
||||
}
|
||||
|
||||
public new EquipmentItem Clone()
|
||||
{
|
||||
var clone = new EquipmentItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
Slot = slot,
|
||||
Weight = weight,
|
||||
Level = level,
|
||||
Armor = armor,
|
||||
Durability = durability,
|
||||
MaxDurability = maxDurability,
|
||||
Attack = attack,
|
||||
Defense = defense,
|
||||
Speed = speed,
|
||||
Luck = luck,
|
||||
Magic = magic,
|
||||
Sanity = sanity,
|
||||
Health = health
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 719ceae7b0f74ef090e0295d3de00df2
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
// Example: GameItem.cs
|
||||
|
||||
[CreateAssetMenu(fileName = "GameItem", menuName = "Game Data/Game Item")]
|
||||
public class GameItem : ScriptableObject
|
||||
{
|
||||
// item types
|
||||
public enum ItemType
|
||||
{
|
||||
Key,
|
||||
Weapon,
|
||||
Consumable,
|
||||
Resource,
|
||||
Seed,
|
||||
Equipment,
|
||||
Crop,
|
||||
Tool
|
||||
}
|
||||
|
||||
public enum Rarity
|
||||
{
|
||||
Common,
|
||||
Uncommon,
|
||||
Rare,
|
||||
Epic,
|
||||
Legendary,
|
||||
Mythic
|
||||
}
|
||||
|
||||
|
||||
public string itemName;
|
||||
public Sprite icon;
|
||||
public int itemValue;
|
||||
public Rarity rarity;
|
||||
public int quantity;
|
||||
public int stackSize;
|
||||
public int sellValue;
|
||||
|
||||
public ItemType type;
|
||||
|
||||
public bool isStackable;
|
||||
public bool isEquippable;
|
||||
public bool isConsumable;
|
||||
public bool isQuestItem;
|
||||
public bool isKeyItem;
|
||||
public bool isCraftable;
|
||||
public bool isTradeable;
|
||||
public bool isSellable;
|
||||
public bool isDroppable;
|
||||
public bool isDestroyable;
|
||||
public bool isUsable;
|
||||
|
||||
// stat properties
|
||||
}
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
// [CreateAssetMenu(fileName = "GameItem", menuName = "Game Data/Game Item")]
|
||||
// public enum ItemType
|
||||
// {
|
||||
// Key,
|
||||
// Weapon,
|
||||
// Consumable,
|
||||
// Resource,
|
||||
// Seed,
|
||||
// Equipment,
|
||||
// Crop,
|
||||
// Tool
|
||||
// }
|
||||
//
|
||||
// public enum ItemRarity
|
||||
// {
|
||||
// Common,
|
||||
// Uncommon,
|
||||
// Rare,
|
||||
// Epic,
|
||||
// Legendary,
|
||||
// Mythic
|
||||
// }
|
||||
|
||||
public class GameItemSo : ScriptableObject
|
||||
{
|
||||
public Sprite icon;
|
||||
|
||||
public int id;
|
||||
public bool isConsumable;
|
||||
public bool isCraftable;
|
||||
public bool isDestroyable;
|
||||
public bool isDroppable;
|
||||
public bool isEquippable;
|
||||
public bool isKeyItem;
|
||||
public bool isQuestItem;
|
||||
public bool isSellable;
|
||||
|
||||
public bool isStackable;
|
||||
public bool isTradeable;
|
||||
public bool isUsable;
|
||||
|
||||
public string itemName;
|
||||
public int itemValue;
|
||||
public int quantity;
|
||||
public ItemRarity rarity;
|
||||
public int sellValue;
|
||||
public string spritePath;
|
||||
public int stackSize;
|
||||
|
||||
public ItemType type;
|
||||
|
||||
|
||||
public GameItem Clone()
|
||||
{
|
||||
var clone = new GameItem
|
||||
{
|
||||
ID = id,
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
IsUsable = isUsable,
|
||||
SpritePath = spritePath,
|
||||
Type = type
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public string GetItemName()
|
||||
{
|
||||
return itemName;
|
||||
}
|
||||
|
||||
public Sprite GetIcon()
|
||||
{
|
||||
return icon;
|
||||
}
|
||||
|
||||
public int GetItemValue()
|
||||
{
|
||||
return itemValue;
|
||||
}
|
||||
|
||||
public int GetQuantity()
|
||||
{
|
||||
return quantity;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0ac1b64417c4411da7ab5aad85f4ab1f
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
// Example: GameItem.cs
|
||||
|
||||
|
||||
[CreateAssetMenu(fileName = "Key", menuName = "Game Data/Key")]
|
||||
public class KeyItem : GameItem
|
||||
{
|
||||
public string keyType;
|
||||
|
||||
// set type of key on instantiation
|
||||
public KeyItem()
|
||||
{
|
||||
type = ItemType.Key;
|
||||
}
|
||||
|
||||
// Add other key-specific properties and methods here
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
// Example: GameItem.cs
|
||||
|
||||
|
||||
// [CreateAssetMenu(fileName = "Key", menuName = "Game Data/Key")]
|
||||
|
||||
namespace Types.Items
|
||||
{
|
||||
public class KeyItemSo : GameItem
|
||||
{
|
||||
public string KeyType;
|
||||
|
||||
// set type of key on instantiation
|
||||
public KeyItemSo()
|
||||
{
|
||||
Type = ItemType.Key;
|
||||
}
|
||||
|
||||
// Add other key-specific properties and methods here
|
||||
public new KeyItem Clone()
|
||||
{
|
||||
var clone = new KeyItem
|
||||
{
|
||||
Icon = Icon,
|
||||
KeyType = KeyType,
|
||||
ItemName = ItemName
|
||||
};
|
||||
clone.Icon = Icon;
|
||||
clone.ItemValue = ItemValue;
|
||||
clone.Rarity = Rarity;
|
||||
clone.Quantity = Quantity;
|
||||
clone.StackSize = StackSize;
|
||||
clone.SellValue = SellValue;
|
||||
clone.IsStackable = IsStackable;
|
||||
clone.IsEquippable = IsEquippable;
|
||||
clone.IsConsumable = IsConsumable;
|
||||
clone.IsQuestItem = IsQuestItem;
|
||||
clone.IsKeyItem = IsKeyItem;
|
||||
clone.IsCraftable = IsCraftable;
|
||||
clone.IsTradeable = IsTradeable;
|
||||
clone.IsSellable = IsSellable;
|
||||
clone.IsDroppable = IsDroppable;
|
||||
clone.IsDestroyable = IsDestroyable;
|
||||
// clone all fields
|
||||
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 035583779f354b838f21775a1eabe7f2
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "Resource", menuName = "Game Data/Resource")]
|
||||
public class ResourceItem : GameItem
|
||||
{
|
||||
public int weight;
|
||||
public int value;
|
||||
public int durability;
|
||||
public int maxDurability;
|
||||
public int quality;
|
||||
public int level;
|
||||
public int experience;
|
||||
|
||||
// set type of resource on instantiation
|
||||
public ResourceItem()
|
||||
{
|
||||
type = ItemType.Resource;
|
||||
}
|
||||
|
||||
// Add other resource-specific properties and methods here
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "Resource", menuName = "Game Data/Resource")]
|
||||
public class ResourceItemSo : GameItemSo
|
||||
{
|
||||
public int durability;
|
||||
public int experience;
|
||||
public int level;
|
||||
public int maxDurability;
|
||||
public int quality;
|
||||
public int weight;
|
||||
|
||||
// set type of resource on instantiation
|
||||
public ResourceItemSo()
|
||||
{
|
||||
type = ItemType.Resource;
|
||||
}
|
||||
|
||||
// Add other resource-specific properties and methods here
|
||||
public new ResourceItem Clone()
|
||||
{
|
||||
var clone = new ResourceItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
Weight = weight,
|
||||
Durability = durability,
|
||||
MaxDurability = maxDurability,
|
||||
Quality = quality,
|
||||
Level = level,
|
||||
Experience = experience
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1149a83c03964bb1989f46acffe46d09
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "SeedItem", menuName = "Game Data/Seed")]
|
||||
public class SeedItem : GameItem
|
||||
{
|
||||
public enum Season
|
||||
{
|
||||
Spring,
|
||||
Summer,
|
||||
Fall,
|
||||
Winter
|
||||
}
|
||||
|
||||
public CropItem crop;
|
||||
public int growthTime;
|
||||
public List<Season> growSeasons;
|
||||
|
||||
// set type on instantiation
|
||||
public SeedItem()
|
||||
{
|
||||
type = ItemType.Seed;
|
||||
}
|
||||
|
||||
public void Plant(Tile tile)
|
||||
{
|
||||
// checks if its the correct season to be plantable.
|
||||
|
||||
// checks if the tile is tilled and not occupied by another crop.
|
||||
|
||||
// sets the tile to be occupied by the crop.
|
||||
|
||||
// sets the crop to the correct growth stage.
|
||||
Debug.Log("Planting seed");
|
||||
var cropInteractable = CropManager.Instance.GetCropByName(crop.itemName);
|
||||
cropInteractable.currentGrowthStage = 1;
|
||||
cropInteractable.seedItem = this;
|
||||
tile.SetInteractable(cropInteractable);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
using System.Collections.Generic;
|
||||
using Managers;
|
||||
using Types.Items;
|
||||
using Types.Map;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "SeedItem", menuName = "Game Data/Seed")]
|
||||
public class SeedItemSo : GameItemSo
|
||||
{
|
||||
public int growthTime;
|
||||
public List<Season> growSeasons;
|
||||
|
||||
public CropItem Crop;
|
||||
|
||||
// set type on instantiation
|
||||
public SeedItemSo()
|
||||
{
|
||||
type = ItemType.Seed;
|
||||
}
|
||||
|
||||
public void Plant(Tile tile)
|
||||
{
|
||||
// checks if it's the correct season to be plantable.
|
||||
// checks if the tile is tilled and not occupied by another crop.
|
||||
// sets the tile to be occupied by the crop.
|
||||
|
||||
// sets the crop to the correct growth stage.
|
||||
Debug.Log("Planting seed");
|
||||
var cropInteractable = CropManager.Instance.GetCropByName(Crop.ItemName);
|
||||
cropInteractable.currentGrowthStage = 1;
|
||||
cropInteractable.SeedItem = Clone();
|
||||
tile.SetInteractable(cropInteractable);
|
||||
}
|
||||
|
||||
public new SeedItem Clone()
|
||||
{
|
||||
var clone = new SeedItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
Crop = Crop,
|
||||
GrowthTime = growthTime,
|
||||
GrowSeasons = growSeasons
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9e827ea556af4bc79c9554a2a0fb100b
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
// Example: GameItem.cs
|
||||
[CreateAssetMenu(fileName = "ToolItem", menuName = "Game Data/Tool")]
|
||||
public class ToolItem : GameItem
|
||||
{
|
||||
// tool type enum
|
||||
public enum ToolType
|
||||
{
|
||||
Mining,
|
||||
Woodcutting,
|
||||
Fishing,
|
||||
Hunting,
|
||||
Watering,
|
||||
Harvesting,
|
||||
Cooking,
|
||||
Smithing,
|
||||
Alchemy,
|
||||
Enchanting,
|
||||
Repairing,
|
||||
Crafting,
|
||||
None
|
||||
}
|
||||
|
||||
public ToolType toolType;
|
||||
|
||||
public int durability;
|
||||
|
||||
public int maxDurability;
|
||||
|
||||
public int range;
|
||||
public int power;
|
||||
public int speed;
|
||||
public int efficiency;
|
||||
|
||||
// set type to Tool when creating a new ToolItem
|
||||
public ToolItem()
|
||||
{
|
||||
type = ItemType.Tool;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
// Example: GameItem.cs
|
||||
// [CreateAssetMenu(fileName = "ToolItem", menuName = "Game Data/Tool")]
|
||||
|
||||
|
||||
using Types.Items;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
public class ToolItemSo : GameItemSo
|
||||
{
|
||||
public int durability;
|
||||
public int efficiency;
|
||||
|
||||
public int maxDurability;
|
||||
public int power;
|
||||
|
||||
public int range;
|
||||
public int speed;
|
||||
|
||||
public ToolType toolType;
|
||||
|
||||
// set type to Tool when creating a new ToolItem
|
||||
public ToolItemSo()
|
||||
{
|
||||
type = ItemType.Tool;
|
||||
}
|
||||
|
||||
public new ToolItem Clone()
|
||||
{
|
||||
var clone = new ToolItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
ToolType = toolType,
|
||||
Durability = durability,
|
||||
MaxDurability = maxDurability,
|
||||
Range = range,
|
||||
Power = power,
|
||||
Speed = speed,
|
||||
Efficiency = efficiency
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ed71ac43a0ec44cb906c7b08c6fd2dc6
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "Weapon", menuName = "Game Data/Weapon")]
|
||||
public class WeaponItem : EquipmentItem
|
||||
{
|
||||
public int damage;
|
||||
|
||||
public int attackSpeed;
|
||||
public int critChance;
|
||||
public int critDamage;
|
||||
|
||||
public int range;
|
||||
|
||||
// Add other weapon-specific properties and methods here
|
||||
// abilities
|
||||
|
||||
public bool isRanged;
|
||||
public bool isMelee;
|
||||
public bool isMagic;
|
||||
public bool isEnchanted;
|
||||
public bool isCursed;
|
||||
|
||||
// set the type on creation
|
||||
public WeaponItem()
|
||||
{
|
||||
type = ItemType.Weapon;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Data.ScriptableObjects.Items
|
||||
{
|
||||
[CreateAssetMenu(fileName = "Weapon", menuName = "Game Data/Weapon")]
|
||||
public class WeaponItemSo : EquipmentItemSo
|
||||
|
||||
{
|
||||
public int attackSpeed;
|
||||
public int critChance;
|
||||
public int critDamage;
|
||||
public int damage;
|
||||
public bool isCursed;
|
||||
public bool isEnchanted;
|
||||
public bool isMagic;
|
||||
public bool isMelee;
|
||||
|
||||
// Add other weapon-specific properties and methods here
|
||||
// abilities
|
||||
|
||||
public bool isRanged;
|
||||
|
||||
public int range;
|
||||
|
||||
// set the type on creation
|
||||
public WeaponItemSo()
|
||||
{
|
||||
type = ItemType.Weapon;
|
||||
}
|
||||
|
||||
public new GameItem Clone()
|
||||
{
|
||||
var clone = new WeaponItem
|
||||
{
|
||||
ItemName = itemName,
|
||||
Icon = icon,
|
||||
ItemValue = itemValue,
|
||||
Rarity = rarity,
|
||||
Quantity = quantity,
|
||||
StackSize = stackSize,
|
||||
SellValue = sellValue,
|
||||
IsStackable = isStackable,
|
||||
IsEquippable = isEquippable,
|
||||
IsConsumable = isConsumable,
|
||||
IsQuestItem = isQuestItem,
|
||||
IsKeyItem = isKeyItem,
|
||||
IsCraftable = isCraftable,
|
||||
IsTradeable = isTradeable,
|
||||
IsSellable = isSellable,
|
||||
IsDroppable = isDroppable,
|
||||
IsDestroyable = isDestroyable,
|
||||
Slot = slot,
|
||||
Weight = weight,
|
||||
Level = level,
|
||||
Armor = armor,
|
||||
Durability = durability,
|
||||
MaxDurability = maxDurability,
|
||||
Attack = attack,
|
||||
Defense = defense,
|
||||
Speed = speed,
|
||||
Luck = luck,
|
||||
Magic = magic,
|
||||
Sanity = sanity,
|
||||
Health = health,
|
||||
Damage = damage,
|
||||
AttackSpeed = attackSpeed,
|
||||
CritChance = critChance,
|
||||
CritDamage = critDamage,
|
||||
Range = range,
|
||||
IsRanged = isRanged,
|
||||
IsMelee = isMelee,
|
||||
IsMagic = isMagic,
|
||||
IsEnchanted = isEnchanted,
|
||||
IsCursed = isCursed
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cc4e792cb0684b0c8e5297fd4d7845da
|
||||
timeCreated: 1720303574
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "Map", menuName = "Game Data/Map")]
|
||||
public class Map : ScriptableObject
|
||||
{
|
||||
public string sceneName; // The name of the scene this map corresponds to
|
||||
public Vector3 gridPosition;
|
||||
public Vector2Int gridSize;
|
||||
public Vector2Int playerStartPosition;
|
||||
public TileGrid grid;
|
||||
|
||||
// TODO: we will need some sort of default grid rules that we can apply to each map
|
||||
// to prevent people from planting crops on the road or in the water, stuff like that.
|
||||
// public GridRules gridRules;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
grid = CreateInstance<TileGrid>();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using Types.Map;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Data.ScriptableObjects
|
||||
{
|
||||
[CreateAssetMenu(fileName = "Map", menuName = "Game Data/Map")]
|
||||
public class MapSo : ScriptableObject
|
||||
{
|
||||
public string sceneName; // The name of the scene this map corresponds to
|
||||
public Vector3 gridPosition;
|
||||
public Vector2Int gridSize;
|
||||
public Vector2Int playerStartPosition;
|
||||
[FormerlySerializedAs("Grid")] public TileGrid grid;
|
||||
|
||||
public MapSo(MapSo map)
|
||||
{
|
||||
sceneName = map.sceneName;
|
||||
gridPosition = map.gridPosition;
|
||||
grid = map.grid;
|
||||
playerStartPosition = map.playerStartPosition;
|
||||
gridSize = map.gridSize;
|
||||
}
|
||||
|
||||
// TODO: we will need some sort of default grid rules that we can apply to each map
|
||||
// to prevent people from planting crops on the road or in the water, stuff like that.
|
||||
// public GridRules gridRules;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
// GridSo = CreateInstance<TileGridSo>();
|
||||
}
|
||||
|
||||
|
||||
public Map Clone()
|
||||
{
|
||||
return new Map(this);
|
||||
}
|
||||
|
||||
public MapSo CloneSo()
|
||||
{
|
||||
return CreateInstance<MapSo>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
using FishNet.Object;
|
||||
|
||||
public class NetworkedPlayerData : NetworkBehaviour
|
||||
{
|
||||
public string playerName;
|
||||
public int level;
|
||||
public int health;
|
||||
|
||||
public int maxHealth;
|
||||
// Add other fields as necessary
|
||||
|
||||
public void InitializeFromScriptableObject(PlayerData data)
|
||||
{
|
||||
if (IsServer)
|
||||
{
|
||||
playerName = data.playerName;
|
||||
level = data.level;
|
||||
health = data.health;
|
||||
maxHealth = data.maxHealth;
|
||||
// Initialize other fields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 23b2633f5a4445caa3ee94344a9d9924
|
||||
timeCreated: 1720218475
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
%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: 6fa215aeb235ae84aa03934726988df3, type: 3}
|
||||
m_Name: PlayerData
|
||||
m_EditorClassIdentifier:
|
||||
playerName:
|
||||
level: 0
|
||||
health: 0
|
||||
maxHealth: 0
|
||||
inventorySize: 0
|
||||
toolbarSize: 0
|
||||
experience: 0
|
||||
gold: 0
|
||||
attack: 0
|
||||
defense: 0
|
||||
speed: 0
|
||||
luck: 0
|
||||
magic: 0
|
||||
sanity: 0
|
||||
maxSanity: 0
|
||||
|
|
@ -1,166 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// Example: PlayerData.cs
|
||||
[CreateAssetMenu(fileName = "PlayerData", menuName = "Game Data/Player")]
|
||||
public class PlayerData : ScriptableObject
|
||||
{
|
||||
// public Display<int, Slot>; boxSlots;
|
||||
public string playerName;
|
||||
public int level;
|
||||
public int health;
|
||||
public int maxHealth;
|
||||
public int inventorySize;
|
||||
public int toolbarSize;
|
||||
public int experience;
|
||||
public int gold;
|
||||
public int attack;
|
||||
public int defense;
|
||||
public int speed;
|
||||
public int luck;
|
||||
public int magic;
|
||||
public int sanity;
|
||||
public int maxSanity;
|
||||
|
||||
|
||||
public string currentMap;
|
||||
public Vector3 currentPosition;
|
||||
public Dictionary<int, Slot> equipmentSlots = new();
|
||||
|
||||
// player inventory slots data
|
||||
public Dictionary<int, Slot> inventorySlots = new();
|
||||
|
||||
public Dictionary<int, Slot> toolbarSlots = new();
|
||||
|
||||
|
||||
// run on creation
|
||||
public PlayerData()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
// create all the slots
|
||||
for (var i = 0; i < inventorySize; i++)
|
||||
{
|
||||
var slot = CreateInstance<Slot>();
|
||||
slot.slotId = i;
|
||||
slot.item = null;
|
||||
AddInventorySlot(slot);
|
||||
}
|
||||
|
||||
for (var i = 0; i < toolbarSize; i++)
|
||||
{
|
||||
var slot = CreateInstance<Slot>();
|
||||
slot.slotId = i;
|
||||
slot.item = null;
|
||||
AddToolbarSlot(slot);
|
||||
}
|
||||
|
||||
// create player slots for equipment
|
||||
var equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 0;
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Helmet);
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
|
||||
equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 1;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Armor);
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
|
||||
// feet
|
||||
equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 2;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Boots);
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
|
||||
|
||||
equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 3;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Accessory);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Ring);
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
|
||||
equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 4;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Boots);
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
|
||||
equipmentSlot = CreateInstance<Slot>();
|
||||
equipmentSlot.slotId = 5;
|
||||
equipmentSlot.slotType = Slot.SlotType.Equipment;
|
||||
equipmentSlot.allowedItemTypes.Add(GameItem.ItemType.Equipment);
|
||||
equipmentSlot.allowedEquipmentSlots.Add(EquipmentItem.Slot.Ring);
|
||||
equipmentSlot.item = null;
|
||||
equipmentSlots.Add(equipmentSlot.slotId, equipmentSlot);
|
||||
}
|
||||
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
playerName = "Player";
|
||||
level = 1;
|
||||
health = 100;
|
||||
maxHealth = 100;
|
||||
inventorySize = 20;
|
||||
toolbarSize = 10;
|
||||
experience = 0;
|
||||
gold = 0;
|
||||
attack = 10;
|
||||
defense = 10;
|
||||
speed = 10;
|
||||
luck = 10;
|
||||
magic = 10;
|
||||
sanity = 100;
|
||||
maxSanity = 100;
|
||||
equipmentSlots = new Dictionary<int, Slot>();
|
||||
inventorySlots = new Dictionary<int, Slot>();
|
||||
toolbarSlots = new Dictionary<int, Slot>();
|
||||
}
|
||||
|
||||
public void AddEquipmentSlot(Slot slot)
|
||||
{
|
||||
equipmentSlots[slot.slotId] = slot;
|
||||
}
|
||||
|
||||
public void AddInventorySlot(Slot slot)
|
||||
{
|
||||
// add slot to inventory
|
||||
inventorySlots[slot.slotId] = slot;
|
||||
}
|
||||
|
||||
public void AddToolbarSlot(Slot slot)
|
||||
{
|
||||
toolbarSlots.Add(slot.slotId, slot);
|
||||
}
|
||||
|
||||
public void AddItemToInventory(GameItem item)
|
||||
{
|
||||
foreach (var slot in inventorySlots.Values)
|
||||
if (slot.item == null)
|
||||
{
|
||||
slot.item = item;
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.LogWarning("No empty slots available to add item: " + item.itemName);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class Tile : ScriptableObject
|
||||
{
|
||||
public bool blockMovement;
|
||||
public bool blockBuilding = true;
|
||||
|
||||
public bool blockInteractable;
|
||||
|
||||
public IInteractable Interactable;
|
||||
|
||||
public List<GameItem> GameItems { get; set; }
|
||||
|
||||
public void Initialize(Vector2Int vector2Int)
|
||||
{
|
||||
Debug.Log("GRID: GridSpace Initialize");
|
||||
// Crop = null;
|
||||
GameItems = new List<GameItem>();
|
||||
RemoveAllInteractables();
|
||||
}
|
||||
|
||||
public void AddGameItem(GameItem gameItem)
|
||||
{
|
||||
GameItems.Add(gameItem);
|
||||
}
|
||||
|
||||
public void RemoveGameItem(GameItem gameItem)
|
||||
{
|
||||
GameItems.Remove(gameItem);
|
||||
}
|
||||
|
||||
public void ClearGameItems()
|
||||
{
|
||||
GameItems.Clear();
|
||||
}
|
||||
|
||||
|
||||
public void ClearInteractableItem()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public bool IsBuildable()
|
||||
{
|
||||
// has no items or interactable on it
|
||||
return GameItems.Count == 0 && Interactable != null && !blockBuilding;
|
||||
}
|
||||
|
||||
|
||||
// public int GetInteractableCount()
|
||||
// {
|
||||
// var count = 0;
|
||||
// if (treeInteractable != null)
|
||||
// count++;
|
||||
// if (rockInteractable != null)
|
||||
// count++;
|
||||
// if (boxInteractable != null)
|
||||
// count++;
|
||||
// if (cropInteractable != null)
|
||||
// count++;
|
||||
// return count;
|
||||
// }
|
||||
|
||||
|
||||
public void SetInteractable(TreeInteractable interactable)
|
||||
{
|
||||
RemoveAllInteractables();
|
||||
Interactable = interactable;
|
||||
}
|
||||
|
||||
public void SetInteractable(RockInteractable interactable)
|
||||
{
|
||||
RemoveAllInteractables();
|
||||
Interactable = interactable;
|
||||
}
|
||||
|
||||
public void SetInteractable(BoxInteractable interactable)
|
||||
{
|
||||
RemoveAllInteractables();
|
||||
Interactable = interactable;
|
||||
}
|
||||
|
||||
public void SetInteractable(CropInteractable interactable)
|
||||
{
|
||||
RemoveAllInteractables();
|
||||
Interactable = interactable;
|
||||
}
|
||||
|
||||
public void SetInteractable(Interactable interactable)
|
||||
{
|
||||
RemoveAllInteractables();
|
||||
Interactable = interactable;
|
||||
}
|
||||
|
||||
public void RemoveAllInteractables()
|
||||
{
|
||||
Interactable = null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "Grid", menuName = "Game Data/Map Grid")]
|
||||
public class TileGrid : ScriptableObject
|
||||
{
|
||||
public Vector2Int size;
|
||||
private Tile[,] _tiles;
|
||||
|
||||
// Initialize the grid with the size of the map
|
||||
public TileGrid(Vector2Int size)
|
||||
{
|
||||
this.size = size;
|
||||
Initialize(this.size);
|
||||
}
|
||||
|
||||
public void Initialize(Vector2Int gSize)
|
||||
{
|
||||
size = gSize;
|
||||
_tiles = new Tile[gSize.x, gSize.y];
|
||||
}
|
||||
|
||||
public Tile GetTile(int x, int y)
|
||||
{
|
||||
return _tiles[x, y];
|
||||
}
|
||||
|
||||
public void SetTile(int x, int y, Tile tile)
|
||||
{
|
||||
_tiles[x, y] = tile;
|
||||
}
|
||||
|
||||
|
||||
public void ClearTile(int x, int y)
|
||||
{
|
||||
_tiles[x, y] = null;
|
||||
}
|
||||
|
||||
public bool IsTileOccupied(int x, int y)
|
||||
{
|
||||
return _tiles[x, y] != null;
|
||||
}
|
||||
|
||||
public bool IsTileOccupiedByInteractableItem(int x, int y)
|
||||
{
|
||||
return _tiles[x, y] != null && _tiles[x, y].Interactable != null;
|
||||
}
|
||||
|
||||
public bool IsTileOccupiedByCrop(int x, int y)
|
||||
{
|
||||
return _tiles[x, y] != null && _tiles[x, y].Interactable.Type == InteractableType.Crop;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
|
||||
// [CreateAssetMenu(fileName = "Grid", menuName = "Game Data/Map Grid")]
|
||||
// public class TileGridSo : ScriptableObject
|
||||
// {
|
||||
// public Vector2Int size;
|
||||
// private TileSo[,] _tiles;
|
||||
//
|
||||
// // Initialize the grid with the size of the map
|
||||
// public TileGridSo(Vector2Int size)
|
||||
// {
|
||||
// this.size = size;
|
||||
// Initialize(this.size);
|
||||
// }
|
||||
//
|
||||
// public void Initialize(Vector2Int gSize)
|
||||
// {
|
||||
// size = gSize;
|
||||
// _tiles = new TileSo[gSize.x, gSize.y];
|
||||
// }
|
||||
//
|
||||
// public TileSo GetTile(int x, int y)
|
||||
// {
|
||||
// return _tiles[x, y];
|
||||
// }
|
||||
//
|
||||
// public void SetTile(int x, int y, TileSo tileSo)
|
||||
// {
|
||||
// _tiles[x, y] = tileSo;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public void ClearTile(int x, int y)
|
||||
// {
|
||||
// _tiles[x, y] = null;
|
||||
// }
|
||||
//
|
||||
// public bool IsTileOccupied(int x, int y)
|
||||
// {
|
||||
// return _tiles[x, y] != null;
|
||||
// }
|
||||
//
|
||||
// public bool IsTileOccupiedByInteractableItem(int x, int y)
|
||||
// {
|
||||
// return _tiles[x, y] != null && _tiles[x, y].Interactable != null;
|
||||
// }
|
||||
//
|
||||
// public bool IsTileOccupiedByCrop(int x, int y)
|
||||
// {
|
||||
// return _tiles[x, y] != null && _tiles[x, y].Interactable.Type == InteractableType.Crop;
|
||||
// }
|
||||
// }
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
|
||||
|
||||
// namespace Data.ScriptableObjects
|
||||
// {
|
||||
// public class TileSo : ScriptableObject
|
||||
// {
|
||||
// public bool blockMovement;
|
||||
// public bool blockBuilding = true;
|
||||
//
|
||||
// public bool blockInteractable;
|
||||
//
|
||||
// public IInteractable Interactable;
|
||||
//
|
||||
// public List<GameItem> GameItems { get; set; }
|
||||
//
|
||||
// public void Initialize(Vector2Int vector2Int)
|
||||
// {
|
||||
// Debug.Log("GRID: GridSpace Initialize");
|
||||
// // Crop = null;
|
||||
// GameItems = new List<GameItem>();
|
||||
// RemoveAllInteractables();
|
||||
// }
|
||||
//
|
||||
// public void AddGameItem(GameItem gameItem)
|
||||
// {
|
||||
// GameItems.Add(gameItem);
|
||||
// }
|
||||
//
|
||||
// public void RemoveGameItem(GameItem gameItem)
|
||||
// {
|
||||
// GameItems.Remove(gameItem);
|
||||
// }
|
||||
//
|
||||
// public void ClearGameItems()
|
||||
// {
|
||||
// GameItems.Clear();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public void ClearInteractableItem()
|
||||
// {
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public bool IsBuildable()
|
||||
// {
|
||||
// // has no items or interactable on it
|
||||
// return GameItems.Count == 0 && Interactable != null && !blockBuilding;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // public int GetInteractableCount()
|
||||
// // {
|
||||
// // var count = 0;
|
||||
// // if (treeInteractable != null)
|
||||
// // count++;
|
||||
// // if (rockInteractable != null)
|
||||
// // count++;
|
||||
// // if (boxInteractable != null)
|
||||
// // count++;
|
||||
// // if (cropInteractable != null)
|
||||
// // count++;
|
||||
// // return count;
|
||||
// // }
|
||||
//
|
||||
//
|
||||
// public void SetInteractable(TreeInteractable interactable)
|
||||
// {
|
||||
// RemoveAllInteractables();
|
||||
// Interactable = interactable;
|
||||
// }
|
||||
//
|
||||
// public void SetInteractable(RockInteractable interactable)
|
||||
// {
|
||||
// RemoveAllInteractables();
|
||||
// Interactable = interactable;
|
||||
// }
|
||||
//
|
||||
// public void SetInteractable(BoxInteractable interactable)
|
||||
// {
|
||||
// RemoveAllInteractables();
|
||||
// Interactable = interactable;
|
||||
// }
|
||||
//
|
||||
// public void SetInteractable(CropInteractable interactable)
|
||||
// {
|
||||
// RemoveAllInteractables();
|
||||
// Interactable = interactable;
|
||||
// }
|
||||
//
|
||||
// public void SetInteractable(Interactable interactable)
|
||||
// {
|
||||
// RemoveAllInteractables();
|
||||
// Interactable = interactable;
|
||||
// }
|
||||
//
|
||||
// public void RemoveAllInteractables()
|
||||
// {
|
||||
// Interactable = null;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// BaseSlot.cs
|
||||
public class Slot : ScriptableObject
|
||||
{
|
||||
public enum SlotType
|
||||
{
|
||||
Inventory,
|
||||
Toolbar,
|
||||
Equipment,
|
||||
Crafting,
|
||||
Box,
|
||||
Shop,
|
||||
Quest
|
||||
}
|
||||
|
||||
public GameItem item;
|
||||
public int quantity;
|
||||
public int slotId = -1;
|
||||
public bool isLocked;
|
||||
public SlotType slotType;
|
||||
public List<GameItem.ItemType> allowedItemTypes = new();
|
||||
public List<EquipmentItem.Slot> allowedEquipmentSlots = new();
|
||||
|
||||
public bool isSelected;
|
||||
|
||||
public Slot()
|
||||
{
|
||||
item = null;
|
||||
quantity = 0;
|
||||
isLocked = false;
|
||||
}
|
||||
|
||||
public virtual void Initialize(GameItem gameItem, int qty)
|
||||
{
|
||||
item = gameItem;
|
||||
quantity = qty;
|
||||
}
|
||||
|
||||
public virtual void AssignGameItem(GameItem gameItem, int qty = 1)
|
||||
{
|
||||
item = gameItem;
|
||||
quantity = qty;
|
||||
}
|
||||
|
||||
public virtual void AddQuantity(int amount)
|
||||
{
|
||||
quantity += amount;
|
||||
}
|
||||
|
||||
public virtual void RemoveQuantity(int amount)
|
||||
{
|
||||
quantity -= amount;
|
||||
}
|
||||
|
||||
public virtual void SetQuantity(int amount)
|
||||
{
|
||||
quantity = amount;
|
||||
}
|
||||
|
||||
public virtual bool IsEmpty()
|
||||
{
|
||||
return item == null;
|
||||
}
|
||||
|
||||
public virtual Sprite GetIcon()
|
||||
{
|
||||
return item != null ? item.icon : null;
|
||||
}
|
||||
|
||||
public virtual string GetItemName()
|
||||
{
|
||||
return item != null ? item.itemName : string.Empty;
|
||||
}
|
||||
|
||||
public virtual float GetItemValue()
|
||||
{
|
||||
return item != null ? item.itemValue : 0f;
|
||||
}
|
||||
|
||||
public bool IsSlotType<T>() where T : Slot
|
||||
{
|
||||
return this is T;
|
||||
}
|
||||
|
||||
public void SetSlotType(SlotType type)
|
||||
{
|
||||
slotType = type;
|
||||
}
|
||||
|
||||
public void SetSlotId(int id)
|
||||
{
|
||||
slotId = id;
|
||||
}
|
||||
|
||||
public void SetLocked(bool locked)
|
||||
{
|
||||
isLocked = locked;
|
||||
}
|
||||
|
||||
public void SetAllowedItemTypes(List<GameItem.ItemType> types)
|
||||
{
|
||||
allowedItemTypes = types;
|
||||
}
|
||||
|
||||
public void AddAllowedItemType(GameItem.ItemType type)
|
||||
{
|
||||
allowedItemTypes.Add(type);
|
||||
}
|
||||
|
||||
public void RemoveAllowedItemType(GameItem.ItemType type)
|
||||
{
|
||||
allowedItemTypes.Remove(type);
|
||||
}
|
||||
|
||||
public bool IsAllowedItemType(GameItem.ItemType type)
|
||||
{
|
||||
return allowedItemTypes.Contains(type);
|
||||
}
|
||||
|
||||
|
||||
public void ClearAllowedItemTypes()
|
||||
{
|
||||
allowedItemTypes.Clear();
|
||||
}
|
||||
|
||||
public List<GameItem.ItemType> GetAllowedItemTypes()
|
||||
{
|
||||
return allowedItemTypes;
|
||||
}
|
||||
|
||||
public void ClearSlot()
|
||||
{
|
||||
item = null;
|
||||
quantity = 0;
|
||||
}
|
||||
|
||||
public bool IsAllowedItemTypes(GameItem.ItemType type)
|
||||
{
|
||||
var isAllowed = false;
|
||||
Debug.Log("Checking allowed item types");
|
||||
Debug.Log("Allowed item types: " + allowedItemTypes + " / " + type);
|
||||
// pretty print list
|
||||
foreach (var allowedItemType in allowedItemTypes)
|
||||
{
|
||||
Debug.Log("-- allowed" + allowedItemType);
|
||||
if (allowedItemType == type)
|
||||
{
|
||||
Debug.Log("Item type is allowed in slot: " + type);
|
||||
isAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isAllowed;
|
||||
}
|
||||
|
||||
public void SetAllowedEquipmentSlots(List<EquipmentItem.Slot> slots)
|
||||
{
|
||||
allowedEquipmentSlots = slots;
|
||||
}
|
||||
|
||||
public void AddAllowedEquipmentSlot(EquipmentItem.Slot slot)
|
||||
{
|
||||
allowedEquipmentSlots.Add(slot);
|
||||
}
|
||||
|
||||
public void RemoveAllowedEquipmentSlot(EquipmentItem.Slot slot)
|
||||
{
|
||||
allowedEquipmentSlots.Remove(slot);
|
||||
}
|
||||
|
||||
public bool IsAllowedEquipmentSlot(EquipmentItem.Slot slot)
|
||||
{
|
||||
// if list is null, then all slots are allowed
|
||||
if (allowedEquipmentSlots.Count == 0) return true;
|
||||
|
||||
var isAllowed = false;
|
||||
Debug.Log("Checking allowed item types");
|
||||
Debug.Log("Allowed item types: " + allowedEquipmentSlots + " / " + slot);
|
||||
// pretty print list
|
||||
foreach (var allowedEquipmentSlot in allowedEquipmentSlots)
|
||||
{
|
||||
Debug.Log("-- allowed" + allowedEquipmentSlots);
|
||||
if (allowedEquipmentSlot == slot)
|
||||
{
|
||||
Debug.Log("Item type is allowed in slot: " + slot);
|
||||
isAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isAllowed;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,244 @@
|
|||
using System.Collections.Generic;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
// BaseSlot.cs
|
||||
namespace Data.ScriptableObjects.UI
|
||||
{
|
||||
public class SlotSo : ScriptableObject
|
||||
{
|
||||
public enum SlotType
|
||||
{
|
||||
Inventory,
|
||||
Toolbar,
|
||||
Equipment,
|
||||
Crafting,
|
||||
Box,
|
||||
Shop,
|
||||
Quest
|
||||
}
|
||||
|
||||
public int position = -1;
|
||||
public bool isLocked;
|
||||
public SlotType slotType;
|
||||
public List<EquipmentSlot> allowedEquipmentSlots = new();
|
||||
|
||||
public bool isSelected;
|
||||
|
||||
public int id;
|
||||
public List<ItemType> allowedItemTypes = new();
|
||||
|
||||
public GameItem item;
|
||||
|
||||
public SlotSo()
|
||||
{
|
||||
item = null;
|
||||
isLocked = false;
|
||||
}
|
||||
|
||||
public SlotType GetSlotType()
|
||||
{
|
||||
return slotType;
|
||||
}
|
||||
|
||||
public GameItem GetItem()
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
public int GetPositionId()
|
||||
{
|
||||
return position;
|
||||
}
|
||||
|
||||
|
||||
public virtual void Initialize(GameItem gameItem, int qty)
|
||||
{
|
||||
item = gameItem;
|
||||
}
|
||||
|
||||
public virtual void AssignGameItem(GameItem gameItem, int qty = 1)
|
||||
{
|
||||
item = gameItem;
|
||||
item.Quantity = qty;
|
||||
}
|
||||
|
||||
public virtual void AddQuantity(int amount)
|
||||
{
|
||||
item.Quantity += amount;
|
||||
}
|
||||
|
||||
public virtual void RemoveQuantity(int amount)
|
||||
{
|
||||
item.Quantity -= amount;
|
||||
}
|
||||
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public virtual void SetQuantity(int amount)
|
||||
{
|
||||
item.Quantity = amount;
|
||||
}
|
||||
|
||||
public virtual bool IsEmpty()
|
||||
{
|
||||
return item == null;
|
||||
}
|
||||
|
||||
public virtual Sprite GetIcon()
|
||||
{
|
||||
return item != null ? item.Icon : null;
|
||||
}
|
||||
|
||||
public virtual string GetItemName()
|
||||
{
|
||||
return item != null ? item.ItemName : string.Empty;
|
||||
}
|
||||
|
||||
public virtual float GetItemValue()
|
||||
{
|
||||
return item != null ? item.ItemValue : 0f;
|
||||
}
|
||||
|
||||
public bool IsSlotType<T>() where T : SlotSo
|
||||
{
|
||||
return this is T;
|
||||
}
|
||||
|
||||
public void SetSlotType(SlotType type)
|
||||
{
|
||||
slotType = type;
|
||||
}
|
||||
|
||||
public void SetSlotId(int newId)
|
||||
{
|
||||
id = newId;
|
||||
}
|
||||
|
||||
public void SetLocked(bool locked)
|
||||
{
|
||||
isLocked = locked;
|
||||
}
|
||||
|
||||
public void SetAllowedItemTypes(List<ItemType> types)
|
||||
{
|
||||
allowedItemTypes = types;
|
||||
}
|
||||
|
||||
public void AddAllowedItemType(ItemType type)
|
||||
{
|
||||
allowedItemTypes.Add(type);
|
||||
}
|
||||
|
||||
public void RemoveAllowedItemType(ItemType type)
|
||||
{
|
||||
allowedItemTypes.Remove(type);
|
||||
}
|
||||
|
||||
public bool IsAllowedItemType(ItemType type)
|
||||
{
|
||||
return allowedItemTypes.Contains(type);
|
||||
}
|
||||
|
||||
|
||||
public void ClearAllowedItemTypes()
|
||||
{
|
||||
allowedItemTypes.Clear();
|
||||
}
|
||||
|
||||
public List<ItemType> GetAllowedItemTypes()
|
||||
{
|
||||
return allowedItemTypes;
|
||||
}
|
||||
|
||||
public void ClearSlot()
|
||||
{
|
||||
item = null;
|
||||
}
|
||||
|
||||
public bool IsAllowedItemTypes(ItemType type)
|
||||
{
|
||||
var isAllowed = false;
|
||||
Debug.Log("Checking allowed item types");
|
||||
Debug.Log("Allowed item types: " + allowedItemTypes + " / " + type);
|
||||
// pretty print list
|
||||
foreach (var allowedItemType in allowedItemTypes)
|
||||
{
|
||||
Debug.Log("-- allowed" + allowedItemType);
|
||||
if (allowedItemType == type)
|
||||
{
|
||||
Debug.Log("Item type is allowed in slot: " + type);
|
||||
isAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isAllowed;
|
||||
}
|
||||
|
||||
public void SetAllowedEquipmentSlots(List<EquipmentSlot> slots)
|
||||
{
|
||||
allowedEquipmentSlots = slots;
|
||||
}
|
||||
|
||||
public void AddAllowedEquipmentSlot(EquipmentSlot slot)
|
||||
{
|
||||
allowedEquipmentSlots.Add(slot);
|
||||
}
|
||||
|
||||
public void RemoveAllowedEquipmentSlot(EquipmentSlot slot)
|
||||
{
|
||||
allowedEquipmentSlots.Remove(slot);
|
||||
}
|
||||
|
||||
public bool IsAllowedEquipmentSlot(EquipmentSlot slot)
|
||||
{
|
||||
// if list is null, then all slots are allowed
|
||||
if (allowedEquipmentSlots.Count == 0) return true;
|
||||
|
||||
var isAllowed = false;
|
||||
Debug.Log("Checking allowed item types");
|
||||
Debug.Log("Allowed item types: " + allowedEquipmentSlots + " / " + slot);
|
||||
// pretty print list
|
||||
foreach (var allowedEquipmentSlot in allowedEquipmentSlots)
|
||||
{
|
||||
Debug.Log("-- allowed" + allowedEquipmentSlots);
|
||||
if (allowedEquipmentSlot == slot)
|
||||
{
|
||||
Debug.Log("Item type is allowed in slot: " + slot);
|
||||
isAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isAllowed;
|
||||
}
|
||||
|
||||
|
||||
public void SetPosition(int i)
|
||||
{
|
||||
position = i;
|
||||
}
|
||||
|
||||
public void SetItem(GameItem gameItem)
|
||||
{
|
||||
item = gameItem;
|
||||
}
|
||||
|
||||
public int GetSlotId()
|
||||
{
|
||||
return position;
|
||||
}
|
||||
|
||||
public void SetId(int i)
|
||||
{
|
||||
id = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,129 +1,106 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using Types.Items;
|
||||
using Types.UI;
|
||||
using UnityEngine;
|
||||
|
||||
// BaseSlot.cs
|
||||
[CreateAssetMenu(fileName = "BoxInteractable", menuName = "Game Data/Farming/Box Interactable")]
|
||||
public class BoxInteractable : Interactable
|
||||
namespace Data.ScriptableObjects.World
|
||||
{
|
||||
public Sprite openBoxSprite;
|
||||
public Sprite closedBoxSprite;
|
||||
|
||||
public readonly Dictionary<int, Slot> Slots = new();
|
||||
|
||||
public BoxInteractable()
|
||||
[CreateAssetMenu(fileName = "BoxInteractable", menuName = "Game Data/Farming/Box Interactable")]
|
||||
public class BoxInteractable : Interactable
|
||||
{
|
||||
type = InteractableType.Box;
|
||||
}
|
||||
public Sprite openBoxSprite;
|
||||
public Sprite closedBoxSprite;
|
||||
|
||||
public Sprite display { get; set; }
|
||||
public int id { get; set; }
|
||||
public float interactRange { get; set; }
|
||||
public string objectName { get; set; }
|
||||
public Vector2Int size { get; set; }
|
||||
public InteractableType type { get; set; }
|
||||
public ToolItem.ToolType[] validToolTypes { get; set; }
|
||||
public readonly Dictionary<int, GameSlot> Slots = new();
|
||||
|
||||
public void OnEnter2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Box OnEnter2D");
|
||||
}
|
||||
public BoxInteractable()
|
||||
{
|
||||
type = InteractableType.Box;
|
||||
}
|
||||
|
||||
public void OnExit2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Box OnExit2D");
|
||||
}
|
||||
public new void OnEnter2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Box OnEnter2D");
|
||||
}
|
||||
|
||||
public bool IsPlayerInInteractRange(Vector2 playerPosition, Vector2 itemPosition)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public new void OnExit2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Box OnExit2D");
|
||||
}
|
||||
|
||||
public bool IsToolRequired()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void OnInteract()
|
||||
{
|
||||
Debug.Log("Box OnInteract");
|
||||
}
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Box Interact");
|
||||
}
|
||||
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Box Interact");
|
||||
}
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Box Initialize");
|
||||
}
|
||||
|
||||
public void OnDayChange()
|
||||
{
|
||||
// do nothing it's a box!
|
||||
}
|
||||
public GameItem GetItemFromSlot(int slotId)
|
||||
{
|
||||
return Slots.TryGetValue(slotId, out var slot) ? slot.Item : null;
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Box Initialize");
|
||||
}
|
||||
public void RemoveItemFromSlot(int slotId)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
slot.Item = null;
|
||||
else
|
||||
Debug.LogWarning("Slot not found: " + slotId);
|
||||
}
|
||||
|
||||
public GameItem GetItemFromSlot(int slotId)
|
||||
{
|
||||
return Slots.TryGetValue(slotId, out var slot) ? slot.item : null;
|
||||
}
|
||||
public void AddItemToOpenSlot(GameItem item)
|
||||
{
|
||||
foreach (var slot in Slots.Values)
|
||||
if (slot.IsEmpty())
|
||||
{
|
||||
slot.Item = item;
|
||||
Debug.Log("Added item to slot: " + slot.Position + " / " + item.ItemName + " / " + item.Quantity);
|
||||
return;
|
||||
}
|
||||
|
||||
public void RemoveItemFromSlot(int slotId)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
slot.item = null;
|
||||
else
|
||||
Debug.LogWarning("Slot not found: " + slotId);
|
||||
}
|
||||
Debug.LogWarning("No empty slots available to add item: " + item.ItemName);
|
||||
}
|
||||
|
||||
public void AddItemToOpenSlot(GameItem item)
|
||||
{
|
||||
foreach (var slot in Slots.Values)
|
||||
if (slot.IsEmpty())
|
||||
{
|
||||
slot.item = item;
|
||||
Debug.Log("Added item to slot: " + slot.slotId + " / " + item.itemName + " / " + item.quantity);
|
||||
return;
|
||||
}
|
||||
public void AddItemToSlot(GameItem item, int slotId)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
slot.Item = item;
|
||||
else
|
||||
Debug.LogWarning("Slot not found: " + slotId);
|
||||
}
|
||||
|
||||
Debug.LogWarning("No empty slots available to add item: " + item.itemName);
|
||||
}
|
||||
public void SwapItems(int slotId1, int slotId2)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId1, out var slot1) &&
|
||||
Slots.TryGetValue(slotId2, out var slot2))
|
||||
(slot1.Item, slot2.Item) = (slot2.Item, slot1.Item);
|
||||
}
|
||||
|
||||
public void AddItemToSlot(GameItem item, int slotId)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
slot.item = item;
|
||||
else
|
||||
Debug.LogWarning("Slot not found: " + slotId);
|
||||
}
|
||||
public void RemoveSlot(int slotId)
|
||||
{
|
||||
Slots.Remove(slotId);
|
||||
}
|
||||
|
||||
public void SwapItems(int slotId1, int slotId2)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId1, out var slot1) &&
|
||||
Slots.TryGetValue(slotId2, out var slot2))
|
||||
(slot1.item, slot2.item) = (slot2.item, slot1.item);
|
||||
}
|
||||
public void AddSlot(GameSlot gameSlot)
|
||||
{
|
||||
Slots[gameSlot.Position] = gameSlot;
|
||||
}
|
||||
|
||||
public void RemoveSlot(int slotId)
|
||||
{
|
||||
Slots.Remove(slotId);
|
||||
}
|
||||
public GameSlot GetSlot(int slotId)
|
||||
{
|
||||
return Slots.GetValueOrDefault(slotId, null);
|
||||
}
|
||||
|
||||
public void AddSlot(Slot slot)
|
||||
{
|
||||
Slots[slot.slotId] = slot;
|
||||
}
|
||||
|
||||
public Slot GetSlot(int slotId)
|
||||
{
|
||||
return Slots.GetValueOrDefault(slotId, null);
|
||||
}
|
||||
|
||||
public Slot GetValueOrDefault(int slotId, object o)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
return slot;
|
||||
return null;
|
||||
public GameSlot GetValueOrDefault(int slotId, object o)
|
||||
{
|
||||
if (Slots.TryGetValue(slotId, out var slot))
|
||||
return slot;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,136 +1,126 @@
|
|||
using System.Linq;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
// This is a base class for all crops in the game. It is for the actual crop in the ground.
|
||||
// It is not for the seeds that are planted or the harvested crops. (CropItem)
|
||||
[CreateAssetMenu(fileName = "CropInteractable", menuName = "Game Data/Farming/Crop Interactable")]
|
||||
public class CropInteractable : Interactable
|
||||
namespace Data.ScriptableObjects.World
|
||||
{
|
||||
// crop item
|
||||
public CropItem cropItem;
|
||||
public int currentGrowthStage;
|
||||
|
||||
// will need to change the sprite depending on the growth stage
|
||||
public Sprite[] growthSprites;
|
||||
public int growthStages;
|
||||
|
||||
public bool isWatered;
|
||||
|
||||
public bool lightRequirement;
|
||||
|
||||
public SeedItem seedItem;
|
||||
|
||||
// 1 = daily, 2 = every other day, 3 = every third day, etc. ?
|
||||
public float waterRequirement;
|
||||
|
||||
// crop properties
|
||||
public int yield;
|
||||
|
||||
public CropInteractable()
|
||||
[CreateAssetMenu(fileName = "CropInteractable", menuName = "Game Data/Farming/Crop Interactable")]
|
||||
public class CropInteractable : Interactable
|
||||
{
|
||||
type = InteractableType.Crop;
|
||||
}
|
||||
public int currentGrowthStage;
|
||||
|
||||
public new void Awake()
|
||||
{
|
||||
id = GetInstanceID();
|
||||
currentGrowthStage = 1;
|
||||
isWatered = false;
|
||||
type = InteractableType.Crop;
|
||||
objectName = cropItem.itemName + " Crop";
|
||||
}
|
||||
// will need to change the sprite depending on the growth stage
|
||||
public Sprite[] growthSprites;
|
||||
public int growthStages;
|
||||
|
||||
public bool isWatered;
|
||||
|
||||
public bool lightRequirement;
|
||||
|
||||
// 1 = daily, 2 = every other day, 3 = every third day, etc. ?
|
||||
public float waterRequirement;
|
||||
|
||||
// crop properties
|
||||
public int yield;
|
||||
|
||||
// crop item
|
||||
public CropItem CropItem;
|
||||
|
||||
public SeedItem SeedItem;
|
||||
|
||||
public CropInteractable()
|
||||
{
|
||||
type = InteractableType.Crop;
|
||||
}
|
||||
|
||||
public new void Awake()
|
||||
{
|
||||
id = GetInstanceID();
|
||||
currentGrowthStage = 1;
|
||||
isWatered = false;
|
||||
type = InteractableType.Crop;
|
||||
// objectName = CropItem.ItemName + " Crop";
|
||||
}
|
||||
|
||||
/*
|
||||
public bool IsPlayerInInteractRange(Vector2 playerPosition, Vector2 itemPosition)
|
||||
{
|
||||
return Vector2.Distance(playerPosition, itemPosition) < interactRange;
|
||||
}
|
||||
}*/
|
||||
|
||||
public bool IsToolRequired()
|
||||
{
|
||||
// if there are not valid tools
|
||||
if (validToolTypes == null || validToolTypes.Length == 0)
|
||||
return false;
|
||||
// public bool IsToolRequired()
|
||||
// {
|
||||
// // if there are not valid tools
|
||||
// if (validToolTypes == null || validToolTypes.Length == 0)
|
||||
// return false;
|
||||
//
|
||||
// // also if one of the valid tool types is none then we don need a tool
|
||||
// return !validToolTypes.Contains(ToolItem.ToolType.None);
|
||||
// }
|
||||
|
||||
// also if one of the valid tool types is none then we dont need a tool
|
||||
return !validToolTypes.Contains(ToolItem.ToolType.None);
|
||||
}
|
||||
|
||||
public void OnEnter2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Crop OnEnter2D");
|
||||
}
|
||||
|
||||
public void OnExit2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Crop OnExit2D");
|
||||
}
|
||||
|
||||
public new void OnDayChange()
|
||||
{
|
||||
Debug.Log("Crop OnDayChange TRIGGERED");
|
||||
|
||||
Debug.Log("Crop: Name: " + cropItem.itemName + " Current growth stage: " + currentGrowthStage +
|
||||
" Growth Stages: " +
|
||||
growthStages);
|
||||
// if (isWatered) {
|
||||
// todo: add in water check for growth.
|
||||
|
||||
currentGrowthStage++;
|
||||
if (currentGrowthStage >= growthStages)
|
||||
currentGrowthStage = growthStages;
|
||||
|
||||
isWatered = false;
|
||||
}
|
||||
|
||||
public new void OnInteract()
|
||||
{
|
||||
Debug.Log("Crop OnInteract");
|
||||
if (IsHarvestable())
|
||||
// harvest crop
|
||||
Debug.Log("Harvesting crop");
|
||||
}
|
||||
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Crop Interact");
|
||||
// 0. check if its ready to be harvested.
|
||||
// 1. check to see if the player is in range to interact
|
||||
// 2. check to see if this crop requires a tool and
|
||||
// 2. check to see if the player has the correct tool equipped if required
|
||||
|
||||
// if the tool is a pickaxe - destroy the crop
|
||||
// watering can - water the tile/crop
|
||||
|
||||
if (IsHarvestable())
|
||||
// harvest crop
|
||||
Debug.Log("Harvesting crop");
|
||||
|
||||
|
||||
else
|
||||
Debug.Log("Crop is not ready to harvest");
|
||||
}
|
||||
|
||||
|
||||
public bool IsHarvestable()
|
||||
{
|
||||
// if crop has no values
|
||||
if (currentGrowthStage < growthStages)
|
||||
public new void OnDayChange()
|
||||
{
|
||||
Debug.Log("Crop is not ready to harvest");
|
||||
return false;
|
||||
Debug.Log("Crop OnDayChange TRIGGERED");
|
||||
|
||||
Debug.Log("Crop: Name: " + CropItem.ItemName + " Current growth stage: " + currentGrowthStage +
|
||||
" Growth Stages: " +
|
||||
growthStages);
|
||||
// if (isWatered) {
|
||||
// todo: add in water check for growth.
|
||||
|
||||
currentGrowthStage++;
|
||||
if (currentGrowthStage >= growthStages)
|
||||
currentGrowthStage = growthStages;
|
||||
|
||||
isWatered = false;
|
||||
}
|
||||
|
||||
Debug.Log("Crop is ready to harvest");
|
||||
return true;
|
||||
}
|
||||
public new void OnInteract()
|
||||
{
|
||||
Debug.Log("Crop OnInteract");
|
||||
if (IsHarvestable())
|
||||
// harvest crop
|
||||
Debug.Log("Harvesting crop");
|
||||
}
|
||||
|
||||
public void SetCropItem(CropItem item)
|
||||
{
|
||||
cropItem = item;
|
||||
}
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Crop Interact");
|
||||
// 0. check if it's ready to be harvested.
|
||||
// 1. check to see if the player is in range to interact
|
||||
// 2. check to see if this crop requires a tool and
|
||||
// 2. check to see if the player has the correct tool equipped if required
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Crop Initialize");
|
||||
// if the tool is a pickaxe - destroy the crop
|
||||
// watering can - water the tile/crop
|
||||
|
||||
// harvest crop
|
||||
Debug.Log(IsHarvestable() ? "Harvesting crop" : "Crop is not ready to harvest");
|
||||
}
|
||||
|
||||
|
||||
public bool IsHarvestable()
|
||||
{
|
||||
// if crop has no values
|
||||
if (currentGrowthStage < growthStages)
|
||||
{
|
||||
Debug.Log("Crop is not ready to harvest");
|
||||
return false;
|
||||
}
|
||||
|
||||
Debug.Log("Crop is ready to harvest");
|
||||
return true;
|
||||
}
|
||||
|
||||
public void SetCropItem(CropItem item)
|
||||
{
|
||||
CropItem = item;
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Crop Initialize");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
public enum InteractableType
|
||||
|
|
@ -34,7 +35,7 @@ public abstract class Interactable : ScriptableObject, IInteractable
|
|||
public Sprite display;
|
||||
public float interactRange;
|
||||
public Vector2Int size;
|
||||
public ToolItem.ToolType[] validToolTypes;
|
||||
public ToolType[] validToolTypes;
|
||||
|
||||
public int id;
|
||||
public string objectName;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "RockInteractable", menuName = "Game Data/Farming/Rock Interactable")]
|
||||
|
|
@ -22,50 +22,11 @@ public class RockInteractable : Interactable
|
|||
|
||||
public List<ResourceItem> ContainsItems { get; set; }
|
||||
|
||||
public Sprite display { get; set; }
|
||||
public int id { get; set; }
|
||||
public float interactRange { get; set; }
|
||||
public string objectName { get; set; }
|
||||
public Vector2Int size { get; set; }
|
||||
public InteractableType type { get; set; }
|
||||
public ToolItem.ToolType[] validToolTypes { get; set; }
|
||||
|
||||
public void OnEnter2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Rock OnEnter2D");
|
||||
}
|
||||
|
||||
public void OnExit2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Rock OnExit2D");
|
||||
}
|
||||
|
||||
public bool IsPlayerInInteractRange(Vector2 playerPosition, Vector2 itemPosition)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool IsToolRequired()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void OnInteract()
|
||||
{
|
||||
Debug.Log("Rock OnInteract");
|
||||
}
|
||||
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Rock Interact");
|
||||
}
|
||||
|
||||
public void OnDayChange()
|
||||
{
|
||||
// do nothing it's a rock!
|
||||
//but may have to apply like weather effects on days with weather here at some point.
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Rock Initialize");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using Types.Items;
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "TreeInteractable", menuName = "Game Data/Farming/Tree Interactable")]
|
||||
|
|
@ -12,49 +12,11 @@ public class TreeInteractable : Interactable
|
|||
|
||||
public List<ResourceItem> ContainsItems { get; set; }
|
||||
|
||||
public Sprite display { get; set; }
|
||||
public int id { get; set; }
|
||||
public float interactRange { get; set; }
|
||||
public string objectName { get; set; }
|
||||
public Vector2Int size { get; set; }
|
||||
public InteractableType type { get; set; }
|
||||
public ToolItem.ToolType[] validToolTypes { get; set; }
|
||||
|
||||
public void OnEnter2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Rock OnEnter2D");
|
||||
}
|
||||
|
||||
public void OnExit2D(Collider2D collider)
|
||||
{
|
||||
Debug.Log("Rock OnExit2D");
|
||||
}
|
||||
|
||||
public bool IsPlayerInInteractRange(Vector2 playerPosition, Vector2 itemPosition)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool IsToolRequired()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void OnInteract()
|
||||
{
|
||||
Debug.Log("Rock OnInteract");
|
||||
}
|
||||
|
||||
public void Interact()
|
||||
{
|
||||
Debug.Log("Rock Interact");
|
||||
}
|
||||
|
||||
public void OnDayChange()
|
||||
{
|
||||
// check if the season changes. and if so we will update the tree sprite in the component.
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Debug.Log("Rock Initialize");
|
||||
|
|
|
|||
|
|
@ -13,12 +13,47 @@ MonoBehaviour:
|
|||
m_Name: DefaultPrefabObjects
|
||||
m_EditorClassIdentifier:
|
||||
_prefabs:
|
||||
- {fileID: 1155193144633609695, guid: d27075628330ae74082130fac9663ba3, type: 3}
|
||||
- {fileID: 7500446676508545717, guid: 59b693825ff89ae4b9e44b83dfd8995a, type: 3}
|
||||
- {fileID: -4658507409231842436, guid: 71d12b53bfe275a42b91a98a3e6e2f66, type: 3}
|
||||
- {fileID: 5186788049215247401, guid: 71d12b53bfe275a42b91a98a3e6e2f66, type: 3}
|
||||
- {fileID: 1155193144633609695, guid: 04359b8867a2d794aad6b521a16e8d21, type: 3}
|
||||
- {fileID: -2542377431188024441, guid: ec6b0b736b8df5645b048f732b88473e, type: 3}
|
||||
- {fileID: 3253055754781524931, guid: 84925f66541b72d48bff705463be621f, type: 3}
|
||||
- {fileID: 8475222101369129519, guid: 8cf33e8e99a9b0c4c8f29ff725650de6, type: 3}
|
||||
- {fileID: 4512293259955182956, guid: 44611030e61220d42ab7c37ba3c0ea92, type: 3}
|
||||
- {fileID: 4512293259955182956, guid: 0d6d0f48b03b17f49a6340103cd9b9d0, type: 3}
|
||||
- {fileID: 4512293259955182956, guid: f32d4c19de900e64cb73cedcb8ba6f70, type: 3}
|
||||
- {fileID: 4512293259955182956, guid: 300370bdf7819da41937e0beac65b32c, type: 3}
|
||||
- {fileID: 611616139817875448, guid: bf5f023b4017a5e41a9815ec5745df3d, type: 3}
|
||||
- {fileID: 960038795954186735, guid: e533a863fa8def34ca283ec1d5243014, type: 3}
|
||||
- {fileID: 6446530165902268640, guid: 36967284fc8c59c40a95435b6390db51, type: 3}
|
||||
- {fileID: -3616648114084473137, guid: ee71a745def8d014c8e81836330729b3, type: 3}
|
||||
- {fileID: -2822219780314917497, guid: 252af13842112624d8bc194e93a78e35, type: 3}
|
||||
- {fileID: -8366173737003584427, guid: 647d83bbe86d9d74e9e9a94da37a949c, type: 3}
|
||||
- {fileID: 2636165401579169696, guid: 1461ca6a3cdd3804581bfb1c79de75fd, type: 3}
|
||||
- {fileID: 6864996696300648344, guid: c6fec2bfa74ad724e8c78c6f671cc0c0, type: 3}
|
||||
- {fileID: 6204830877651421303, guid: c2933eea52e75de40894dfdf362ac41e, type: 3}
|
||||
- {fileID: 8054744169198205596, guid: 430e5f8edfd84cc4a9ed5f5f722f3492, type: 3}
|
||||
- {fileID: 3469224167990498062, guid: b35f8733666b3f94080f3206f72cc7da, type: 3}
|
||||
- {fileID: -3290984483482744629, guid: 4b4af1d064a2a24459708803b37a8066, type: 3}
|
||||
- {fileID: -1980267921705951265, guid: e4eb842213812184e91849dfa60a15aa, type: 3}
|
||||
- {fileID: -7083585525248896382, guid: 0276aa718e5566b409e6fe74ed33d7ed, type: 3}
|
||||
- {fileID: -6384908273091658543, guid: e8f7515b1498e234d94635d2debe5e0c, type: 3}
|
||||
- {fileID: -2972796654032770097, guid: f1d3b4ad67a9670408011a41b2cf72b0, type: 3}
|
||||
- {fileID: 7510286910302065789, guid: 05c5bc4bc1629d547a6a5a69604dbfbd, type: 3}
|
||||
- {fileID: 3751744365188801268, guid: ca75ed49dccea1742b3df0603eb27293, type: 3}
|
||||
- {fileID: -580013974325937750, guid: 681548384c8c59c49a8db26c600baad6, type: 3}
|
||||
- {fileID: 695218077827156125, guid: 76e922cce83129d4e91647f75ecefed9, type: 3}
|
||||
- {fileID: 4990843602345498263, guid: 150ba2480e8e45c419f1cd5815067513, type: 3}
|
||||
- {fileID: -3739330565798106166, guid: 906470fc20d85374da1237027127f35c, type: 3}
|
||||
- {fileID: -5496347672960475734, guid: 5f0a598726bf5c541bcc74b9086a6d4f, type: 3}
|
||||
- {fileID: -4785944454699635118, guid: bd8132315a9c40d468edb933d221c0c4, type: 3}
|
||||
- {fileID: -429663868210164051, guid: b8c2e507bd62be94ab06e410a520b71b, type: 3}
|
||||
- {fileID: -2385328952959754067, guid: 001fe229425281245a546d192bfa1698, type: 3}
|
||||
- {fileID: 4962757815481388645, guid: c345b1bb955c7e34aa46aeed29c6feb8, type: 3}
|
||||
- {fileID: -1612594746484104715, guid: f8e5224e0eba7634c8cc284a9b634b3b, type: 3}
|
||||
- {fileID: -6097145956325194350, guid: b643660447b57e648bd52c3e122d546d, type: 3}
|
||||
- {fileID: 4322585729150451501, guid: 733d42da3006a1e43ba6a765ade3b93b, type: 3}
|
||||
- {fileID: 4213625531542623294, guid: 0c321dfb07c988f448cf910b1313d41e, type: 3}
|
||||
- {fileID: 6800731336010693423, guid: 4aef1c124aea67e4984823585a50e265, type: 3}
|
||||
- {fileID: 8192566354860284824, guid: 6331b3542e64a564c81bc39cedf70c8d, type: 3}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ConfigurationData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Loaded>false</Loaded>
|
||||
<PrefabGenerator>
|
||||
<Enabled>true</Enabled>
|
||||
<LogToConsole>true</LogToConsole>
|
||||
<FullRebuild>true</FullRebuild>
|
||||
<SpawnableOnly>true</SpawnableOnly>
|
||||
<SaveChanges>true</SaveChanges>
|
||||
<DefaultPrefabObjectsPath>Assets\DefaultPrefabObjects.asset</DefaultPrefabObjectsPath>
|
||||
<SearchScope>0</SearchScope>
|
||||
<ExcludedFolders />
|
||||
<IncludedFolders />
|
||||
</PrefabGenerator>
|
||||
<CodeStripping>
|
||||
<IsBuilding>false</IsBuilding>
|
||||
<IsDevelopment>false</IsDevelopment>
|
||||
<IsHeadless>false</IsHeadless>
|
||||
<StripReleaseBuilds>false</StripReleaseBuilds>
|
||||
<StrippingType>0</StrippingType>
|
||||
</CodeStripping>
|
||||
</ConfigurationData>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 889db804274f0c84cac802959afe19e5
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -38,7 +38,6 @@ RenderSettings:
|
|||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_IndirectSpecularColor: {r: 0.44664782, g: 0.49649352, b: 0.57486135, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
|
|
@ -104,7 +103,7 @@ NavMeshSettings:
|
|||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
|
|
@ -117,7 +116,7 @@ NavMeshSettings:
|
|||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
buildHeightMesh: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
|
|
@ -148,9 +147,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 78153333}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!4 &78153335
|
||||
|
|
@ -160,13 +167,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 78153333}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1289693644}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &110068715
|
||||
GameObject:
|
||||
|
|
@ -266,6 +273,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 110068715}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -4.45, y: 1.5, z: 7.95}
|
||||
m_LocalScale: {x: 1, y: 1.85, z: 0.1}
|
||||
|
|
@ -274,7 +282,6 @@ Transform:
|
|||
- {fileID: 1625859526}
|
||||
- {fileID: 1289693644}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &110068721
|
||||
MonoBehaviour:
|
||||
|
|
@ -308,15 +315,19 @@ MonoBehaviour:
|
|||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 65535
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
_scenePathHash: 1588699107
|
||||
<SceneId>k__BackingField: 6823410710706878447
|
||||
<SceneId>k__BackingField: 1936351091
|
||||
<AssetPathHash>k__BackingField: 0
|
||||
--- !u!1 &293940165
|
||||
GameObject:
|
||||
|
|
@ -344,13 +355,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 293940165}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 3, z: -12}
|
||||
m_LocalScale: {x: 25, y: 5, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1760695700}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &293940167
|
||||
BoxCollider:
|
||||
|
|
@ -360,9 +371,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 293940165}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &293940168
|
||||
|
|
@ -425,6 +444,7 @@ GameObject:
|
|||
m_Component:
|
||||
- component: {fileID: 315136621}
|
||||
- component: {fileID: 315136620}
|
||||
- component: {fileID: 315136622}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
|
|
@ -501,14 +521,37 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 315136619}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.29130033, y: -0.654909, z: 0.30399895, w: 0.62755316}
|
||||
m_LocalPosition: {x: -5.9194202, y: 8.696499, z: 15.588365}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1845740120}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 49.800003, y: -92.44401, z: 0}
|
||||
--- !u!114 &315136622
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 315136619}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Version: 3
|
||||
m_UsePipelineSettings: 1
|
||||
m_AdditionalLightsShadowResolutionTier: 2
|
||||
m_LightLayerMask: 1
|
||||
m_RenderingLayers: 1
|
||||
m_CustomShadowLayers: 0
|
||||
m_ShadowLayerMask: 1
|
||||
m_ShadowRenderingLayers: 1
|
||||
m_LightCookieSize: {x: 1, y: 1}
|
||||
m_LightCookieOffset: {x: 0, y: 0}
|
||||
m_SoftShadowQuality: 0
|
||||
--- !u!1 &333123234
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -535,13 +578,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 333123234}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 12}
|
||||
m_LocalScale: {x: 25, y: 5, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1760695700}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &333123236
|
||||
BoxCollider:
|
||||
|
|
@ -551,9 +594,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 333123234}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &333123237
|
||||
|
|
@ -748,6 +799,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 374579912}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1.5, z: 8}
|
||||
m_LocalScale: {x: 1, y: 2, z: 0.1}
|
||||
|
|
@ -755,7 +807,6 @@ Transform:
|
|||
m_Children:
|
||||
- {fileID: 2042333235}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &374579919
|
||||
MonoBehaviour:
|
||||
|
|
@ -772,12 +823,9 @@ MonoBehaviour:
|
|||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 374579922}
|
||||
_networkObjectCache: {fileID: 374579922}
|
||||
_originalPrefab: {fileID: 5088285619167334560, guid: ad8f5b5504b971d42886f4f6fd087d90,
|
||||
type: 3}
|
||||
_rollbackPrefab: {fileID: 7134941405922954312, guid: 85cfddb33a414594490116dc8e2a91f4,
|
||||
type: 3}
|
||||
_textCanvasPrefab: {fileID: 6334056159345675334, guid: a7bbd13c7452746409efbaeae6a0d8e3,
|
||||
type: 3}
|
||||
_originalPrefab: {fileID: 5088285619167334560, guid: ad8f5b5504b971d42886f4f6fd087d90, type: 3}
|
||||
_rollbackPrefab: {fileID: 7134941405922954312, guid: 85cfddb33a414594490116dc8e2a91f4, type: 3}
|
||||
_textCanvasPrefab: {fileID: 6334056159345675334, guid: a7bbd13c7452746409efbaeae6a0d8e3, type: 3}
|
||||
--- !u!114 &374579921
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -833,15 +881,19 @@ MonoBehaviour:
|
|||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 65535
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
_scenePathHash: 1588699107
|
||||
<SceneId>k__BackingField: 6823410710584987682
|
||||
<SceneId>k__BackingField: 461274099
|
||||
<AssetPathHash>k__BackingField: 0
|
||||
--- !u!1 &485115532
|
||||
GameObject:
|
||||
|
|
@ -866,13 +918,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 485115532}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.014, z: 0.0242}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5670937365706158997}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &557728923
|
||||
GameObject:
|
||||
|
|
@ -899,13 +951,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 557728923}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1016939666208092860}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &557728925
|
||||
MonoBehaviour:
|
||||
|
|
@ -979,9 +1031,17 @@ Camera:
|
|||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_Iso: 200
|
||||
m_ShutterSpeed: 0.005
|
||||
m_Aperture: 16
|
||||
m_FocusDistance: 10
|
||||
m_FocalLength: 50
|
||||
m_BladeCount: 5
|
||||
m_Curvature: {x: 2, y: 11}
|
||||
m_BarrelClipping: 0.25
|
||||
m_Anamorphism: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
|
|
@ -1015,6 +1075,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1136385240}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 2, z: -2}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
|
|
@ -1022,7 +1083,6 @@ Transform:
|
|||
m_Children:
|
||||
- {fileID: 5670937365706158997}
|
||||
m_Father: {fileID: 1845740120}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1136385244
|
||||
MonoBehaviour:
|
||||
|
|
@ -1062,6 +1122,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1289693643}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.672, z: 0}
|
||||
m_LocalScale: {x: 0.35, y: 0.35, z: 1}
|
||||
|
|
@ -1069,7 +1130,6 @@ Transform:
|
|||
m_Children:
|
||||
- {fileID: 78153335}
|
||||
m_Father: {fileID: 110068720}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1289693645
|
||||
MeshRenderer:
|
||||
|
|
@ -1128,7 +1188,7 @@ LightingSettings:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Settings.lighting
|
||||
serializedVersion: 4
|
||||
serializedVersion: 6
|
||||
m_GIWorkflowMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 1
|
||||
|
|
@ -1162,13 +1222,13 @@ LightingSettings:
|
|||
m_PVRCulling: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVRSampleCount: 512
|
||||
m_PVREnvironmentSampleCount: 512
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_PVRBounces: 2
|
||||
m_PVRMinBounces: 2
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVREnvironmentImportanceSampling: 0
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
|
|
@ -1183,6 +1243,8 @@ LightingSettings:
|
|||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_PVRTiledBaking: 0
|
||||
m_NumRaysToShootPerTexel: -1
|
||||
m_RespectSceneVisibilityWhenBakingGI: 0
|
||||
--- !u!1 &1469142509
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -1209,13 +1271,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1469142509}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -12, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 5, z: 25}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1760695700}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &1469142511
|
||||
BoxCollider:
|
||||
|
|
@ -1225,9 +1287,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1469142509}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1469142512
|
||||
|
|
@ -1306,13 +1376,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1499550446}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 25, y: 1, z: 25}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1760695700}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &1499550448
|
||||
BoxCollider:
|
||||
|
|
@ -1322,9 +1392,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1499550446}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1499550449
|
||||
|
|
@ -1408,7 +1486,6 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1885986765}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
|
|
@ -1477,13 +1554,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1625859525}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 110068720}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &1625859527
|
||||
BoxCollider:
|
||||
|
|
@ -1493,9 +1570,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1625859525}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1670963065
|
||||
|
|
@ -1524,13 +1609,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1670963065}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 12, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 5, z: 25}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1760695700}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &1670963067
|
||||
BoxCollider:
|
||||
|
|
@ -1540,9 +1625,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1670963065}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1670963068
|
||||
|
|
@ -1626,7 +1719,6 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1885986765}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
|
|
@ -1694,6 +1786,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1760695699}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
|
|
@ -1705,7 +1798,6 @@ Transform:
|
|||
- {fileID: 1469142510}
|
||||
- {fileID: 1670963066}
|
||||
m_Father: {fileID: 1845740120}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1845740119
|
||||
GameObject:
|
||||
|
|
@ -1730,6 +1822,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1845740119}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
|
|
@ -1741,7 +1834,6 @@ Transform:
|
|||
- {fileID: 315136621}
|
||||
- {fileID: 1760695700}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1885986761
|
||||
GameObject:
|
||||
|
|
@ -1821,6 +1913,7 @@ Canvas:
|
|||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 0
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
|
|
@ -1839,7 +1932,6 @@ RectTransform:
|
|||
- {fileID: 1508050968}
|
||||
- {fileID: 1697504690}
|
||||
m_Father: {fileID: 1845740120}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
|
|
@ -1906,13 +1998,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1898334452}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -1.3194205, y: 1.8064992, z: 15.788364}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1845740120}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2042333234
|
||||
GameObject:
|
||||
|
|
@ -1938,13 +2030,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2042333234}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 374579917}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &2042333236
|
||||
BoxCollider:
|
||||
|
|
@ -1954,9 +2046,17 @@ BoxCollider:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2042333234}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!224 &950570838981703716
|
||||
|
|
@ -1972,7 +2072,6 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6172005702412834340}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
|
|
@ -1991,8 +2090,7 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 211a9f6ec51ddc14f908f5acc0cd0423, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_playerPrefab: {fileID: 8475222101369129519, guid: 8cf33e8e99a9b0c4c8f29ff725650de6,
|
||||
type: 3}
|
||||
_playerPrefab: {fileID: 8475222101369129519, guid: 8cf33e8e99a9b0c4c8f29ff725650de6, type: 3}
|
||||
_addToDefaultScene: 1
|
||||
Spawns: []
|
||||
--- !u!4 &1016939666208092860
|
||||
|
|
@ -2002,6 +2100,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1016939666208092862}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
|
|
@ -2010,7 +2109,6 @@ Transform:
|
|||
- {fileID: 6172005702803148417}
|
||||
- {fileID: 557728924}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1016939666208092862
|
||||
GameObject:
|
||||
|
|
@ -2053,7 +2151,7 @@ MonoBehaviour:
|
|||
_objectPool: {fileID: 0}
|
||||
_persistence: 0
|
||||
_logging: {fileID: 0}
|
||||
_spawnablePrefabs: {fileID: 11400000, guid: d9693011b7416444aa06cafe900e23c0, type: 2}
|
||||
_spawnablePrefabs: {fileID: 11400000, guid: a7ef5fc3ee6319145beff994a165b07e, type: 2}
|
||||
--- !u!114 &1016939666208092864
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -2159,7 +2257,6 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6172005702262170532}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
|
|
@ -2377,13 +2474,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5670937365705666481}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5670937365706158997}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!4 &5670937365706158995
|
||||
Transform:
|
||||
|
|
@ -2392,13 +2489,13 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5670937365705666483}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5670937365706158997}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!4 &5670937365706158997
|
||||
Transform:
|
||||
|
|
@ -2407,6 +2504,7 @@ Transform:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5670937365705666485}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0.25, y: -0.25, z: 0.55}
|
||||
m_LocalScale: {x: 5, y: 5, z: 6}
|
||||
|
|
@ -2416,7 +2514,6 @@ Transform:
|
|||
- {fileID: 5670937365706158995}
|
||||
- {fileID: 485115533}
|
||||
m_Father: {fileID: 1136385243}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!224 &6172005702262170532
|
||||
RectTransform:
|
||||
|
|
@ -2432,7 +2529,6 @@ RectTransform:
|
|||
m_Children:
|
||||
- {fileID: 1695578100518147014}
|
||||
m_Father: {fileID: 6172005702803148417}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
|
|
@ -2566,7 +2662,6 @@ RectTransform:
|
|||
m_Children:
|
||||
- {fileID: 950570838981703716}
|
||||
m_Father: {fileID: 6172005702803148417}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
|
|
@ -2705,6 +2800,7 @@ Canvas:
|
|||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 0
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
|
|
@ -2723,7 +2819,6 @@ RectTransform:
|
|||
- {fileID: 6172005702412834340}
|
||||
- {fileID: 6172005702262170532}
|
||||
m_Father: {fileID: 1016939666208092860}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
|
|
@ -2868,3 +2963,11 @@ MonoBehaviour:
|
|||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 1016939666208092860}
|
||||
- {fileID: 110068720}
|
||||
- {fileID: 374579917}
|
||||
- {fileID: 1845740120}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ ScriptedImporter:
|
|||
importerVersion: 28
|
||||
pixelsPerUnit: 100
|
||||
edgesPerEllipse: 32
|
||||
numberOfObjectsImported: 2
|
||||
numberOfObjectsImported: 3
|
||||
tilesAsObjects: 0
|
||||
sortingMode: 0
|
||||
isIsometric: 0
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue