Example #1
0
        public void Execute(GameState state, ConfigRoot config, ICommandBuffer _)
        {
            var playerUnits = FindPlayerUnits(state);
            var enemyUnits  = CreateEnemyUnits(state, config);

            state.Level            = new LevelState(LevelDesc, playerUnits, enemyUnits);
            state.Level.PlayerTurn = true;

            foreach (var unitId in PlayerUnits)
            {
                state.Units.Remove(unitId);
            }
            if (FarmLogic.IsFarmigLevel(LevelDesc, config))
            {
                var scope = LevelUtils.GetScope(LevelDesc);
                state.Farming[scope] = state.Time.GetRealTime();
            }
        }
Example #2
0
        public bool IsValid(GameState state, ConfigRoot config)
        {
            if (string.IsNullOrEmpty(LevelDesc))
            {
                return(false);
            }
            if (!config.Levels.ContainsKey(LevelDesc))
            {
                return(false);
            }
            var scope           = LevelUtils.GetScope(LevelDesc);
            var currentProgress = state.Progress.GetOrDefault(scope);

            if (currentProgress < LevelUtils.GetIndex(LevelDesc))
            {
                return(false);
            }
            if ((PlayerUnits == null) || (PlayerUnits.Count == 0) || (PlayerUnits.Count > 4))
            {
                return(false);
            }
            var playerUnits = FindPlayerUnits(state);

            if (playerUnits == null)
            {
                return(false);
            }
            foreach (var unit in playerUnits)
            {
                if (unit.Health <= 0)
                {
                    return(false);
                }
            }
            if (FarmLogic.IsFarmigLevel(LevelDesc, config))
            {
                if (!FarmLogic.IsAvailable(scope, state, config))
                {
                    return(false);
                }
            }
            return(true);
        }
Example #3
0
        private void ValidateAppender(string configurationObjectName)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new MissingAttributeException(configurationObjectName, FieldName);
            }

            // Ensure that if any of the buffer specific attributes are provided, they are all provided, and that they make sense.

            bool levelGiven = !string.IsNullOrEmpty(level);
            bool sendWithBufferLevelGiven = !string.IsNullOrEmpty(sendWithBufferLevel);
            bool storeInBufferLevelGiven  = !string.IsNullOrEmpty(storeInBufferLevel);
            bool bufferSizeGiven          = (bufferSize > 0);

            if (sendWithBufferLevelGiven ||
                storeInBufferLevelGiven ||
                bufferSizeGiven)
            {
                if ((!sendWithBufferLevelGiven) ||
                    (!storeInBufferLevelGiven) ||
                    (!bufferSizeGiven))
                {
                    throw new GeneralAppenderException(name, string.Format(
                                                           "If any of {0}, {1} or {2} is specified, than the other two need to be specified as well",
                                                           FieldSendWithBufferLevel, FieldStoreInBufferLevel, FieldBufferSize));
                }

                int levelNumber =
                    levelGiven ?
                    LevelUtils.LevelNumber(level) :
                    (int)Constants.DefaultAppenderLevel;

                int storeInBufferLevelNumber  = LevelUtils.LevelNumber(storeInBufferLevel);
                int sendWithBufferLevelNumber = LevelUtils.LevelNumber(sendWithBufferLevel);

                if ((storeInBufferLevelNumber > levelNumber) || (levelNumber > sendWithBufferLevelNumber))
                {
                    throw new GeneralAppenderException(name, string.Format(
                                                           "{0} must be equal or greater than {1} and equal or smaller than {2}",
                                                           FieldLevel, FieldStoreInBufferLevel, FieldSendWithBufferLevel));
                }
            }
        }
Example #4
0
        private void Awake()
        {
            _levelIndex = AppManager.Instance.AppContext.LevelToPlay;
            _levelInfo  = AppManager.Instance.ConfigService.LevelsConfig.Levels[_levelIndex];

            _pointsPerItem = 0;
            _totalPoints   = 0;

            _ballsToReach       = LevelUtils.GetBallsToReach(_levelInfo);
            _ballsToReachStatus = new bool[_ballsToReach.Count];

            _roadPath = new VertexPath(new BezierPath(_levelInfo.Road.PointsVector3));

            var roadManager = roadGo.GetComponent <RoadManager>();

            roadManager.RenderRoad(_roadPath, _levelInfo.Road);

            _ballManager = ballGo.GetComponent <BallManager>();
            _ballManager.Init(_roadPath, _levelInfo.Ball, OnBallCollision, OnBallOvercome, OnEndPortalReached);
        }
Example #5
0
        public static bool IsFarmigLevel(string desc, ConfigRoot config)
        {
            var scope = LevelUtils.GetScope(desc);

            return(config.Farming.ContainsKey(scope));
        }
 void OnRedoButtonClick()
 {
     LevelUtils.currentLevel = LevelUtils.GetLevel(PlayerDataUtils.playerData.currentLevelIndex);
     gameObject.SetActive(false);
     SceneManager.LoadScene("Play");
 }
Example #7
0
        private static LogData ProcessLogItem(Dictionary <string, Object> logItem, string userAgent, string userHostAddress,
                                              string requestId, DateTime serverSideTimeUtc, string url, XmlElement xe)
        {
            string serversideLoggerNameOverride = XmlHelpers.OptionalAttribute(xe, "serverSideLogger", null);
            string messageFormat = XmlHelpers.OptionalAttribute(xe, "serverSideMessageFormat", "%message");
            string levelOverride = XmlHelpers.OptionalAttribute(xe, "serverSideLevel", null, LevelUtils.LevelRegex());
            string dateFormat    = XmlHelpers.OptionalAttribute(xe, "dateFormat", "o");

            // ----------------

            string message = logItem["m"].ToString();
            string logger  = logItem["n"].ToString();
            string level   = logItem["l"].ToString(); // note that level as sent by the javascript is a number

            DateTime utcTimestamp = DateTime.UtcNow;
            string   timestampMs  = logItem["t"].ToString();

            try
            {
                double ms = double.Parse(timestampMs);
                utcTimestamp = DateTime.SpecifyKind((new DateTime(1970, 1, 1)).AddMilliseconds(ms), DateTimeKind.Utc);
            }
            catch
            {
            }

            // ----------------

            if (string.IsNullOrWhiteSpace(logger))
            {
                logger = Constants.RootLoggerNameServerSide;
            }
            string finalLoggerName = serversideLoggerNameOverride ?? logger;

            string finalLevel = levelOverride ?? level;

            // ----------------

            string jsonmessage = "";

            if (messageFormat.Contains("%jsonmessage"))
            {
                jsonmessage = LogMessageHelpers.EnsureValidJson(message);
            }

            // ----------------

            string finalMessage = messageFormat
                                  .Replace("%message", message)
                                  .Replace("%jsonmessage", jsonmessage)
                                  .Replace("%utcDateServer", serverSideTimeUtc.ToString(dateFormat))
                                  .Replace("%utcDate", utcTimestamp.ToString(dateFormat))
                                  .Replace("%dateServer", Utils.UtcToLocalDateTime(serverSideTimeUtc).ToString(dateFormat))
                                  .Replace("%date", Utils.UtcToLocalDateTime(utcTimestamp).ToString(dateFormat))
                                  .Replace("%level", level)
                                  .Replace("%newline", System.Environment.NewLine)
                                  .Replace("%userAgent", userAgent)
                                  .Replace("%userHostAddress", userHostAddress)
                                  .Replace("%requestId", requestId ?? "")
                                  .Replace("%url", url)
                                  .Replace("%logger", logger);

            // ---------------

            LogData logData = new LogData(
                finalMessage, finalLoggerName, LevelUtils.ParseLevel(finalLevel).Value, LevelUtils.LevelNumber(finalLevel),
                message, int.Parse(level), logger, requestId,
                utcTimestamp, serverSideTimeUtc, Utils.UtcToLocalDateTime(utcTimestamp), Utils.UtcToLocalDateTime(serverSideTimeUtc),
                userAgent, userHostAddress, url);

            return(logData);
        }
        public string ToJavaScript(string text)
        {
            string js = LevelUtils.LevelNumber(text).ToString();

            return(js);
        }
Example #9
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            string paramNameGroupConstr = "INGD_Группа конструкции";
            string floorNumberParamName = "INGD_Номер этажа";
            int    floorTextPosition    = 0;

            Module.assembly = System.Reflection.Assembly.GetExecutingAssembly().Location;
            Print(Module.assembly, KPLN_Loader.Preferences.MessageType.Regular);
            string markParamName   = "INGD_Марка";
            string widthParamName  = "INGD_Ширина";
            string lengthParamName = "INGD_Длина";
            string heigthParamName = "INGD_Высота";

            Dictionary <string, string> marksBase = new Dictionary <string, string>();

            string txtFile = SettingsUtils.CheckOrCreateSettings();

            Print(txtFile, KPLN_Loader.Preferences.MessageType.Regular);
            if (!System.IO.File.Exists(txtFile))
            {
                message = "Не найден файл " + txtFile;
                return(Result.Failed);
            }

            string[] data = System.IO.File.ReadAllLines(txtFile);
            foreach (string s in data)
            {
                string[] line = s.Split(';');
                marksBase.Add(line[0], line[1]);
            }

            Document doc = commandData.Application.ActiveUIDocument.Document;

            List <Element> allElems = new List <Element>();

            List <Wall> walls = new FilteredElementCollector(doc)
                                .OfClass(typeof(Wall))
                                .Cast <Wall>()
                                .ToList();

            List <Floor> floors = new FilteredElementCollector(doc)
                                  .OfClass(typeof(Floor))
                                  .Cast <Floor>()
                                  .ToList();

            allElems.AddRange(walls);
            allElems.AddRange(floors);
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(Autodesk.Revit.DB.Architecture.Stairs)));
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_StructuralColumns));
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_StructuralFraming));
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_StructuralFoundation));
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Floors));
            allElems.AddRange(new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Walls));

            List <FamilyInstance> genericModels = new FilteredElementCollector(doc)
                                                  .OfClass(typeof(FamilyInstance))
                                                  .OfCategory(BuiltInCategory.OST_GenericModel)
                                                  .Cast <FamilyInstance>()
                                                  .Where(i => !i.Symbol.FamilyName.StartsWith("22"))
                                                  .ToList();

            allElems.AddRange(genericModels);

            List <FamilyInstance> windows = new FilteredElementCollector(doc)
                                            .OfClass(typeof(FamilyInstance))
                                            .Cast <FamilyInstance>()
                                            .Where(i => i.Symbol.FamilyName.StartsWith("23"))
                                            .ToList();

            allElems.AddRange(windows);

            List <RoofBase> roofs = new FilteredElementCollector(doc)
                                    .OfClass(typeof(RoofBase))
                                    .Cast <RoofBase>()
                                    .ToList();

            int count = 0;

            using (Transaction t = new Transaction(doc))
            {
                t.Start("INGD Параметризация");

                foreach (Element elem in allElems)
                {
                    Parameter markParam = elem.get_Parameter(BuiltInParameter.ALL_MODEL_MARK);
                    if (markParam == null)
                    {
                        continue;
                    }
                    if (markParam.HasValue)
                    {
                        string mark = markParam.AsString();

                        Parameter ingdMarkParam = elem.LookupParameter(markParamName);

                        if (ingdMarkParam != null)
                        {
                            ingdMarkParam.Set(mark);
                        }

                        string[] splitmark = mark.Split('-');
                        if (splitmark.Length > 1)
                        {
                            string markPrefix = splitmark[0];
                            if (!marksBase.ContainsKey(markPrefix))
                            {
                                message = "Недопустимый префикс марки " + markPrefix + " у элемента id " + elem.Id.IntegerValue.ToString();
                                return(Result.Failed);
                            }
                            string    group      = marksBase[markPrefix];
                            Parameter groupParam = elem.LookupParameter(paramNameGroupConstr);
                            if (groupParam != null)
                            {
                                groupParam.Set(group);
                            }
                        }
                    }

                    //заполняю номер этажа
                    Level baseLevel = LevelUtils.GetLevelOfElement(elem, doc);
                    if (baseLevel != null)
                    {
                        string    floorNumber = LevelUtils.GetFloorNumberByLevel(baseLevel, floorTextPosition, ' ');
                        Parameter ingdFloor   = elem.LookupParameter(floorNumberParamName);
                        if (ingdFloor == null)
                        {
                            continue;
                        }
                        ingdFloor.Set(floorNumber);
                    }

                    count++;
                }

                foreach (RoofBase roof in roofs)
                {
                    string    group      = "Бетонная подготовка";
                    Parameter groupParam = roof.LookupParameter(paramNameGroupConstr);
                    if (groupParam != null)
                    {
                        groupParam.Set(group);
                    }
                }

                foreach (Wall w in walls)
                {
                    Level     baseLevel   = doc.GetElement(w.LevelId) as Level;
                    string    floorNumber = LevelUtils.GetFloorNumberByLevel(baseLevel, floorTextPosition, ' ');
                    Parameter ingdFloor   = w.LookupParameter(floorNumberParamName);
                    if (ingdFloor == null)
                    {
                        continue;
                    }
                    ingdFloor.Set(floorNumber);

                    double    width     = w.Width;
                    Parameter ingdWidth = w.LookupParameter(widthParamName);
                    if (ingdWidth == null)
                    {
                        continue;
                    }
                    ingdWidth.Set(width);

                    double    length     = w.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble();
                    Parameter ingdLength = w.LookupParameter(lengthParamName);
                    if (ingdLength == null)
                    {
                        continue;
                    }
                    ingdLength.Set(length);

                    List <Solid> solids     = GeometryUtils.GetSolidsFromElement(w);
                    XYZ[]        maxminZ    = GeometryUtils.GetMaxMinHeightPoints(solids);
                    double       heigth     = maxminZ[0].Z - maxminZ[1].Z;
                    Parameter    ingdHeigth = w.LookupParameter(heigthParamName);
                    if (ingdHeigth == null)
                    {
                        continue;
                    }
                    ingdHeigth.Set(heigth);
                }

                foreach (Floor f in floors)
                {
                    Level     baseLevel   = doc.GetElement(f.LevelId) as Level;
                    string    floorNumber = LevelUtils.GetFloorNumberByLevel(baseLevel, floorTextPosition, ' ');
                    Parameter ingdFloor   = f.LookupParameter(floorNumberParamName);
                    if (ingdFloor == null)
                    {
                        continue;
                    }
                    ingdFloor.Set(floorNumber);

                    FloorType ft = f.FloorType;

                    double    heigth     = ft.get_Parameter(BuiltInParameter.FLOOR_ATTR_DEFAULT_THICKNESS_PARAM).AsDouble();
                    Parameter ingdHeigth = f.LookupParameter(heigthParamName);
                    if (ingdHeigth == null)
                    {
                        continue;
                    }
                    ingdHeigth.Set(heigth);
                }

                t.Commit();
            }

            TaskDialog.Show("Отчет", "Обработано элементов: " + count.ToString());
            return(Result.Succeeded);
        }
 // Use this for initialization
 void Start()
 {
     LevelUtils.initLevel();
 }
Example #11
0
        private static FinalLogData ProcessLogItem(LogRequestSingleMsg logItem, LogRequestBase logRequestBase,
                                                   DateTime serverSideTimeUtc, JsnlogConfiguration jsnlogConfiguration)
        {
            string serversideLoggerNameOverride = jsnlogConfiguration.serverSideLogger;
            string messageFormat = jsnlogConfiguration.serverSideMessageFormat;
            string levelOverride = jsnlogConfiguration.serverSideLevel;
            string dateFormat    = jsnlogConfiguration.dateFormat;

            try
            {
                LevelUtils.ValidateLevel(levelOverride);
            }
            catch (Exception e)
            {
                throw new PropertyException("levelOverride", e);
            }

            // ----------------

            string message = logItem.m;
            string logger  = logItem.n;
            string level   = logItem.l; // note that level as sent by the javascript is a number
            string entryId = logItem.u;

            DateTime utcDate     = DateTime.UtcNow;
            string   timestampMs = logItem.t;

            try
            {
                double ms = double.Parse(timestampMs);
                utcDate = DateTime.SpecifyKind((new DateTime(1970, 1, 1)).AddMilliseconds(ms), DateTimeKind.Utc);
            }
            catch
            {
            }

            // ----------------

            string jsonmessage = "";

            if (messageFormat.Contains("%jsonmessage"))
            {
                jsonmessage = LogMessageHelpers.EnsureValidJson(message);
            }

            // ----------------

            var logRequest       = new LogRequest(message, logger, level, utcDate, entryId, jsonmessage, logRequestBase);
            var loggingEventArgs = new LoggingEventArgs(logRequest)
            {
                Cancel = false,
                ServerSideMessageFormat = messageFormat
            };

            // ----------------

            if (string.IsNullOrWhiteSpace(logger))
            {
                logger = Constants.RootLoggerNameServerSide;
            }
            loggingEventArgs.FinalLogger = serversideLoggerNameOverride ?? logger;

            string consolidatedLevel = levelOverride ?? level;

            loggingEventArgs.FinalLevel = LevelUtils.ParseLevel(consolidatedLevel).Value;

            // ----------------

            loggingEventArgs.FinalMessage = messageFormat
                                            .Replace("%message", message)
                                            .Replace("%entryId", entryId)
                                            .Replace("%jsonmessage", jsonmessage)
                                            .Replace("%utcDateServer", serverSideTimeUtc.ToString(dateFormat))
                                            .Replace("%utcDate", utcDate.ToString(dateFormat))
                                            .Replace("%dateServer", Utils.UtcToLocalDateTime(serverSideTimeUtc).ToString(dateFormat))
                                            .Replace("%date", Utils.UtcToLocalDateTime(utcDate).ToString(dateFormat))
                                            .Replace("%level", level)
                                            .Replace("%newline", System.Environment.NewLine)
                                            .Replace("%userAgent", logRequestBase.UserAgent)
                                            .Replace("%userHostAddress", logRequestBase.UserHostAddress)
                                            .Replace("%requestId", logRequestBase.RequestId ?? "")
                                            .Replace("%url", logRequestBase.Url)
                                            .Replace("%logger", logger);

            // ----------------

            JavascriptLogging.RaiseLoggingEvent(loggingEventArgs);

            // If user wrote event handler that decided not to log the message, return null
            if (loggingEventArgs.Cancel)
            {
                return(null);
            }

            return(loggingEventArgs);
        }