示例#1
0
        public List <string> SpawnMoreMembers(int numCreaturesToSpawn, List <NGuid> boardAssetIds)
        {
            List <string> creatureIds     = new List <string>();
            int           boardAssetIndex = 0;

            if (boardAssetIds == null || boardAssetIds.Count == 0)
            {
                Talespire.Log.Error($"{nameof(SpawnMoreMembers)} - Must specify at least one boardAssetId.");
                return(null);
            }

            CreatureBoardAsset ownerCreature = OwnerCreature;

            if (Guard.IsNull(ownerCreature, "ownerCreature"))
            {
                return(null);
            }

            float       radiusFeetFromLeader     = 5;
            float       degreesToRotate          = 0;
            float       degreesDelta             = 33;
            float       feetDelta                = 5;
            const float distanceBetweenMinisFeet = 5;

            while (numCreaturesToSpawn > 0)
            {
                NGuid boardAssetId = boardAssetIds[boardAssetIndex];
                boardAssetIndex++;
                if (boardAssetIndex >= boardAssetIds.Count)
                {
                    boardAssetIndex = 0;
                }

                degreesToRotate += degreesDelta;
                float distanceFromCenterTiles = Talespire.Convert.FeetToTiles(radiusFeetFromLeader);
                radiusFeetFromLeader += feetDelta;
                float circumferenceFeet            = (float)Math.PI * 2f * radiusFeetFromLeader;
                float numMinisWeCanFitAtThisRadius = circumferenceFeet / distanceBetweenMinisFeet;
                feetDelta    = distanceBetweenMinisFeet / numMinisWeCanFitAtThisRadius;
                degreesDelta = 360f / numMinisWeCanFitAtThisRadius;
                Vector3 offset        = new Vector3(-distanceFromCenterTiles, 0, 0);
                Vector3 rotatedOffset = Quaternion.Euler(0, degreesToRotate, 0) * offset;           // rotate it
                Vector3 newPosition   = ownerCreature.PlacedPosition + rotatedOffset;               // calculate rotated point

                creatureIds.Add(Talespire.Board.InstantiateCreature(boardAssetId.ToString(), newPosition));
                numCreaturesToSpawn--;
            }

            return(creatureIds);
        }
示例#2
0
 public static bool IsPersistentEffectHidden(NGuid creatureId)
 {
     return(IsHidden(creatureId.ToString()));
 }
示例#3
0
 public static bool IsPersistentEffectRotationLocked(NGuid creatureId)
 {
     return(IsRotationLocked(creatureId.ToString()));
 }
示例#4
0
 static WhatSide WhatSide(NGuid worldId)
 {
     return(WhatSide(worldId.ToString()));
 }