Пример #1
0
            public static bool Prefix(PlayerFunctions __instance)
            {
                __instance.mastThresholdDepth   = __instance.playerVessel.databaseshipdata.periscopeDepthInFeet + 5;
                __instance.fullMessageLog       = new List <string>();
                __instance.fullMessageLogColors = new List <Color32>();
                __instance.numberOfLogEntries   = 0;
                if (__instance.currentFullLogParentObject != null)
                {
                    UnityEngine.Object.Destroy(__instance.currentFullLogParentObject);
                }
                __instance.currentFullLogParentObject = UnityEngine.Object.Instantiate(__instance.fullLogParentObject);
                __instance.currentFullLogParentObject.transform.SetParent(__instance.fullLogParentObject.transform, false);
                __instance.currentFullLogParentObject.GetComponent <UnityEngine.UI.Image>().enabled = true;
                __instance.fullLogScrollRect.content = __instance.currentFullLogParentObject.GetComponent <RectTransform>();
                __instance.fullLogObject.SetActive(false);
                __instance.fullLogToggleButton.SetActive(__instance.generateFullLog);
                __instance.playerSunkBy = string.Empty;
                __instance.hudHidden    = false;
                __instance.eventcamera.eventCameraOn = false;
                __instance.SetEventCameraMode();
                __instance.ballastRechargeTimer = 0f;
                __instance.ballastRechargeTime  = 120f;
                __instance.landAttackNumber     = 0;
                __instance.ClearStatusIcons();
                __instance.firstDepthCheckDone   = false;
                PlayerFunctions.draggingWaypoint = false;
                for (int i = 0; i < __instance.torpedoTubesGUIs.Length; i++)
                {
                    UnityEngine.Object.Destroy(__instance.torpedoTubesGUIs[i].gameObject);
                }
                __instance.weaponSprites = new Sprite[__instance.playerVessel.databaseshipdata.torpedoIDs.Length];
                for (int j = 0; j < __instance.playerVessel.databaseshipdata.torpedoIDs.Length; j++)
                {
                    __instance.weaponSprites[j] = UIFunctions.globaluifunctions.database.databaseweapondata[__instance.playerVessel.databaseshipdata.torpedoIDs[j]].weaponImage;
                }
                Vector2 vector = new Vector2(-260f, 36f);
                int     num    = Mathf.CeilToInt(__instance.playerVessel.databaseshipdata.torpedotubes / 2f);

                if (__instance.playerVessel.vesselmovement.weaponSource.hasVLS)
                {
                    num = Mathf.FloorToInt(__instance.playerVessel.databaseshipdata.torpedotubes / 2f);
                }
                //Debug.Log( "num=" + num );
                int   num2 = 1;
                float num3 = 0f;

                if (__instance.playerVessel.databaseshipdata.vlsTorpedoIDs != null)
                {
                    num2 = 0;
                    num3 = 36f;
                }
                float x    = vector.x;
                float num4 = vector.y * ((float)num - (float)num2);

                __instance.torpedoTubesGUIs  = new TorpedoTubeGUI[__instance.playerVessel.databaseshipdata.torpedotubes];
                __instance.torpedoTubeImages = new UnityEngine.UI.Image[__instance.playerVessel.databaseshipdata.torpedotubes];
                for (int k = 0; k < __instance.playerVessel.databaseshipdata.torpedotubes; k++)
                {
                    GameObject torpTube = UnityEngine.Object.Instantiate(__instance.torpedoTubeGUIObject, __instance.hudTransfrom.position, Quaternion.identity) as GameObject;
                    torpTube.SetActive(true);
                    torpTube.transform.SetParent(__instance.menuPanel.transform, true);
                    RectTransform component = torpTube.GetComponent <RectTransform>();
                    component.localScale             = Vector3.one;
                    torpTube.transform.localPosition = new Vector2(x, num4);
                    //Debug.Log( "Tube " + k + "pos=" + torpTube.transform.localPosition );
                    torpTube.name = k.ToString();
                    num4         -= vector.y;
                    if (k == num - 1)
                    {
                        x    = 0f;
                        num4 = vector.y * ((float)num - (float)num2);
                    }
                    torpTube.transform.SetParent(__instance.menuPanel.transform, true);
                    __instance.torpedoTubesGUIs[k]  = torpTube.GetComponent <TorpedoTubeGUI>();
                    __instance.torpedoTubeImages[k] = __instance.torpedoTubesGUIs[k].weaponInTube;
                    __instance.torpedoTubesGUIs[k].maskSprite.gameObject.GetComponent <UnityEngine.UI.Button>().onClick.AddListener(delegate {
                        __instance.ClickOnTube(int.Parse(torpTube.name));
                    });
                    UnityEngine.UI.ColorBlock colors = __instance.torpedoTubesGUIs[k].attackSettingButton.colors;
                    colors.normalColor      = __instance.helmmanager.buttonColors[1];
                    colors.highlightedColor = __instance.helmmanager.buttonColors[1];
                    colors.pressedColor     = __instance.helmmanager.buttonColors[1];
                    colors.disabledColor    = __instance.helmmanager.buttonColors[0];
                    __instance.torpedoTubesGUIs[k].attackSettingButton.colors = colors;
                    __instance.torpedoTubesGUIs[k].homeSettingButton.colors   = colors;
                    __instance.torpedoTubesGUIs[k].depthSettingButton.colors  = colors;
                }
                if (!GameDataManager.trainingMode && !GameDataManager.missionMode)
                {
                    UIFunctions.globaluifunctions.campaignmanager.GetPlayerCampaignData();
                }
                for (int l = 0; l < __instance.playerVessel.databaseshipdata.torpedotubes; l++)
                {
                    if (!GameDataManager.trainingMode && !GameDataManager.missionMode && UIFunctions.globaluifunctions.campaignmanager.playercampaigndata.playerTubeStatus[l] == -200)
                    {
                        __instance.torpedoTubeImages[l].sprite = UIFunctions.globaluifunctions.playerfunctions.tubeDestroyedSprite;
                        __instance.ClearTubeSettingButtons(l);
                        __instance.playerVessel.vesselmovement.weaponSource.tubeStatus[l]   = -200;
                        __instance.playerVessel.vesselmovement.weaponSource.weaponInTube[l] = -200;
                        continue;
                    }
                    int playerTorpedoIDInTubeOnInit = Traverse.Create(__instance).Method("GetPlayerTorpedoIDInTubeOnInit", new object[] { 1 }).GetValue <int>();
                    //int playerTorpedoIDInTubeOnInit = __instance.GetPlayerTorpedoIDInTubeOnInit( l );
                    bool  flag       = false;
                    int[] torpedoIDs = __instance.playerVessel.databaseshipdata.torpedoIDs;
                    foreach (int num5 in torpedoIDs)
                    {
                        if (playerTorpedoIDInTubeOnInit == num5)
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        __instance.playerVessel.vesselmovement.weaponSource.tubeStatus[l]   = -10;
                        __instance.playerVessel.vesselmovement.weaponSource.weaponInTube[l] = -10;
                        __instance.torpedoTubeImages[l].gameObject.SetActive(false);
                        __instance.ClearTubeSettingButtons(l);
                    }
                    else
                    {
                        __instance.playerVessel.vesselmovement.weaponSource.torpedoSearchPattern[l] = __instance.GetSettingIndex(UIFunctions.globaluifunctions.database.databaseweapondata[playerTorpedoIDInTubeOnInit].searchSettings[0], __instance.attackSettingDefinitions);
                        __instance.playerVessel.vesselmovement.weaponSource.torpedoDepthPattern[l]  = __instance.GetSettingIndex(UIFunctions.globaluifunctions.database.databaseweapondata[playerTorpedoIDInTubeOnInit].heightSettings[0], __instance.depthSettingDefinitions);
                        __instance.playerVessel.vesselmovement.weaponSource.torpedoHomingPattern[l] = __instance.GetSettingIndex(UIFunctions.globaluifunctions.database.databaseweapondata[playerTorpedoIDInTubeOnInit].homeSettings[0], __instance.homeSettingDefinitions);
                        __instance.SetTubeSettingButtons(l);
                    }
                }
                Traverse.Create(__instance).Method("HighlightActiveTube").GetValue();
                //__instance.HighlightActiveTube();
                Vector2 v = new Vector2(0f, vector.y * (float)num + vector.y - 36f + num3);

                //Debug.Log( "v=" + v );
                __instance.signaturePanel.transform.localPosition  = v;
                __instance.conditionsPanel.transform.localPosition = v;
                __instance.damagePanel.transform.localPosition     = v;
                __instance.storesPanel.transform.localPosition     = v;
                __instance.messageLogPanel.transform.localPosition = new Vector2(0f, 36f * (float)num + 28f + num3);
                __instance.messageLogPositions = new Vector2(36f * (float)num + 28f + num3, 36f * (float)num + 275f + num3);
                if (__instance.currentOpenPanel != -1)
                {
                    __instance.OpenContextualPanel(__instance.currentOpenPanel);
                }
                __instance.currentSignatureIndex = 0;
                __instance.sensormanager.SetSonarSignatureLabelData(__instance.playerVessel.databaseshipdata.shipID, 2);
                __instance.DisableESMMeter();
                __instance.storesPanel.SetActive(false);
                __instance.wireData[0].text = string.Empty;
                __instance.wireData[1].text = string.Empty;
                return(false);
            }