示例#1
0
        public List <int> GetSyncedShips()
        {
            List <int> intList = new List <int>();

            foreach (int syncedFleet in this._syncedFleets)
            {
                this.App.GameDatabase.GetFleetInfo(syncedFleet);
                foreach (ShipInfo shipInfo in this.App.GameDatabase.GetShipInfoByFleetID(syncedFleet, false))
                {
                    DesignInfo       designInfo = shipInfo.DesignInfo;
                    int              num1       = 0;
                    BattleRiderTypes type       = BattleRiderTypes.Unspecified;
                    foreach (DesignSectionInfo designSection in designInfo.DesignSections)
                    {
                        ShipSectionAsset shipSectionAsset = designSection.ShipSectionAsset;
                        if (shipSectionAsset.BattleRiderType != BattleRiderTypes.Unspecified)
                        {
                            type = shipSectionAsset.BattleRiderType;
                        }
                        num1 += RiderManager.GetNumRiderSlots(this.App, designSection);
                    }
                    int num2 = 0;
                    foreach (DesignSectionInfo designSection in designInfo.DesignSections)
                    {
                        ShipSectionAsset shipSectionAsset = designSection.ShipSectionAsset;
                        num2 += shipSectionAsset.ReserveSize;
                    }
                    if (num2 > 0 || num1 > 0 || type.IsBattleRiderType())
                    {
                        intList.Add(shipInfo.ID);
                    }
                }
            }
            return(intList);
        }
示例#2
0
        public static RealShipClasses GetRealShipClass(
            ShipClass legacyShipClass,
            BattleRiderTypes battleRiderType,
            string filename = "")
        {
            switch (legacyShipClass)
            {
            case ShipClass.Cruiser:
                return(battleRiderType != BattleRiderTypes.battlerider ? RealShipClasses.Cruiser : RealShipClasses.BattleCruiser);

            case ShipClass.Dreadnought:
                return(battleRiderType != BattleRiderTypes.battlerider ? RealShipClasses.Dreadnought : RealShipClasses.BattleShip);

            case ShipClass.Leviathan:
                return(RealShipClasses.Leviathan);

            case ShipClass.BattleRider:
                switch (battleRiderType)
                {
                case BattleRiderTypes.Unspecified:
                case BattleRiderTypes.nodefighter:
                case BattleRiderTypes.patrol:
                case BattleRiderTypes.scout:
                case BattleRiderTypes.spinal:
                case BattleRiderTypes.escort:
                case BattleRiderTypes.interceptor:
                case BattleRiderTypes.torpedo:
                case BattleRiderTypes.battlerider:
                    return(RealShipClasses.BattleRider);

                case BattleRiderTypes.boardingpod:
                    return(RealShipClasses.BoardingPod);

                case BattleRiderTypes.drone:
                    return(RealShipClasses.Drone);

                case BattleRiderTypes.escapepod:
                    return(RealShipClasses.EscapePod);

                case BattleRiderTypes.assaultshuttle:
                    return(RealShipClasses.AssaultShuttle);

                case BattleRiderTypes.biomissile:
                    return(RealShipClasses.Biomissile);

                default:
                    throw new ArgumentOutOfRangeException(nameof(battleRiderType));
                }

            case ShipClass.Station:
                return(filename.Contains("drone") ? RealShipClasses.Platform : RealShipClasses.Station);

            default:
                throw new ArgumentOutOfRangeException(nameof(legacyShipClass));
            }
        }
示例#3
0
        public static bool IsControllableBattleRider(this BattleRiderTypes type)
        {
            switch (type)
            {
            case BattleRiderTypes.Unspecified:
            case BattleRiderTypes.battlerider:
                return(true);

            default:
                return(false);
            }
        }
示例#4
0
        public static BattleRiderTypes GetBattleRiderTypeByName(
            ShipClass shipClass,
            string name)
        {
            BattleRiderTypes battleRiderTypes = BattleRiderTypes.Unspecified;

            if (shipClass == ShipClass.BattleRider)
            {
                battleRiderTypes = !name.Contains("drone") ? (name.Contains("assaultshuttle") || name.Contains("assault_shuttle") ? BattleRiderTypes.assaultshuttle : (name.Contains("boardingpod") || name.Contains("boarding_pod") ? BattleRiderTypes.boardingpod : (name.Contains("escapepod") || name.Contains("escape_pod") ? BattleRiderTypes.escapepod : (!name.Contains("patrol") ? (!name.Contains("scout") ? (!name.Contains("spinal") ? (!name.Contains("escort") ? (!name.Contains("interceptor") ? (name.Contains("biomissile") || name.Contains("bio_missile") ? BattleRiderTypes.biomissile : (!name.Contains("torpedo") ? (!name.Contains("nodefighter") ? BattleRiderTypes.battlerider : BattleRiderTypes.nodefighter) : BattleRiderTypes.torpedo)) : BattleRiderTypes.interceptor) : BattleRiderTypes.escort) : BattleRiderTypes.spinal) : BattleRiderTypes.scout) : BattleRiderTypes.patrol)))) : BattleRiderTypes.drone;
            }
            else if (name.ToLower().Contains("bb_") || name.ToLower().Contains("bc_"))
            {
                battleRiderTypes = BattleRiderTypes.battlerider;
            }
            return(battleRiderTypes);
        }
示例#5
0
        public static bool CanBattleRiderConnect(
            WeaponEnums.TurretClasses mountType,
            BattleRiderTypes brct,
            ShipClass sc)
        {
            switch (mountType)
            {
            case WeaponEnums.TurretClasses.Biomissile:
                return(brct == BattleRiderTypes.biomissile);

            case WeaponEnums.TurretClasses.Drone:
                return(brct == BattleRiderTypes.drone);

            case WeaponEnums.TurretClasses.AssaultShuttle:
                return(brct == BattleRiderTypes.assaultshuttle);

            case WeaponEnums.TurretClasses.DestroyerRider:
                if (brct.IsBattleRiderType())
                {
                    return(sc == ShipClass.BattleRider);
                }
                return(false);

            case WeaponEnums.TurretClasses.CruiserRider:
                if (brct.IsControllableBattleRider())
                {
                    return(sc == ShipClass.Cruiser);
                }
                return(false);

            case WeaponEnums.TurretClasses.DreadnoughtRider:
                if (brct.IsControllableBattleRider())
                {
                    return(sc == ShipClass.Dreadnought);
                }
                return(false);

            case WeaponEnums.TurretClasses.BoardingPod:
                return(brct == BattleRiderTypes.boardingpod);

            case WeaponEnums.TurretClasses.EscapePod:
                return(brct == BattleRiderTypes.escapepod);

            default:
                return(false);
            }
        }
示例#6
0
        public static bool IsBattleRiderType(this BattleRiderTypes type)
        {
            switch (type)
            {
            case BattleRiderTypes.nodefighter:
            case BattleRiderTypes.patrol:
            case BattleRiderTypes.scout:
            case BattleRiderTypes.spinal:
            case BattleRiderTypes.escort:
            case BattleRiderTypes.interceptor:
            case BattleRiderTypes.torpedo:
            case BattleRiderTypes.battlerider:
                return(true);

            default:
                return(false);
            }
        }
示例#7
0
        private static string GetShipDefaultDeathEffect(ShipClass sc, BattleRiderTypes brt = BattleRiderTypes.Unspecified)
        {
            switch (sc)
            {
            case ShipClass.Cruiser:
                return("effects\\ShipDeath\\cr_death.effect");

            case ShipClass.Dreadnought:
            case ShipClass.Leviathan:
                return("effects\\ShipDeath\\dn_death.effect");

            case ShipClass.BattleRider:
                if (brt == BattleRiderTypes.biomissile)
                {
                    return("effects\\Weapons\\biomissile_impact.effect");
                }
                break;
            }
            return("effects\\ShipDeath\\placeholder.effect");
        }
示例#8
0
        protected void SyncCompoShips(int Compositionid)
        {
            //DialogLoaFleetSelector.<> c__DisplayClass13 CS$<> 8__locals1 = new DialogLoaFleetSelector.<> c__DisplayClass13();
            LoaFleetComposition loaFleetComposition = this._app.GameDatabase.GetLoaFleetCompositions().FirstOrDefault((LoaFleetComposition x) => x.ID == Compositionid);

            if (loaFleetComposition != null)
            {
                this.selectedcompo = new int?(Compositionid);
                List <DesignInfo> list = Kerberos.Sots.StarFleet.StarFleet.GetDesignBuildOrderForComposition(this._app.Game, this._basefleet.ID, loaFleetComposition, this._mission).ToList <DesignInfo>();
                int fleetLoaCubeValue  = Kerberos.Sots.StarFleet.StarFleet.GetFleetLoaCubeValue(this._app.Game, this._basefleet.ID);
                int num = 0;
                List <DesignInfo> list2 = (from X in list
                                           where X.Class == ShipClass.BattleRider
                                           select X).ToList <DesignInfo>();
                this._app.UI.ClearItems(this._app.UI.Path(new string[]
                {
                    base.ID,
                    DialogLoaFleetSelector.UIShipList
                }));
                foreach (DesignInfo designInfo in list)
                {
                    if (designInfo.Class != ShipClass.BattleRider && !(designInfo.GetRealShipClass() == RealShipClasses.BoardingPod) && !(designInfo.GetRealShipClass() == RealShipClasses.Drone) && !(designInfo.GetRealShipClass() == RealShipClasses.EscapePod))
                    {
                        this._app.UI.AddItem(this._app.UI.Path(new string[]
                        {
                            base.ID,
                            DialogLoaFleetSelector.UIShipList
                        }), "", DialogLoaFleetSelector.designlistid, designInfo.Name);
                        string itemGlobalID = this._app.UI.GetItemGlobalID(this._app.UI.Path(new string[]
                        {
                            base.ID,
                            DialogLoaFleetSelector.UIShipList
                        }), "", DialogLoaFleetSelector.designlistid, "");
                        this._app.UI.SetText(this._app.UI.Path(new string[]
                        {
                            itemGlobalID,
                            "designName"
                        }), designInfo.Name);
                        this._app.UI.SetVisible(this._app.UI.Path(new string[]
                        {
                            itemGlobalID,
                            "designDeleteButton"
                        }), false);
                        if (num + designInfo.GetPlayerProductionCost(this._app.GameDatabase, this._basefleet.PlayerID, false, null) <= fleetLoaCubeValue)
                        {
                            this._app.UI.SetPropertyColor(this._app.UI.Path(new string[]
                            {
                                itemGlobalID,
                                "designName"
                            }), "color", new Vector3(255f, 255f, 255f));
                            num += designInfo.GetPlayerProductionCost(this._app.GameDatabase, this._basefleet.PlayerID, false, null);
                        }
                        else
                        {
                            this._app.UI.SetPropertyColor(this._app.UI.Path(new string[]
                            {
                                itemGlobalID,
                                "designName"
                            }), "color", new Vector3(255f, 0f, 0f));
                        }
                        DialogLoaFleetSelector.designlistid++;
                        List <CarrierWingData> list3 = RiderManager.GetDesignBattleriderWingData(this._app, designInfo).ToList <CarrierWingData>();
                        using (List <CarrierWingData> .Enumerator enumerator2 = list3.GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                //DialogLoaFleetSelector.<> c__DisplayClass16 CS$<> 8__locals2 = new DialogLoaFleetSelector.<> c__DisplayClass16();
                                //CS$<> 8__locals2.CS$<> 8__locals14 = CS$<> 8__locals1;
                                CarrierWingData   wd          = enumerator2.Current;
                                List <DesignInfo> classriders = (from x in list2
                                                                 where StrategicAI.BattleRiderMountSet.GetMatchingTurretClass(x) == wd.Class
                                                                 select x).ToList <DesignInfo>();
                                if (classriders.Any <DesignInfo>() && wd.SlotIndexes.Any <int>())
                                {
                                    BattleRiderTypes SelectedType = (from x in classriders
                                                                     where classriders.Count((DesignInfo j) => j.ID == x.ID) >= wd.SlotIndexes.Count
                                                                     select x).First <DesignInfo>().GetMissionSectionAsset().BattleRiderType;
                                    DesignInfo designInfo2 = classriders.FirstOrDefault((DesignInfo x) => x.GetMissionSectionAsset().BattleRiderType == SelectedType && classriders.Count((DesignInfo j) => j.ID == x.ID) >= wd.SlotIndexes.Count);
                                    foreach (int num2 in wd.SlotIndexes)
                                    {
                                        if (designInfo2 != null)
                                        {
                                            this._app.UI.AddItem(this._app.UI.Path(new string[]
                                            {
                                                base.ID,
                                                DialogLoaFleetSelector.UIShipList
                                            }), "", DialogLoaFleetSelector.designlistid, designInfo2.Name);
                                            itemGlobalID = this._app.UI.GetItemGlobalID(this._app.UI.Path(new string[]
                                            {
                                                base.ID,
                                                DialogLoaFleetSelector.UIShipList
                                            }), "", DialogLoaFleetSelector.designlistid, "");
                                            this._app.UI.SetText(this._app.UI.Path(new string[]
                                            {
                                                itemGlobalID,
                                                "designName"
                                            }), designInfo2.Name);
                                            this._app.UI.SetVisible(this._app.UI.Path(new string[]
                                            {
                                                itemGlobalID,
                                                "designDeleteButton"
                                            }), false);
                                            if (num + designInfo2.GetPlayerProductionCost(this._app.GameDatabase, this._basefleet.PlayerID, false, null) <= fleetLoaCubeValue)
                                            {
                                                this._app.UI.SetPropertyColor(this._app.UI.Path(new string[]
                                                {
                                                    itemGlobalID,
                                                    "designName"
                                                }), "color", new Vector3(255f, 255f, 255f));
                                                num += designInfo2.GetPlayerProductionCost(this._app.GameDatabase, this._basefleet.PlayerID, false, null);
                                            }
                                            else
                                            {
                                                this._app.UI.SetPropertyColor(this._app.UI.Path(new string[]
                                                {
                                                    itemGlobalID,
                                                    "designName"
                                                }), "color", new Vector3(255f, 0f, 0f));
                                            }
                                            list2.Remove(designInfo2);
                                            DialogLoaFleetSelector.designlistid++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                this.SyncCompoInfo(loaFleetComposition);
            }
        }
示例#9
0
        private void SyncFleet(int fleetID)
        {
            this.App.GameDatabase.GetFleetInfo(fleetID);
            IEnumerable <ShipInfo> shipInfoByFleetId = this.App.GameDatabase.GetShipInfoByFleetID(fleetID, false);
            List <object>          objectList        = new List <object>();
            int num1 = 0;

            foreach (ShipInfo shipInfo in shipInfoByFleetId)
            {
                DesignInfo             designInfo = shipInfo.DesignInfo;
                int                    num2       = 0;
                int                    count1     = objectList.Count;
                BattleRiderTypes       type       = BattleRiderTypes.Unspecified;
                int                    num3       = 0;
                List <CarrierWingData> source     = new List <CarrierWingData>();
                foreach (DesignSectionInfo designSection in designInfo.DesignSections)
                {
                    ShipSectionAsset shipSectionAsset = this.App.AssetDatabase.GetShipSectionAsset(designSection.FilePath);
                    if (shipSectionAsset.Type == ShipSectionType.Mission)
                    {
                        type = shipSectionAsset.BattleRiderType;
                    }
                    num2 += RiderManager.GetNumRiderSlots(this.App, designSection);
                    foreach (LogicalBank bank1 in shipSectionAsset.Banks)
                    {
                        LogicalBank bank = bank1;
                        if (RiderManager.IsRiderBank(bank))
                        {
                            List <LogicalMount>       list       = ((IEnumerable <LogicalMount>)shipSectionAsset.Mounts).Where <LogicalMount>((Func <LogicalMount, bool>)(x => x.Bank == bank)).ToList <LogicalMount>();
                            WeaponEnums.TurretClasses mountClass = bank.TurretClass;
                            int count2             = list.Count;
                            int riderSlotsPerSquad = BattleRiderSquad.GetMinRiderSlotsPerSquad(mountClass, designInfo.Class);
                            int numRidersPerSquad  = BattleRiderSquad.GetNumRidersPerSquad(mountClass, designInfo.Class, Math.Max(count2, riderSlotsPerSquad));
                            int num4 = numRidersPerSquad > count2 ? 1 : count2 / numRidersPerSquad;
                            for (int index1 = 0; index1 < num4; ++index1)
                            {
                                int        num5    = Math.Min(count2, numRidersPerSquad);
                                List <int> intList = new List <int>();
                                for (int index2 = 0; index2 < num5; ++index2)
                                {
                                    intList.Add(num3);
                                    ++num3;
                                }
                                CarrierWingData carrierWingData = source.FirstOrDefault <CarrierWingData>((Func <CarrierWingData, bool>)(x =>
                                {
                                    if (x.Class == mountClass)
                                    {
                                        return(x.SlotIndexes.Count < numRidersPerSquad);
                                    }
                                    return(false);
                                }));
                                if (carrierWingData != null)
                                {
                                    carrierWingData.SlotIndexes.AddRange((IEnumerable <int>)intList);
                                }
                                else
                                {
                                    source.Add(new CarrierWingData()
                                    {
                                        SlotIndexes = intList,
                                        Class       = mountClass
                                    });
                                }
                            }
                            foreach (LogicalMount logicalMount in list)
                            {
                                objectList.Add((object)(int)bank.TurretClass);
                            }
                        }
                        else if (WeaponEnums.IsWeaponBattleRider(bank.TurretClass))
                        {
                            num3 += ((IEnumerable <LogicalMount>)shipSectionAsset.Mounts).Count <LogicalMount>((Func <LogicalMount, bool>)(x => x.Bank == bank));
                        }
                    }
                    foreach (DesignModuleInfo module in designSection.Modules)
                    {
                        string        path          = this.App.GameDatabase.GetModuleAsset(module.ModuleID);
                        LogicalModule logicalModule = this.App.AssetDatabase.Modules.FirstOrDefault <LogicalModule>((Func <LogicalModule, bool>)(x => x.ModulePath == path));
                        foreach (LogicalBank bank1 in logicalModule.Banks)
                        {
                            LogicalBank bank = bank1;
                            if (RiderManager.IsRiderBank(bank))
                            {
                                List <LogicalMount> list = ((IEnumerable <LogicalMount>)logicalModule.Mounts).Where <LogicalMount>((Func <LogicalMount, bool>)(x => x.Bank == bank)).ToList <LogicalMount>();
                                int        count2        = list.Count;
                                List <int> intList       = new List <int>();
                                for (int index = 0; index < count2; ++index)
                                {
                                    intList.Add(num3);
                                    ++num3;
                                }
                                source.Add(new CarrierWingData()
                                {
                                    SlotIndexes = intList,
                                    Class       = bank.TurretClass,
                                    DefaultType = logicalModule.AbilityType == ModuleEnums.ModuleAbilities.KingfisherRider ? BattleRiderTypes.scout : BattleRiderTypes.Unspecified
                                });
                                foreach (LogicalMount logicalMount in list)
                                {
                                    objectList.Add((object)(int)bank.TurretClass);
                                }
                            }
                            else if (WeaponEnums.IsWeaponBattleRider(bank.TurretClass))
                            {
                                num3 += ((IEnumerable <LogicalMount>)logicalModule.Mounts).Count <LogicalMount>((Func <LogicalMount, bool>)(x => x.Bank == bank));
                            }
                        }
                    }
                }
                objectList.Insert(count1, (object)num2);
                int    num6 = 0;
                string str1 = "";
                string str2 = "";
                foreach (DesignSectionInfo designSection in designInfo.DesignSections)
                {
                    ShipSectionAsset shipSectionAsset = designSection.ShipSectionAsset;
                    num6 += shipSectionAsset.ReserveSize;
                    if (shipSectionAsset.Type == ShipSectionType.Mission)
                    {
                        str1 = App.Localize(shipSectionAsset.Title);
                    }
                    if (shipSectionAsset.Type == ShipSectionType.Engine)
                    {
                        str2 = App.Localize(shipSectionAsset.Title);
                    }
                }
                if (num6 > 0 || num2 > 0 || type.IsBattleRiderType())
                {
                    objectList.Add((object)shipInfo.DesignID);
                    objectList.Add((object)shipInfo.ID);
                    objectList.Add((object)designInfo.Name);
                    objectList.Add((object)shipInfo.ShipName);
                    objectList.Add((object)num6);
                    objectList.Add((object)(int)designInfo.Class);
                    objectList.Add((object)(int)type);
                    objectList.Add((object)shipInfo.ParentID);
                    objectList.Add((object)shipInfo.RiderIndex);
                    objectList.Add((object)str1);
                    objectList.Add((object)str2);
                    if (num2 > 0)
                    {
                        objectList.Add((object)source.Count);
                        foreach (CarrierWingData carrierWingData in source)
                        {
                            objectList.Add((object)carrierWingData.SlotIndexes.Count);
                            foreach (int slotIndex in carrierWingData.SlotIndexes)
                            {
                                objectList.Add((object)slotIndex);
                            }
                            objectList.Add((object)(int)carrierWingData.Class);
                            objectList.Add((object)(int)carrierWingData.DefaultType);
                        }
                    }
                    else if (num6 > 0)
                    {
                        objectList.Add((object)0);
                    }
                    ++num1;
                }
                else
                {
                    objectList.RemoveRange(count1, objectList.Count - count1);
                }
            }
            objectList.Insert(0, (object)num1);
            this.PostSetProp("SyncShips", objectList.ToArray());
        }
示例#10
0
 private void SetBattleRiderType(BattleRiderTypes brt)
 {
     this.BattleRiderType = brt;
     this.IsBattleRider   = brt != BattleRiderTypes.Unspecified;
 }