feature: multiple players connecting and working in sync movement

This commit is contained in:
unfaiyted 2024-07-08 17:40:51 -05:00
parent 13b33c3d9d
commit ab2255db29
321 changed files with 112012 additions and 34793 deletions

View File

@ -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"/>

View File

@ -11,5 +11,5 @@ ScriptedImporter:
importerVersion: 16
pixelsPerUnit: 32
edgesPerEllipse: 32
numberOfObjectsImported: 2540
numberOfObjectsImported: 2541
colliderType: 0

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 30fc42f2cb50b824a873f39660da4d25
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 53d6c2bae7c54ea4bb76be08ec62cb81
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 71c5e5231d33835438032cc8f41bc885
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 7fdc31061c6ec0d4391d5dfa159ee1b4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 4c73dca65e15c3c4fbe05bbf570af49d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 3b206247d936c314eb2b36e1a5c61ed1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b370d582bb5522341abd050fff5adf3c
guid: 6264ad8b345cf4c49a5ef6f305165f1c
DefaultImporter:
externalObjects: {}
userData:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e596f5d698705704baf1e4312019f924
guid: 6ade19d133834a04796ba0c514e2d5bb
DefaultImporter:
externalObjects: {}
userData:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f37c8a048b2bc324387113e5b027a962
guid: 6de5f693aca544b4bad9e1c5025ac433
DefaultImporter:
externalObjects: {}
userData:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2986f9119f4d7ab41b64ba9a5a9b9d93
guid: 62790b88b76e72d46a664b2bcdef2b86
DefaultImporter:
externalObjects: {}
userData:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1ed5b35ea681aa94eb527f275ec55aee
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c886a5109726cad4b883a508bc176899
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d4a891ce4a277a14797ac62961406fce
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 42fe1881572db4e49abe248f2eb4c83a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48875e2fc8a635f4289a022d196808e8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6dd170e0ea2a8454090648138834c162
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}
}
}

View File

@ -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();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8137f139f4cc4b8c971c96e60272781f
timeCreated: 1720270386

View File

@ -1,3 +1,3 @@
fileFormatVersion: 2
guid: 3aaac8eb3f3443c59e0943dfdfe403f4
timeCreated: 1719324845
guid: 9b4c5bc1986841adbcfe5265574868f9
timeCreated: 1720303574

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f1edfdde36b2477cb608b62fcde8b71f
timeCreated: 1720303574

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2468b57fe3934b01891fc721b7f0dfbc
timeCreated: 1720303574

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 719ceae7b0f74ef090e0295d3de00df2
timeCreated: 1720303574

View File

@ -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
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0ac1b64417c4411da7ab5aad85f4ab1f
timeCreated: 1720303574

View File

@ -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
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 035583779f354b838f21775a1eabe7f2
timeCreated: 1720303574

View File

@ -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
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1149a83c03964bb1989f46acffe46d09
timeCreated: 1720303574

View File

@ -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);
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9e827ea556af4bc79c9554a2a0fb100b
timeCreated: 1720303574

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ed71ac43a0ec44cb906c7b08c6fd2dc6
timeCreated: 1720303574

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cc4e792cb0684b0c8e5297fd4d7845da
timeCreated: 1720303574

View File

@ -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>();
}
}

View File

@ -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>();
}
}
}

View File

@ -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
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 23b2633f5a4445caa3ee94344a9d9924
timeCreated: 1720218475

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
// }
// }

View File

@ -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;
// }
// }
// }

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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");
}
}
}

View File

@ -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;

View File

@ -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");

View File

@ -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");

View File

@ -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}

22
Assets/FishNet.Config.XML Normal file
View File

@ -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>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 889db804274f0c84cac802959afe19e5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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}

View File

@ -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