Beispiel #1
0
        public static bool TraitConflict(Vector2 traits)
        {
            var t1 = TraitDefinition.GetById((byte)traits.X);
            var t2 = TraitDefinition.GetById((byte)traits.Y);

            return(t1.TraitConflicts.Contains(t2) || t2.TraitConflicts.Contains(t1));
        }
        public bool Equals(TraitDefinition other)
        {
            if (other == null)
                return false;

            return other.Equals(Definition);
        }
Beispiel #3
0
        public virtual void Setup()
        {
            m_TraitDefinition = DynamicStruct.Create <TraitDefinition>();
            m_TraitDefinition.CreateProperty <int>("FieldA");
            SaveAsset(m_TraitDefinition, Path.Combine(k_TraitAssetsPath, "TraitA.asset"));

            m_EnumDefinition = ScriptableObject.CreateInstance <EnumDefinition>();
            m_EnumDefinition.CreateProperty <string>("ValueA");
            m_EnumDefinition.CreateProperty <string>("ValueB");
            m_EnumDefinition.CreateProperty <string>("ValueC");
            SaveAsset(m_EnumDefinition, Path.Combine(k_EnumAssetsPath, "EnumA.asset"));

            SetupTerminationDefinition("TerminationA.asset");

            SetupActionDefinition("ActionA.asset");

            m_ProblemDefinition = ScriptableObject.CreateInstance <ProblemDefinition>();
            m_ProblemDefinition.ActionDefinitions = new[]
            {
                m_ActionDefinition
            };
            m_ProblemDefinition.StateTerminationDefinitions = new[]
            {
                m_StateTerminationDefinition
            };

            SaveAsset(m_ProblemDefinition, Path.Combine(k_AssetsPath, "PlanA.asset"));

            PlannerAssetDatabase.Refresh(new [] { Path.Combine("Assets", "Temp") });
        }
Beispiel #4
0
        public static void SetTraitVector(Vector2 traits)
        {
            List <TraitDefinition> list = new List <TraitDefinition>(2);

            if (traits.X != 0)
            {
                list.Add(TraitDefinition.GetById((byte)traits.X));
            }
            if (traits.Y != 0)
            {
                list.Add(TraitDefinition.GetById((byte)traits.Y));
            }
            Traits = list.ToArray();
        }
Beispiel #5
0
        private async Task InitializeTraitDefinitionInMemoryRepositoryFromJson(MagusTtkContext dataContext, string jsonFilePath, CancellationToken cancellationToken = default)
        {
            string jsonString = await fileContentResolver.ReadFileAsTextAsync(jsonFilePath, cancellationToken);

            if (string.IsNullOrWhiteSpace(jsonString))
            {
                throw new ArgumentException($"Json file '{jsonFilePath}' not found.");
            }

            var entitiesFromJson = JsonDeserializer.DeserializeFromJsonString <TraitDefinition[]>(jsonString);

            // JSON séma hiba
            if ((entitiesFromJson == null) || (entitiesFromJson.Length == 0))
            {
                throw new ArgumentException($"Could not parse entities of type '{typeof(TraitDefinition)}' from Json file '{jsonFilePath}'.");
            }

            HashSet <string> codeHashes = new HashSet <string>();
            var editableRepo            = dataContext.TraitDefinitions.AsEditableRepository();

            foreach (var entity in entitiesFromJson)
            {
                // hiányzó Code
                if (string.IsNullOrWhiteSpace(entity.Code))
                {
                    throw new ArgumentException($"Skill code in file '{jsonFilePath}' is empty.");
                }

                // ha nem tudja hozzáadni, akkor már volt ilyen kóddal skill definition
                if (!codeHashes.Add(entity.Code))
                {
                    throw new ArgumentException($"Skill code '{entity.Code}' in file '{jsonFilePath}' is a duplicate.");
                }

                var newEntity = new TraitDefinition()
                {
                    Code     = entity.Code,
                    MaxValue = 3,
                    MinValue = 1
                };

                await editableRepo.Add(newEntity, cancellationToken);
            }
        }
Beispiel #6
0
 static bool IsSemanticTrait(TraitDefinition traitDefinition)
 {
     return(typeof(bool) == traitDefinition.Type);
 }
 public TraitRequirement(TraitDefinition definition, bool required = true)
 {
     Definition = definition;
     Required = required;
 }
Beispiel #8
0
 public static string ProfileCardDescription(byte traitType)
 {
     return(TraitDefinition.GetById(traitType).GetProfileDescription(Game.PlayerStats.IsFemale));
 }
Beispiel #9
0
 public static string Description(byte traitType, bool isFemale)
 {
     return(TraitDefinition.GetById(traitType).GetDescription(Game.PlayerStats.IsFemale));
 }
Beispiel #10
0
 public static string ToString(byte traitType)
 {
     return(TraitDefinition.GetById(traitType).DisplayName);
 }
Beispiel #11
0
 public static byte Rarity(byte traitType)
 {
     return(TraitDefinition.GetById(traitType).Rarity);
 }