156 lines
4.3 KiB
C#
156 lines
4.3 KiB
C#
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using System;
|
||
|
using RPGCreationKit;
|
||
|
using RPGCreationKit.Player;
|
||
|
|
||
|
namespace RPGCreationKit
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Represents an Entity in the game. Used mainly to differentiate one entity with another.
|
||
|
/// </summary>
|
||
|
[DisallowMultipleComponent]
|
||
|
public class Entity : MonoBehaviour, ITargetable
|
||
|
{
|
||
|
public string entityID = ""; // MUST BE THE SAME OF PREF IF USING PERSISTENT REFERENCE
|
||
|
public string entityName = "";
|
||
|
|
||
|
Guid entityGuid;
|
||
|
[SerializeField] private byte[] serializedGuid;
|
||
|
|
||
|
public CellsSystem.CellInformation myCellInfo;
|
||
|
|
||
|
/// The part of the body that's more meaningful (usually the head). Used by other targets to look at this entity
|
||
|
public Transform entityFocusPart;
|
||
|
|
||
|
public bool isLoaded = false; /// If the Entity has been loaded from the SaveFile
|
||
|
|
||
|
private void Reset()
|
||
|
{
|
||
|
RegenerateEntityGUID();
|
||
|
}
|
||
|
|
||
|
[ContextMenu("RegenerateEntityGUID")]
|
||
|
public void RegenerateEntityGUID()
|
||
|
{
|
||
|
entityGuid = Guid.NewGuid();
|
||
|
serializedGuid = entityGuid.ToByteArray();
|
||
|
}
|
||
|
|
||
|
public byte[] GetGuid()
|
||
|
{
|
||
|
return serializedGuid;
|
||
|
}
|
||
|
|
||
|
public static Entity GetPlayerEntity()
|
||
|
{
|
||
|
return RckPlayer.instance;
|
||
|
}
|
||
|
|
||
|
string ITargetable.GetID()
|
||
|
{
|
||
|
return entityID;
|
||
|
}
|
||
|
|
||
|
ITargetableType ITargetable.GetTargetableType()
|
||
|
{
|
||
|
return ITargetableType.Entity;
|
||
|
}
|
||
|
|
||
|
string ITargetable.GetExtraData()
|
||
|
{
|
||
|
return string.Empty;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class EntityFactionable : Entity
|
||
|
{
|
||
|
public List<Faction> belongsToFactions = new List<Faction>();
|
||
|
|
||
|
/// <summary>
|
||
|
/// Returns true if the this NPC is a member of the specified faction.
|
||
|
/// </summary>
|
||
|
public bool GetInFaction(string _factionID)
|
||
|
{
|
||
|
return belongsToFactions.Contains(FactionsDatabase.GetFaction(_factionID));
|
||
|
}
|
||
|
|
||
|
public void AddToFaction(string _factionID)
|
||
|
{
|
||
|
Faction faction = FactionsDatabase.GetFaction(_factionID);
|
||
|
|
||
|
if (faction != null)
|
||
|
{
|
||
|
bool found = false;
|
||
|
for (int i = 0; i < belongsToFactions.Count; i++)
|
||
|
{
|
||
|
if (belongsToFactions[i].ID == faction.ID)
|
||
|
{
|
||
|
found = true;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!found)
|
||
|
belongsToFactions.Add(faction);
|
||
|
}
|
||
|
else
|
||
|
Debug.LogWarning("Faction with ID: " + _factionID + " not found. Maybe you have to update the database?");
|
||
|
|
||
|
}
|
||
|
|
||
|
public void RemoveFromFaction(string _factionID)
|
||
|
{
|
||
|
Debug.Log("REMVOED FROM FACTION!!!");
|
||
|
Faction faction = FactionsDatabase.GetFaction(_factionID);
|
||
|
|
||
|
if (faction != null)
|
||
|
{
|
||
|
for (int i = 0; i < belongsToFactions.Count; i++)
|
||
|
{
|
||
|
if (belongsToFactions[i].ID == faction.ID)
|
||
|
{
|
||
|
belongsToFactions.RemoveAt(i);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
Debug.LogWarning("Faction with ID: " + _factionID + " not found. Maybe you have to update the database?");
|
||
|
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Returns the number of factions this entity belongs to.
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public int GetNumFactions()
|
||
|
{
|
||
|
return belongsToFactions.Count;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Modifies the disposition towards a faction for this entity
|
||
|
/// </summary>
|
||
|
/// <param name="_factionID"></param>
|
||
|
public void SetFactionDisposition(string _factionID, int _disposition)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Returns 1 if the calling entity is in faction that the player also belongs to.
|
||
|
/// </summary>
|
||
|
public void HasAFactionInCommonWithPC()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
public bool IsHostileTowards(EntityFactionable _otherEntity)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|