Пример #1
0
        static void Main()
        {
            SafeCasting app = new SafeCasting();

            // Use the is operator to verify the type.
            // before performing a cast.
            Giraffe g = new Giraffe();

            app.UseIsOperator(g);

            // Use the as operator and test for null
            // before referencing the variable.
            app.UseAsOperator(g);

            // Use the as operator to test
            // an incompatible type.
            SuperNova sn = new SuperNova();

            app.UseAsOperator(sn);

            // Use the as operator with a value type.
            // Note the implicit conversion to int? in
            // the method body.
            int i = 5;

            app.UseAsWithNullable(i);

            double d = 9.78654;

            app.UseAsWithNullable(d);

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
Пример #2
0
        static void Main(string[] args)
        {
            // Use the is operator to verify the type.
            // before performing a cast.
            Giraffe g = new Giraffe();

            UseIsOperator(g);

            // Use the as operator and test for null
            // before referencing the variable.
            UseAsOperator(g);

            // Use the as operator to test
            // an incompatible type.
            SuperNova sn = new SuperNova();

            UseAsOperator(sn);

            // Use the as operator with a value type.
            // Note the implicit conversion to int? in
            // the method body.
            int i = 5;

            UseAsWithNullable(i);

            double d = 9.78654;

            UseAsWithNullable(d);
        }
    static void Main()
    {
        SafeCasting app = new SafeCasting();

            // Use the is operator to verify the type.
            // before performing a cast.
            Giraffe g = new Giraffe();
            app.UseIsOperator(g);

            // Use the as operator and test for null
            // before referencing the variable.
            app.UseAsOperator(g);

            // Use the as operator to test
            // an incompatible type.
            SuperNova sn = new SuperNova();
            app.UseAsOperator(sn);

            // Use the as operator with a value type.
            // Note the implicit conversion to int? in
            // the method body.
            int i = 5;
            app.UseAsWithNullable(i);

            double d = 9.78654;
            app.UseAsWithNullable(d);

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
    }
Пример #4
0
        static void Str_IsAndAs_1()
        {
            Griaffe g = new Griaffe();

            FeedMammals(g);

            SuperNova sn = new SuperNova();

            TestForMammals(sn);

            void FeedMammals(Animal a)
            {
                if (a is Mammal m)
                {
                    m.Eat();
                }
            }

            void TestForMammals(object o)
            {
                if (o is Mammal m)
                {
                    Console.WriteLine(m.ToString());
                }
                else
                {
                    Console.WriteLine($"{o.GetType().Name} is not a Mammal ");
                }
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            Giraffe g = new Giraffe();
            FeedMammals(g);

            TestForMammals(g);

            SuperNova sn = new SuperNova();
            TestForMammals(sn);
        }
Пример #6
0
        static void Main(string[] args)
        {
            Giraffe g = new Giraffe();

            FeedMammals(g);

            TestForMammals(g);

            // Use the as operator to test
            // an incompatible type.
            SuperNova sn = new SuperNova();

            TestForMammals(sn);
        }
Пример #7
0
        static void Main(string[] args)
        {
            var g = new Giraffe();
            var a = new Animal();

            FeedMammals(g);
            FeedMammals(a);
            // Output:
            // Eating.
            // Animal is not a Mammal

            SuperNova sn = new SuperNova();

            TestForMammals(g);
            TestForMammals(sn);
            // Output:
            // I am an animal.
            // SuperNova is not a Mammal
        }
Пример #8
0
        public List <Pool> GetPools()
        {
            List <Pool> pools = new List <Pool>();

            try
            {
                Pool pool1 = new MiningField("MiningField", "stratum+tcp://us.miningfield.com:3397");
                Pool pool2 = new Blocksfactory("Blocksfactory", "stratum+tcp://stratum.dgb.theblocksfactory.com:9002");
                Pool pool3 = new SuperNova("SuperNova", "stratum+tcp://dgbs.suprnova.cc:5226");
                Pool pool4 = new DigiHash("DigiHash", "stratum+tcp://digihash.co:3011");
                pools.Add(pool4);
                pools.Add(pool1);
                pools.Add(pool2);
                pools.Add(pool3);

                return(pools);
            }
            catch (Exception e)
            {
            }
            return(pools);
        }
Пример #9
0
        protected override void UpdateSystem(
            StarMapSystem o,
            StarSystemInfo systemInfo,
            StarMapBase.SyncContext context)
        {
            int?systemProvinceId = this._db.GetStarSystemProvinceID(systemInfo.ID);

            o.SetProvince(systemProvinceId.HasValue ? this.Provinces.Reverse[systemProvinceId.Value] : (StarMapProvince)null);
            o.SetPosition(systemInfo.Origin);
            o.SetTerrain(systemInfo.TerrainID.HasValue ? this.Terrain.Reverse[systemInfo.TerrainID.Value] : (StarMapTerrain)null);
            IEnumerable <int> orbitalObjectIds = this._db.GetStarSystemOrbitalObjectIDs(systemInfo.ID);
            List <int>        source           = new List <int>();
            bool flag1 = false;
            List <StationInfo>    list1       = this._db.GetStationForSystem(systemInfo.ID).Where <StationInfo>((Func <StationInfo, bool>)(x => x.DesignInfo.StationType == StationType.NAVAL)).ToList <StationInfo>();
            Dictionary <int, int> dictionary1 = new Dictionary <int, int>();
            bool flag2 = false;

            foreach (int planetID in orbitalObjectIds)
            {
                AIColonyIntel ci = this._db.GetColonyIntelForPlanet(this._sim.LocalPlayer.ID, planetID);
                if (ci != null)
                {
                    if (!dictionary1.ContainsKey(ci.OwningPlayerID))
                    {
                        dictionary1.Add(ci.OwningPlayerID, 0);
                    }
                    Dictionary <int, int> dictionary2;
                    int owningPlayerId;
                    (dictionary2 = dictionary1)[owningPlayerId = ci.OwningPlayerID] = dictionary2[owningPlayerId] + 1;
                    if (ci.OwningPlayerID == this._sim.LocalPlayer.ID)
                    {
                        flag1 = true;
                    }
                    source.Add(ci.OwningPlayerID);
                    List <TreatyInfo> list2 = this._sim.GameDatabase.GetTreatyInfos().ToList <TreatyInfo>().Where <TreatyInfo>((Func <TreatyInfo, bool>)(x => x.Type == TreatyType.Trade)).ToList <TreatyInfo>();
                    if (flag1 || list2.Any <TreatyInfo>((Func <TreatyInfo, bool>)(x =>
                    {
                        if (x.InitiatingPlayerId == this._sim.LocalPlayer.ID && x.ReceivingPlayerId == ci.OwningPlayerID)
                        {
                            return(true);
                        }
                        if (x.ReceivingPlayerId == this._sim.LocalPlayer.ID)
                        {
                            return(x.InitiatingPlayerId == ci.OwningPlayerID);
                        }
                        return(false);
                    })))
                    {
                        flag2 = true;
                    }
                }
            }
            if (dictionary1.Count == 0)
            {
                foreach (StationInfo stationInfo in list1)
                {
                    if (stationInfo.PlayerID == this._sim.LocalPlayer.ID)
                    {
                        flag1 = true;
                    }
                }
            }
            if (flag1)
            {
                float supportRange = GameSession.GetSupportRange(this._db.AssetDatabase, this._db, this._sim.LocalPlayer.ID);
                o.SetSupportRange(supportRange);
            }
            int?systemOwningPlayer = this._db.GetSystemOwningPlayer(systemInfo.ID);

            if (systemOwningPlayer.HasValue && this._sim.GameDatabase.IsStarSystemVisibleToPlayer(this._sim.LocalPlayer.ID, systemInfo.ID) && StarMap.IsInRange(this._sim.GameDatabase, this._sim.LocalPlayer.ID, systemInfo.ID))
            {
                o.SetPlayerBadge(Path.GetFileNameWithoutExtension(this._db.GetPlayerInfo(systemOwningPlayer.Value).BadgeAssetPath));
                o.SetOwningPlayer(this._sim.GetPlayerObject(systemOwningPlayer.Value));
            }
            else
            {
                o.SetPlayerBadge("");
                o.SetOwningPlayer((Player)null);
            }
            source.Sort();
            o.SetPlayers(source.Select <int, Player>((Func <int, Player>)(playerId => this._sim.GetPlayerObject(playerId))).ToArray <Player>());
            List <PlayerInfo> playerInfos = context.PlayerInfos;
            List <Player>     playerList1 = new List <Player>();
            List <Player>     playerList2 = new List <Player>();

            foreach (PlayerInfo playerInfo in playerInfos)
            {
                if (this._db.SystemHasGate(systemInfo.ID, playerInfo.ID) && (playerInfo.ID == this._sim.LocalPlayer.ID || this._db.IsSurveyed(this._sim.LocalPlayer.ID, systemInfo.ID) && StarMap.IsInRange(this._db, playerInfo.ID, systemInfo.ID)))
                {
                    playerList1.Add(this._sim.GetPlayerObject(playerInfo.ID));
                }
                if (this._db.SystemHasAccelerator(systemInfo.ID, playerInfo.ID) && (playerInfo.ID == this._sim.LocalPlayer.ID || this._db.IsSurveyed(this._sim.LocalPlayer.ID, systemInfo.ID) && StarMap.IsInRange(this._db, playerInfo.ID, systemInfo.ID)))
                {
                    playerList2.Add(this._sim.GetPlayerObject(playerInfo.ID));
                }
                IEnumerable <StationInfo> forSystemAndPlayer = this._db.GetStationForSystemAndPlayer(systemInfo.ID, playerInfo.ID);
                if (playerInfo.ID == this._sim.LocalPlayer.ID)
                {
                    o.SetHasNavalStation(forSystemAndPlayer.Any <StationInfo>((Func <StationInfo, bool>)(x =>
                    {
                        if (x.PlayerID == this._sim.LocalPlayer.ID && x.DesignInfo.StationLevel > 0)
                        {
                            return(x.DesignInfo.StationType == StationType.NAVAL);
                        }
                        return(false);
                    })));
                    o.SetHasScienceStation(forSystemAndPlayer.Any <StationInfo>((Func <StationInfo, bool>)(x =>
                    {
                        if (x.PlayerID == this._sim.LocalPlayer.ID && x.DesignInfo.StationLevel > 0)
                        {
                            return(x.DesignInfo.StationType == StationType.SCIENCE);
                        }
                        return(false);
                    })));
                    o.SetHasTradeStation(forSystemAndPlayer.Any <StationInfo>((Func <StationInfo, bool>)(x =>
                    {
                        if (x.PlayerID == this._sim.LocalPlayer.ID && x.DesignInfo.StationLevel > 0)
                        {
                            return(x.DesignInfo.StationType == StationType.CIVILIAN);
                        }
                        return(false);
                    })));
                    o.SetHasDiploStation(forSystemAndPlayer.Any <StationInfo>((Func <StationInfo, bool>)(x =>
                    {
                        if (x.PlayerID == this._sim.LocalPlayer.ID && x.DesignInfo.StationLevel > 0)
                        {
                            return(x.DesignInfo.StationType == StationType.DIPLOMATIC);
                        }
                        return(false);
                    })));
                }
                o.SetStationCapacity(this._db.GetNumberMaxStationsSupportedBySystem(this._sim, systemInfo.ID, this._sim.LocalPlayer.ID));
                if (playerInfo.ID == this._sim.LocalPlayer.ID && systemOwningPlayer.HasValue)
                {
                    int cruiserEquivalent      = this._db.GetSystemSupportedCruiserEquivalent(this._sim, systemInfo.ID, playerInfo.ID);
                    int remainingSupportPoints = this._db.GetRemainingSupportPoints(this._sim, systemInfo.ID, playerInfo.ID);
                    if (systemOwningPlayer.Value == this._sim.LocalPlayer.ID)
                    {
                        o.SetNavalCapacity(cruiserEquivalent);
                        o.SetNavalUsage(cruiserEquivalent - remainingSupportPoints);
                    }
                    else
                    {
                        o.SetNavalCapacity(0);
                        o.SetNavalUsage(0);
                    }
                }
            }
            o.SetColonyTrapped(this._sim.GameDatabase.GetColonyTrapInfosAtSystem(systemInfo.ID).Where <ColonyTrapInfo>((Func <ColonyTrapInfo, bool>)(x =>
            {
                if (this._sim.GameDatabase.GetFleetInfo(x.FleetID) != null)
                {
                    return(this._sim.GameDatabase.GetFleetInfo(x.FleetID).PlayerID == this._sim.LocalPlayer.ID);
                }
                return(false);
            })).Any <ColonyTrapInfo>());
            o.SetPlayersWithGates(playerList1.ToArray());
            o.SetPlayersWithAccelerators(playerList2.ToArray());
            o.SetSensorRange(this._sim.GameDatabase.GetSystemStratSensorRange(systemInfo.ID, this._sim.LocalPlayer.ID));
            TradeResultsTable tradeResultsTable   = this._sim.GameDatabase.GetTradeResultsTable();
            TradeResultsTable resultsHistoryTable = this._sim.GameDatabase.GetLastTradeResultsHistoryTable();

            if (flag2 && tradeResultsTable.TradeNodes.ContainsKey(systemInfo.ID))
            {
                if (resultsHistoryTable.TradeNodes.ContainsKey(systemInfo.ID))
                {
                    o.SetTradeValues(this._sim, tradeResultsTable.TradeNodes[systemInfo.ID], resultsHistoryTable.TradeNodes[systemInfo.ID], systemInfo.ID);
                }
                else
                {
                    o.SetTradeValues(this._sim, tradeResultsTable.TradeNodes[systemInfo.ID], new TradeNode(), systemInfo.ID);
                }
            }
            else
            {
                o.SetTradeValues(this._sim, new TradeNode(), new TradeNode(), systemInfo.ID);
            }
            int exploredByPlayer = this._db.GetLastTurnExploredByPlayer(this._sim.LocalPlayer.ID, systemInfo.ID);
            int turnCount        = this._db.GetTurnCount();

            o.SetIsSurveyed(exploredByPlayer != 0);
            this.SetSystemHasBeenRecentlySurveyed(this.Systems.Reverse[systemInfo.ID], exploredByPlayer != 0 && turnCount - exploredByPlayer <= 5 && !flag1);
            this.SetSystemHasRecentCombat(this.Systems.Reverse[systemInfo.ID], this._sim.CombatData.GetFirstCombatInSystem(this._sim.GameDatabase, systemInfo.ID, this._sim.GameDatabase.GetTurnCount() - 1) != null);
            this.SetSystemIsMissionTarget(this.Systems.Reverse[systemInfo.ID], this._db.GetPlayerMissionInfosAtSystem(this._sim.LocalPlayer.ID, systemInfo.ID).Any <MissionInfo>(), this._db.GetPlayerInfo(this._sim.LocalPlayer.ID).PrimaryColor);
            bool flag3 = SuperNova.IsPlayerSystemsInSuperNovaEffectRanges(this._db, this._sim.LocalPlayer.ID, systemInfo.ID) || NeutronStar.IsPlayerSystemsInNeutronStarEffectRanges(this._sim, this._sim.LocalPlayer.ID, systemInfo.ID);

            this.SetSystemRequriesSuperNovaWarning(this.Systems.Reverse[systemInfo.ID], flag3);
            this.UpdateSystemTrade(systemInfo.ID);
            o.SetHasLoaGate(this._db.GetFleetInfoBySystemID(systemInfo.ID, FleetType.FL_ACCELERATOR).Any <FleetInfo>());
        }
Пример #10
0
        static void Str_IsAndAs_3()
        {
            {
                // Use the is operator to verify the type.
                // before performing a cast.
                Griaffe g = new Griaffe();
                UseIsOperator(g);

                // Use the as operator and test for null
                // before referencing the variable.
                UseAsOperator(g);

                // Use the as operator to test
                // an incompatible type.
                SuperNova sn = new SuperNova();
                UseAsOperator(sn);

                // Use the as operator with a value type.
                // Note the implicit conversion to int? in
                // the method body.
                int i = 5;
                UseAsWithNullable(i);

                double d = 9.78654;
                UseAsWithNullable(d);
            }

            void UseIsOperator(Animal a)
            {
                if (a is Mammal)
                {
                    Mammal m = (Mammal)a;
                    m.Eat();
                }
            }

            void UsePatternMatchingIs(Animal a)
            {
                if (a is Mammal m)
                {
                    m.Eat();
                }
            }

            void UseAsOperator(object o)
            {
                Mammal m = o as Mammal;

                if (m != null)
                {
                    Console.WriteLine(m.ToString());
                }
                else
                {
                    Console.WriteLine($"{o.GetType().Name} is not a Mammal");
                }
            }

            void UseAsWithNullable(System.ValueType val)
            {
                int?j = val as int?;

                if (j != null)
                {
                    Console.WriteLine(j);
                }
                else
                {
                    Console.WriteLine("Could not convert " + val.ToString());
                }
            }
        }