Exemple #1
0
 private static void BoardToolManager_OnSwitchTool(BoardTool obj)
 {
     if (obj is CreatureMoveBoardTool)
     {
         CreatureBoardAsset selectedCreature = Minis.GetSelected();
         draggingPersistentEffect = selectedCreature.GetPersistentEffect();
         if (draggingPersistentEffect != null && draggingPersistentEffect.RotationIsLocked)
         {
             trackingDraggedMiniForRotationLock = true;
         }
     }
     else
     {
         if (draggingPersistentEffect != null && trackingDraggedMiniForRotationLock)
         {
             CreatureBoardAsset selectedCreature = Minis.GetSelected();
             if (selectedCreature != null)
             {
                 selectedCreature.SetRotationDegrees(draggingPersistentEffect.LockedRotation);
             }
         }
         draggingPersistentEffect           = null;
         trackingDraggedMiniForRotationLock = false;
     }
 }
            private static void BoardToolManager_OnSwitchTool(BoardTool obj)
            {
                CreatureBoardAsset selectedMini = GetSelected();

                creatureBoardAssetEventArgs.SetMini(selectedMini);
                //Log.Debug($"BoardToolManager_OnSwitchTool - {obj}");

                if (obj is DefaultBoardTool)
                {
                    if (selectedMini != lastSelectedMini)
                    {
                        OnNewMiniSelected(creatureBoardAssetEventArgs);
                    }

                    OnMiniSelected(creatureBoardAssetEventArgs);
                }

                lastSelectedMini = selectedMini;
            }
        private void BoardToolManager_OnSwitchTool(BoardTool obj)
        {
            Talespire.Log.Indent();
            try
            {
                if (obj is CreatureMoveBoardTool || obj is CreatureKeyMoveBoardTool)
                {
                    if (Data.Movement == GroupMovementMode.FollowTheLeader)
                    {
                        CreatureBoardAsset selectedMini = Talespire.Minis.GetSelected();
                        if (selectedMini == OwnerCreature)
                        {
                            Talespire.Log.Debug($"Owner selected and moving!");
                        }
                        else
                        {
                            Talespire.Log.Debug($"Owner NOT selected!");
                        }
                    }
                    moveToolActive = true;
                    // Something is moving!
                    Talespire.Log.Debug($"// Something is moving!");
                    return;
                }

                if (!(obj is DefaultBoardTool))
                {
                    return;
                }

                if (OwnerCreature != null)
                {
                    Talespire.Log.Debug($"OwnerCreature != null");
                    float newAltitude = OwnerCreature.GetFlyingAltitude();

                    if (newAltitude != lastAltitude)
                    {
                        Talespire.Log.Warning($"Altitude changed from {lastAltitude} to {newAltitude}!");
                    }

                    lastAltitude = newAltitude;
                    CheckAltitudeAgainSoon();

                    if (moveToolActive)
                    {
                        RefreshIndicators();
                        Vector3 newPosition = OwnerCreature.PlacedPosition;
                        Vector3 deltaMove   = newPosition - lastGroupPosition;
                        MoveGroup(deltaMove);
                        lastGroupPosition = newPosition;
                    }
                    else
                    {
                        Talespire.Log.Debug($"moveTool is not Active");
                    }
                }

                CreatureBoardAsset selected = Talespire.Minis.GetSelected();

                if (selectingLookTarget && selected != null)
                {
                    selectingLookTarget = false;
                    if (OwnerCreature != null)
                    {
                        OwnerCreature.Creature.Speak($"Now looking at {selected.GetOnlyCreatureName()}.");
                    }
                    Data.Target = selected.CreatureId.ToString();
                    DataChanged();
                }

                if (selected?.Creature.CreatureId.ToString() != OwnerID)
                {
                    if (selected == null)
                    {
                        lastCreatureSelected = null;
                    }
                    else
                    {
                        lastCreatureSelected = selected.CreatureId.ToString();

                        if (Data.Look == LookTowardMode.NearestOutsider)
                        {
                            LookToNearestOutsiders(GetMemberAssets());
                        }
                        else if (Data.Look == LookTowardMode.NearestMember)
                        {
                            List <CreatureBoardAsset> assets = GetMemberAssets();
                            if (assets.Contains(selected))                             // We just moved a member...
                            {
                                FaceClosest(assets, assets);
                            }
                        }
                        else if (Data.Look == LookTowardMode.Creature && lastCreatureSelected == Data.Target)
                        {
                            List <CreatureBoardAsset> assets = GetMemberAssets();
                            foreach (CreatureBoardAsset asset in assets)
                            {
                                asset.RotateToFacePosition(selected.PlacedPosition);
                            }
                        }
                    }

                    if (needToClearGroupIndicators)
                    {
                        ClearGroupIndicators();
                    }
                }

                moveToolActive = false;
            }
            finally
            {
                Talespire.Log.Unindent();
            }
        }