void Awake() {
        welcomeText = welcomeTextObj.GetComponent<DynamicText>();

        if (GameObject.FindGameObjectWithTag("Data")) {
            playerData = GameObject.FindGameObjectWithTag("Data").GetComponent<PlayerData>();
        }
    }
Example #2
0
    public override void Awake()
    {
        base.Awake();

        myCount = DynamicText.GetTextMesh(this);
        stats = GameStatistics.Instance;
        level = LevelManager.Instance;
    }
Example #3
0
 void Start()
 {
     dynText = GetComponent<DynamicText>();
     orgColor = dynText.color;
     if (url.Equals(""))
         url = GetComponent<DynamicText>().GetText();
     if (cam == null)
         cam = Camera.main;
 }
Example #4
0
    void Update()
    {
        width = Mathf.Clamp(width, 1, 100);
        height = Mathf.Clamp(height, 1, 100);

        int chGradientLen = charGradient.Length;
        if (chGradientLen < 1)
        {
            Debug.LogWarning("No char gradient!", this);
            return;
        }

        dynamicText = GetComponent<DynamicText>();
        if (dynamicText == null)
        {
            Debug.LogError("No Dynamic Text!", this);
            return;
        }

        int charCount = height * (width + 3);
        StringBuilder sb = dynamicText.textSB;
        sb.EnsureCapacity(charCount);
        sb.Length = charCount;
        int sbOffs = 0;
        for (int y = 0; y < height; ++y)
        {
            sb[sbOffs++] = '.';
            for (int x = 0; x < width; ++x)
            {
                float t = Time.fixedTime;
                float s1 = Mathf.Sin(t * 0.77f + x * 0.41f) * 3;
                float s2 = Mathf.Sin(t * 0.65f - y * 0.51f) * 3;
                float s3 = Mathf.Sin(t * 1.93f - x * 0.27f) * 4;
                float s4 = Mathf.Sin(t * 1.91f + y * 0.29f) * 3;
                int chValue = (int)(s1 * s2 + s3 + s4 + chGradientLen * 16 + chGradientLen / 2) % chGradientLen;

                //dynamicText.textSB.Append(charGradient[chValue]);
                sb[sbOffs++] = charGradient[chValue];
            }
            sb[sbOffs++] = '.';
            sb[sbOffs++] = '\n';
        }

        dynamicText.FinishedTextSB();
    }
Example #5
0
        /// <summary>
        /// Загрузить представление из потока
        /// </summary>
        public override void LoadFromStream(Stream stream)
        {
            // очистка представления
            Clear();

            // загрузка XML-документа
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(stream);

            // проверка типа представления
            XmlElement rootElem = xmlDoc.DocumentElement;

            if (!rootElem.Name.Equals("SchemeView", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            // получение заголовка представления
            Title = rootElem.GetAttribute("title");
            SchemeParams.Title = Title;

            // загрузка параметров схемы
            XmlNode schemeNode = rootElem.SelectSingleNode("Scheme");

            if (schemeNode != null)
            {
                SchemeParams.Size      = ReadSizeProp(schemeNode, Scheme.DefaultSize);
                SchemeParams.BackColor = ReadStringProp(schemeNode, "BackColor");
                SchemeParams.BackImage = ReadImageNameProp(schemeNode, "BackImageName");
                SchemeParams.ForeColor = ReadStringProp(schemeNode, "ForeColor");
                SchemeParams.Font      = ReadFontProp(schemeNode, true);
            }

            // загрузка элементов схемы
            XmlNode elemsNode = rootElem.SelectSingleNode("Elements");

            if (elemsNode != null)
            {
                foreach (XmlNode elemNode in elemsNode.ChildNodes)
                {
                    string  tagName    = elemNode.Name.ToLowerInvariant();
                    Element element    = null;
                    int     inCnlNum   = 0;
                    int     ctrlCnlNum = 0;

                    if (tagName == "statictext" || tagName == "dynamictext")
                    {
                        DynamicText dynamicText = tagName == "dynamictext" ? new DynamicText() : null;
                        StaticText  staticText  = dynamicText == null ? new StaticText() : dynamicText;
                        element = staticText;

                        staticText.AutoSize    = ReadBoolProp(elemNode, "AutoSize");
                        staticText.BackColor   = ReadStringProp(elemNode, "BackColor");
                        staticText.BorderColor = ReadStringProp(elemNode, "BorderColor");
                        staticText.ForeColor   = ReadStringProp(elemNode, "ForeColor");
                        staticText.Font        = ReadFontProp(elemNode);
                        staticText.Text        = ReadStringProp(elemNode, "Text");
                        staticText.WordWrap    = ReadBoolProp(elemNode, "WordWrap");
                        staticText.HAlign      = ReadHAlignProp(elemNode);
                        staticText.VAlign      = ReadVAlignProp(elemNode);

                        if (dynamicText != null)
                        {
                            dynamicText.ToolTip            = ReadStringProp(elemNode, "ToolTip");
                            dynamicText.UnderlineOnHover   = ReadBoolProp(elemNode, "UnderlineOnHover");
                            dynamicText.BackColorOnHover   = ReadStringProp(elemNode, "BackColorOnHover");
                            dynamicText.BorderColorOnHover = ReadStringProp(elemNode, "BorderColorOnHover");
                            dynamicText.ForeColorOnHover   = ReadStringProp(elemNode, "ForeColorOnHover");
                            inCnlNum               = ReadIntProp(elemNode, "InCnlNum");
                            ctrlCnlNum             = ReadIntProp(elemNode, "CtrlCnlNum");
                            dynamicText.InCnlNum   = inCnlNum;
                            dynamicText.CtrlCnlNum = ctrlCnlNum;
                            dynamicText.Action     = ReadActionProp(elemNode);
                            dynamicText.ShowValue  = ReadShowValueProp(elemNode);
                        }
                    }
                    else if (tagName == "staticpicture" || tagName == "dynamicpicture")
                    {
                        DynamicPicture dynamicPicture = tagName == "dynamicpicture" ? new DynamicPicture() : null;
                        StaticPicture  staticPicture  = dynamicPicture == null ? new StaticPicture() : dynamicPicture;
                        element = staticPicture;

                        staticPicture.BorderColor  = ReadStringProp(elemNode, "BorderColor");
                        staticPicture.Image        = ReadImageNameProp(elemNode, "ImageName");
                        staticPicture.ImageStretch = ReadImageStretchProp(elemNode);

                        if (dynamicPicture != null)
                        {
                            dynamicPicture.ToolTip            = ReadStringProp(elemNode, "ToolTip");
                            dynamicPicture.ImageOnHover       = ReadImageNameProp(elemNode, "ImageOnHoverName");
                            dynamicPicture.BorderColorOnHover = ReadStringProp(elemNode, "BorderColorOnHover");
                            inCnlNum   = ReadIntProp(elemNode, "InCnlNum");
                            ctrlCnlNum = ReadIntProp(elemNode, "CtrlCnlNum");
                            dynamicPicture.InCnlNum   = inCnlNum;
                            dynamicPicture.CtrlCnlNum = ctrlCnlNum;
                            dynamicPicture.Action     = ReadActionProp(elemNode);

                            XmlNode condsNode = elemNode.SelectSingleNode("Conditions");
                            if (condsNode != null)
                            {
                                dynamicPicture.Conditions = new List <Condition>();
                                XmlNodeList condNodes = condsNode.SelectNodes("Condition");
                                foreach (XmlNode condNode in condNodes)
                                {
                                    Condition condition = new Condition();
                                    condition.CompareOperator1 = ReadCompareOperatorProp(condNode, "CompareOperator1");
                                    condition.CompareArgument1 = ReadDoubleProp(condNode, "CompareArgument1");
                                    condition.CompareOperator2 = ReadCompareOperatorProp(condNode, "CompareOperator2");
                                    condition.CompareArgument2 = ReadDoubleProp(condNode, "CompareArgument2");
                                    condition.LogicalOperator  = ReadLogicalOperatorProp(condNode, "LogicalOperator");
                                    condition.Image            = ReadImageNameProp(condNode, "ImageName");
                                    dynamicPicture.Conditions.Add(condition);
                                }
                            }
                        }
                    }

                    if (element != null)
                    {
                        element.ID = ReadIntProp(elemNode, "ID");

                        if (element.ID > 0)
                        {
                            element.Name     = ReadStringProp(elemNode, "Name");
                            element.Location = ReadLocationProp(elemNode, Element.DefaultLocation);
                            element.Size     = ReadSizeProp(elemNode, Element.DefaultSize);
                            element.ZIndex   = ReadIntProp(elemNode, "ZIndex");
                            ElementList.Add(element);
                            ElementDict[element.ID] = element;

                            if (inCnlNum > 0)
                            {
                                AddCnlNum(inCnlNum);
                            }
                            if (ctrlCnlNum > 0)
                            {
                                AddCtrlCnlNum(ctrlCnlNum);
                            }
                            if (maxID < element.ID)
                            {
                                maxID = element.ID;
                            }
                        }
                    }
                }
            }

            // загрузка словаря изображений схемы
            XmlNode imagesNode = rootElem.SelectSingleNode("Images");

            if (imagesNode != null)
            {
                XmlNodeList imageNodes = imagesNode.SelectNodes("Image");
                foreach (XmlNode imageNode in imageNodes)
                {
                    Image  image = new Image();
                    string name  = ReadStringProp(imageNode, "Name");
                    image.Name = name;
                    image.Data = Convert.FromBase64String(ReadStringProp(imageNode, "Data"));
                    if (name != "")
                    {
                        ImageDict[name] = image;
                    }
                }
            }

            // загрузка фильтра по входным каналам
            XmlNode cnlsFilterNode = rootElem.SelectSingleNode("CnlsFilter");

            if (cnlsFilterNode != null)
            {
                string[] cnlNums = cnlsFilterNode.InnerText.Split(Separator, StringSplitOptions.RemoveEmptyEntries);

                foreach (string cnlNumStr in cnlNums)
                {
                    int cnlNum;
                    if (int.TryParse(cnlNumStr, out cnlNum))
                    {
                        int ind = CnlsFilter.BinarySearch(cnlNum);
                        if (ind < 0)
                        {
                            CnlsFilter.Insert(~ind, cnlNum);
                            AddCnlNum(cnlNum);
                        }
                    }
                }
            }
        }
 public DynamicText SaveDynamicText(DynamicText dynamicText,
                                    IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing)
 {
     return(m_databaseDynamicTextService.SaveDynamicText(dynamicText, actionForDefaultCulture));
 }
Example #7
0
        public InventoryWeightLabel(PartyCharacterId activeCharacter)
        {
            On <SetLanguageEvent>(e => _version++);
            On <BlurEvent>(e => Raise(new HoverTextEvent(null)));
            On <InventoryChangedEvent>(e =>
            {
                if (e.InventoryType == InventoryType.Player && _activeCharacter == (PartyCharacterId)e.InventoryId)
                {
                    _version++;
                }
            });
            On <HoverEvent>(e =>
            {
                Hover();
                e.Propagating = false;
            });

            _activeCharacter = activeCharacter;

            _hoverSource = new DynamicText(() =>
            {
                var player = Resolve <IParty>()[_activeCharacter];
                if (player == null)
                {
                    return(new TextBlock[0]);
                }

                // Carried Weight : %ld of %ld g
                return(Resolve <ITextFormatter>().Format(
                           SystemTextId.Inv_CarriedWeightNdOfNdG,
                           player.Apparent.TotalWeight,
                           player.Apparent.MaxWeight).Get());
            }, x => _version);

            var source = new DynamicText(() =>
            {
                var player = Resolve <IParty>()[_activeCharacter];
                if (player == null)
                {
                    return(new TextBlock[0]);
                }

                // Weight : %d Kg
                int weight = player.Apparent.TotalWeight / 1000;
                return(Resolve <ITextFormatter>()
                       .NoWrap()
                       .Center()
                       .Format(SystemTextId.Inv_WeightNKg, weight)
                       .Get());
            }, x => _version);

            AttachChild(
                new ButtonFrame(
                    new FixedSize(66, 8,
                                  new HorizontalStack(
                                      new Spacing(1, 0),
                                      new UiText(source)
                                      )
                                  )
                    )
            {
                State   = ButtonState.Pressed,
                Padding = 0
            });
        }
Example #8
0
        public InventoryStatsPage(PartyCharacterId activeCharacter)
        {
            _activeCharacter = activeCharacter;

            ProgressBar Progress(SystemTextId id, Func <ICharacterSheet, int> getValue, Func <ICharacterSheet, int> getMax)
            {
                var source = new DynamicText(() => BuildHoverText(id, getValue, getMax));

                return(new ProgressBar(source,
                                       () =>
                {
                    var member = Resolve <IParty>()[activeCharacter];
                    return member == null ? 0 : getValue(member.Apparent);
                },
                                       () =>
                {
                    var member = Resolve <IParty>()[activeCharacter];
                    return member == null ? 0 : getMax(member.Apparent);
                },
                                       100));
            }

            var stack = new VerticalStack(
                new Header(SystemTextId.Inv2_Attributes),
                new HorizontalStack(
                    new VerticalStack(
                        new UiTextBuilder(SystemTextId.Attrib_STR).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_INT).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_DEX).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_SPD).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_STA).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_LUC).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_MR).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Attrib_MT).Right()
                        ),
                    new Spacing(2, 0),
                    new VerticalStack(
                        new Spacing(105, 0),
                        Progress(SystemTextId.Attrib_Strength, x => x.Attributes.Strength, x => x.Attributes.StrengthMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_Intelligence, x => x.Attributes.Intelligence, x => x.Attributes.IntelligenceMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_Dexterity, x => x.Attributes.Dexterity, x => x.Attributes.DexterityMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_Speed, x => x.Attributes.Speed, x => x.Attributes.SpeedMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_Stamina, x => x.Attributes.Stamina, x => x.Attributes.StaminaMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_Luck, x => x.Attributes.Luck, x => x.Attributes.LuckMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_MagicResistance, x => x.Attributes.MagicResistance, x => x.Attributes.MagicResistanceMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Attrib_MagicTalent, x => x.Attributes.MagicTalent, x => x.Attributes.MagicTalentMax)
                        )
                    ),
                new Header(SystemTextId.Inv2_Skills),
                new HorizontalStack(
                    new VerticalStack(
                        new UiTextBuilder(SystemTextId.Skill_CLO).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Skill_LON).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Skill_CRI).Right(),
                        new Spacing(0, 2),
                        new UiTextBuilder(SystemTextId.Skill_LP).Right()
                        ),
                    new Spacing(2, 0),
                    new VerticalStack(
                        new Spacing(105, 0),
                        Progress(SystemTextId.Skill_CloseRangeCombat, x => x.Skills.CloseCombat, x => x.Skills.CloseCombatMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Skill_LongRangeCombat, x => x.Skills.RangedCombat, x => x.Skills.RangedCombatMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Skill_CriticalHit, x => x.Skills.CriticalChance, x => x.Skills.CriticalChanceMax),
                        new Spacing(0, 3),
                        Progress(SystemTextId.Skill_Lockpicking, x => x.Skills.LockPicking, x => x.Skills.LockPickingMax)
                        )
                    )
                );

            Children.Add(new HorizontalStack(new Spacing(4, 0), stack, new Spacing(4, 0)));
        }
Example #9
0
        /// <summary>
        /// Загрузить представление из потока
        /// </summary>
        public override void LoadFromStream(Stream stream)
        {
            // очистка представления
            Clear();

            // загрузка XML-документа
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(stream);

            // проверка формата файла (потока)
            XmlElement rootElem = xmlDoc.DocumentElement;

            if (!rootElem.Name.Equals("SchemeView", StringComparison.OrdinalIgnoreCase))
            {
                throw new ScadaException(SchemePhrases.IncorrectFileFormat);
            }

            // загрузка документа схемы
            XmlNode documentNode = rootElem.SelectSingleNode("Document") ?? rootElem.SelectSingleNode("Scheme");

            if (documentNode != null)
            {
                SchemeDoc.LoadFromXml(documentNode);

                // загрузка заголовка схемы для старого формата
                if (SchemeDoc.Title == "")
                {
                    SchemeDoc.Title = rootElem.GetAttribute("title");
                }

                // установка заголовка представления
                Title = SchemeDoc.Title;

                // загрузка фильтра по входным каналам для старого формата
                XmlNode cnlsFilterNode = rootElem.SelectSingleNode("CnlsFilter");
                if (cnlsFilterNode != null)
                {
                    SchemeDoc.CnlFilter.ParseCnlFilter(cnlsFilterNode.InnerText);
                }

                // добавление входных каналов представления
                foreach (int cnlNum in SchemeDoc.CnlFilter)
                {
                    AddCnlNum(cnlNum);
                }
            }

            // загрузка компонентов схемы
            XmlNode componentsNode = rootElem.SelectSingleNode("Components") ?? rootElem.SelectSingleNode("Elements");

            if (componentsNode != null)
            {
                foreach (XmlNode componentNode in componentsNode.ChildNodes)
                {
                    // создание компонента
                    string        nodeName  = componentNode.Name.ToLowerInvariant();
                    BaseComponent component = null;

                    if (nodeName == "statictext")
                    {
                        component = new StaticText();
                    }
                    else if (nodeName == "dynamictext")
                    {
                        component = new DynamicText();
                    }
                    else if (nodeName == "staticpicture")
                    {
                        component = new StaticPicture();
                    }
                    else if (nodeName == "dynamicpicture")
                    {
                        component = new DynamicPicture();
                    }

                    if (component != null)
                    {
                        // загрузка компонента и добавление его в представление
                        component.SchemeDoc = SchemeDoc;
                        component.LoadFromXml(componentNode);
                        Components[component.ID] = component;

                        // добавление входных каналов представления
                        if (component is IDynamicComponent)
                        {
                            IDynamicComponent dynamicComponent = (IDynamicComponent)component;
                            AddCnlNum(dynamicComponent.InCnlNum);
                            AddCtrlCnlNum(dynamicComponent.CtrlCnlNum);
                        }

                        // определение макс. идентификатора компонентов
                        if (component.ID > maxComponentID)
                        {
                            maxComponentID = component.ID;
                        }
                    }
                }
            }

            // загрузка изображений схемы
            XmlNode imagesNode = rootElem.SelectSingleNode("Images");

            if (imagesNode != null)
            {
                Dictionary <string, Image> images = SchemeDoc.Images;
                XmlNodeList imageNodes            = imagesNode.SelectNodes("Image");
                foreach (XmlNode imageNode in imageNodes)
                {
                    Image image = new Image();
                    image.LoadFromXml(imageNode);
                    if (!string.IsNullOrEmpty(image.Name))
                    {
                        images[image.Name] = image;
                    }
                }
            }
        }
Example #10
0
        public void Start()
        {
            scWindow = new SharpCanvasWindow(600, 600, "Diktator 3.0", false);
            scWindow.Start(60, 60);
            mainWindow = scWindow.Window;
            mainWindow.SetClearColor(OpenTK.Color.White);
            customShaderId = mainWindow.LoadShaderFromString(@"#version 410 core
                #extension GL_ARB_explicit_uniform_location : require
                layout (location = 20) uniform  mat4 projection;
                layout (location = 21) uniform  mat4 modelView;
                layout (location = 3) uniform vec3 tint;
                layout (location = 2) in vec2 textureCoord;
                layout (location = 1) in vec4 position;
                out vec2 frag_textureCoord;
                out vec3 frag_tint;
                void main(void){
                    gl_Position = projection * modelView * position;
                    frag_textureCoord = textureCoord;
                    frag_tint = tint;
                }", @"#version 410 core
                #extension GL_ARB_explicit_uniform_location : require
                in vec2 frag_textureCoord;
                in vec3 frag_tint;
                uniform sampler2D textureObject;
                out vec4 color;
                void main(void){
                    color = texture(textureObject, frag_textureCoord);
                    color = color + (vec4(frag_tint, 1)*color.a);
                }");
            int markerTexture = mainWindow.LoadTexture("x.png");

            Button.buttonTexture    = mainWindow.LoadTexture("button.png");
            Button.glyphMap         = new GlyphMap(GlyphMap.czechGlyphs, 64);
            Button.glyphMap.texture = mainWindow.LoadTextureFromBitmap(Button.glyphMap.bitmap);
            selectionMarker         = new Sprite3D(new OpenTK.Vector3(0, 0, 10), new OpenTK.Vector3(0.03f, 0.03f, 1), markerTexture);
            questionDiv             = new ShadedSprite(new OpenTK.Vector3(0, 0.5f, -2), new OpenTK.Vector3(1.6f, 0.85f, 1), Button.buttonTexture, customShaderId);
            questionDiv.shaderUniforms.Add(3, new UniformVec3(new OpenTK.Vector3(1, 1, 1)));
            questionText = new DynamicText(new OpenTK.Vector3(0, 0.5f, -2), new OpenTK.Vector3(0.08f, 0.2f, 1), "Kolik sou 1+1???", Button.glyphMap);
            questionText.AlignText(TextAlignment.Centralized);
            buttons[0] = new Button(new OpenTK.Vector3(0.5f, -0.25f, -2), new OpenTK.Vector3(0.8f, 0.3f, 1));
            buttons[1] = new Button(new OpenTK.Vector3(0.5f, -0.6f, -2), new OpenTK.Vector3(0.8f, 0.3f, 1));
            buttons[2] = new Button(new OpenTK.Vector3(-0.5f, -0.25f, -2), new OpenTK.Vector3(0.8f, 0.3f, 1));
            buttons[3] = new Button(new OpenTK.Vector3(-0.5f, -0.6f, -2), new OpenTK.Vector3(0.8f, 0.3f, 1));
            buttons[0].OnClickAction = () => { Console.WriteLine("1 pressed."); };
            buttons[1].OnClickAction = () => { Console.WriteLine("2 pressed."); };
            buttons[2].OnClickAction = () => { Console.WriteLine("3 pressed."); };
            buttons[3].OnClickAction = () => { Console.WriteLine("4 pressed."); };
            canvas = mainWindow.CreateCanvas(backgroundColor);
            mainWindow.AddDrawable(questionDiv);
            mainWindow.AddDrawable(questionText);
            mainWindow.AddDrawable(buttons[0].buttonSprite);
            mainWindow.AddDrawable(buttons[1].buttonSprite);
            mainWindow.AddDrawable(buttons[2].buttonSprite);
            mainWindow.AddDrawable(buttons[3].buttonSprite);
            mainWindow.AddDrawable(buttons[0].buttonText);
            mainWindow.AddDrawable(buttons[1].buttonText);
            mainWindow.AddDrawable(buttons[2].buttonText);
            mainWindow.AddDrawable(buttons[3].buttonText);
            mainWindow.AddDrawable(selectionMarker);
            canvas.RotateFlip(RotateFlipType.RotateNoneFlipY);
            mainWindow.ReloadCanvas();
            mainWindow.AddUpdateAction(Update);
        }
        /// <summary>
        /// Executes an action on default culture text if it does not exist. Actions include - nothing, create empty string, copy current culture text
        /// </summary>
        /// <param name="actionForDefaultCulture">Specific action</param>
        /// <param name="dynamicText">Current dynamic text entity</param>
        /// <param name="currentCulture">Current culture entity</param>
        /// <param name="dictionaryScope">Current dictionary scope entity</param>
        private void ExecuteDefaultCultureAction(
            IfDefaultNotExistAction actionForDefaultCulture,
            DynamicText dynamicText,
            ICulture currentCulture,
            IDictionaryScope dictionaryScope
            )
        {
            if (actionForDefaultCulture == IfDefaultNotExistAction.DoNothing)
            {
                return;
            }

            var defaultCulture = GetDefaultCulture();

            if (currentCulture.Equals(defaultCulture))
            {
                return;
            }

            var defaultText = m_staticTextUoW.GetByNameAndCultureAndScope(
                dynamicText.Name, defaultCulture.Name, dictionaryScope.Name
                );

            if (defaultText != null)
            {
                return;
            }

            string text;

            switch (actionForDefaultCulture)
            {
            case IfDefaultNotExistAction.DoNothing:
                return;

            case IfDefaultNotExistAction.CreateEmpty:
                text = string.Empty;
                break;

            case IfDefaultNotExistAction.CreateTextCopy:
                text = dynamicText.Text;
                break;

            default:
                throw new ArgumentOutOfRangeException(
                          nameof(actionForDefaultCulture),
                          actionForDefaultCulture,
                          "Invalid default language save action"
                          );
            }

            m_staticTextUoW.AddStaticText(
                dynamicText.Name,
                dynamicText.Format,
                text,
                defaultCulture.Name,
                dictionaryScope.Name,
                dynamicText.ModificationUser,
                DateTime.UtcNow
                );
        }
Example #12
0
        public InventoryRightPane(PartyCharacterId activeCharacter, string exitButtonId, bool showTotalPartyGold)
            : base(Handlers)
        {
            var header = new Header(new StringId(AssetType.SystemText, 0, (int)SystemTextId.Inv_Backpack));

            var slotSpans = new IUiElement[InventoryHeight];

            for (int j = 0; j < InventoryHeight; j++)
            {
                var slotsInRow = new IUiElement[InventoryWidth];
                for (int i = 0; i < InventoryWidth; i++)
                {
                    int index = j * InventoryWidth + i;
                    slotsInRow[i] = new InventoryBackpackSlot(activeCharacter, index);
                }
                slotSpans[j] = new HorizontalStack(slotsInRow);
            }

            var slotStack = new VerticalStack(slotSpans);
            //var slotFrame = new ButtonFrame(slotStack) { State = ButtonState.Pressed, Theme = new FrameTheme() };

            HorizontalStack moneyAndFoodStack;

            if (showTotalPartyGold)
            {
                var money = new Button(GoldSummaryButtonId,
                                       new VerticalStack(
                                           new Padding(64, 0),
                                           new UiSprite <CoreSpriteId>(CoreSpriteId.UiGold)
                {
                    Highlighted = true
                },
                                           new Text("Total party gold $10.0")
                                           )
                {
                    Greedy = false
                }
                                       )
                {
                    IsPressed = true
                };
                moneyAndFoodStack = new HorizontalStack(money);
            }
            else
            {
                var goldSource = new DynamicText(() =>
                {
                    var player = Resolve <IParty>()[activeCharacter];
                    var gold   = player?.Apparent.Inventory.Gold ?? 0;
                    return(new[] { new TextBlock($"{gold / 10}.{gold % 10}") });
                }, x => _version);

                var goldButton = new Button(GoldButtonId,
                                            new VerticalStack(
                                                new Padding(31, 0),
                                                new UiSprite <CoreSpriteId>(CoreSpriteId.UiGold),
                                                new Text(goldSource)
                                                )
                {
                    Greedy = false
                });

                var foodSource = new DynamicText(() =>
                {
                    var player = Resolve <IParty>()[activeCharacter];
                    var food   = player?.Apparent.Inventory.Rations ?? 0;
                    return(new[] { new TextBlock(food.ToString()) });
                }, x => _version);

                var foodButton = new Button(FoodButtonId,
                                            new VerticalStack(
                                                new Padding(31, 0),
                                                new UiSprite <CoreSpriteId>(CoreSpriteId.UiFood),
                                                new Text(foodSource)
                                                )
                {
                    Greedy = false
                });
                moneyAndFoodStack = new HorizontalStack(goldButton, foodButton);
            }

            var stack = new VerticalStack(
                header,
                slotStack, // slotFrame,
                new Padding(0, 2),
                moneyAndFoodStack,
                new Padding(0, 9),
                new InventoryExitButton(exitButtonId)
                )
            {
                Greedy = false
            };

            Children.Add(stack);
        }
        internal static string ToQueryString(
            string source,
            int? width,
            int? height,
            int clientCacheDuration,
            int serverCacheDuration,
            RotateFlipType rotateFlip,
            bool drawGrayscale,
            bool drawSepia,
            DynamicText text,
            DynamicImageFormat imageFormat,
            KeyValuePair<Type, IDictionary<string, string>>? imageCreator,
            Dictionary<Type, IDictionary<string, string>> imageTransformations)
        {
            HttpServerUtility server = HttpContext.Current.Server;

            string parameterFormat = "{0}={1}";

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

            // width

            if (width.HasValue && (0 < width.Value))
            {
                parameters.Add(
                    ResizeImageTransformation.SIZEW_KEY,
                    string.Format(parameterFormat, ResizeImageTransformation.SIZEW_KEY, width.Value));
            }

            // height

            if (height.HasValue && (0 < height.Value))
            {
                parameters.Add(
                    ResizeImageTransformation.SIZEH_KEY,
                    string.Format(parameterFormat, ResizeImageTransformation.SIZEH_KEY, height.Value));
            }

            // client cache duration

            if (0 < clientCacheDuration)
            {
                parameters.Add(
                    DynamicImageProvider.CLIENTCACHEDUR_KEY,
                    string.Format(parameterFormat, DynamicImageProvider.CLIENTCACHEDUR_KEY, clientCacheDuration));
            }

            // server cache duration

            if (0 < serverCacheDuration)
            {
                parameters.Add(
                    DynamicImageProvider.SERVERCACHEDUR_KEY,
                    string.Format(parameterFormat, DynamicImageProvider.SERVERCACHEDUR_KEY, serverCacheDuration));
            }

            // rotate flip

            if (RotateFlipType.RotateNoneFlipNone != rotateFlip)
            {
                parameters.Add(
                    RotateFlipImageTransformation.ROTATETYPE_KEY,
                    string.Format(parameterFormat, RotateFlipImageTransformation.ROTATETYPE_KEY, rotateFlip));
            }

            // grayscale

            if (drawGrayscale)
            {
                parameters.Add(
                    GrayscaleImageTransformation.GRAYSCALE_KEY,
                    string.Format(parameterFormat, GrayscaleImageTransformation.GRAYSCALE_KEY, drawGrayscale));
            }

            // sepia

            if (drawSepia)
            {
                parameters.Add(
                    SepiaImageTransformation.SEPIA_KEY,
                    string.Format(parameterFormat, SepiaImageTransformation.SEPIA_KEY, drawSepia));
            }

            if ((null != text) && !string.IsNullOrEmpty(text.Value))
            {
                // text

                parameters.Add(
                    TextImageTransformation.TEXTVALUE_KEY,
                    string.Format(parameterFormat, TextImageTransformation.TEXTVALUE_KEY, server.UrlEncode(text.Value)));

                // text font

                if (null != text.Font)
                {
                    string stringFont = new FontConverter().ConvertToString(text.Font);
                    if ("Arial;10.0f" != stringFont)
                    {
                        parameters.Add(
                            TextImageTransformation.TEXTFONT_KEY,
                            string.Format(parameterFormat, TextImageTransformation.TEXTFONT_KEY, server.UrlEncode(stringFont)));
                    }
                }

                // text color

                if (Color.Black != text.Color)
                {
                    parameters.Add(
                        TextImageTransformation.TEXTCOLOR_KEY,
                        string.Format(parameterFormat, TextImageTransformation.TEXTCOLOR_KEY, text.Color.ToArgb()));
                }

                // text halignment

                if (StringAlignment.Far != text.HorizontalAlign)
                {
                    parameters.Add(
                        TextImageTransformation.TEXTHEIGHTALIGN_KEY,
                        string.Format(parameterFormat, TextImageTransformation.TEXTHEIGHTALIGN_KEY, text.HorizontalAlign));
                }

                // text valignment

                if (StringAlignment.Far != text.VerticalAlign)
                {
                    parameters.Add(
                        TextImageTransformation.TEXTWIDTHALIGN_KEY,
                        string.Format(parameterFormat, TextImageTransformation.TEXTWIDTHALIGN_KEY, text.VerticalAlign));
                }
            }

            // image format

            if (DynamicImageFormat.Original != imageFormat)
            {
                parameters.Add(
                    DynamicImageProvider.IMAGEFORMAT_KEY,
                    string.Format(parameterFormat, DynamicImageProvider.IMAGEFORMAT_KEY, imageFormat));
            }

            if ((null == imageCreator) || (null == imageCreator.Value.Key))
            {
                // source

                if (!string.IsNullOrEmpty(source))
                {
                    parameters.Add(
                        LocalizedImageCreation.SOURCE_KEY,
                        string.Format(parameterFormat, LocalizedImageCreation.SOURCE_KEY, server.UrlEncode(source)));
                }
            }

            // set for last the custom creators and transformations
            // to be able to yield duplicate keys

            // image creation type

            if ((null != imageCreator) && (null != imageCreator.Value.Key))
            {
                parameters.Add(
                    DynamicImageProvider.CREATIONTYPE_KEY,
                    string.Format(parameterFormat, DynamicImageProvider.CREATIONTYPE_KEY, server.UrlEncode(imageCreator.Value.Key.AssemblyQualifiedName)));

                if ((null != imageCreator.Value.Value) && (0 < imageCreator.Value.Value.Count))
                {
                    foreach (KeyValuePair<string, string> param in imageCreator.Value.Value)
                    {
                        if (!string.IsNullOrEmpty(param.Key))
                        {
                            if (parameters.ContainsKey(param.Key) || param.Key.StartsWith(DynamicImageProvider.TRANSFTYPEPREFIX_KEY, StringComparison.InvariantCultureIgnoreCase))
                            {
                                throw new InvalidOperationException("Duplicate parameter key in query string (creation type).");
                            }

                            parameters.Add(param.Key, string.Format(parameterFormat, server.UrlEncode(param.Key), server.UrlEncode(param.Value)));
                        }
                    }
                }
            }

            // image tranformations types
            if ((null != imageTransformations) && (0 < imageTransformations.Count))
            {
                int i = 0;
                foreach (Type t in imageTransformations.Keys)
                {
                    string typeKey = string.Format("{0}{1}", DynamicImageProvider.TRANSFTYPEPREFIX_KEY, i++);

                    parameters.Add(
                        typeKey,
                        string.Format(parameterFormat, typeKey, server.UrlEncode(t.AssemblyQualifiedName)));

                    if ((null != imageTransformations[t]) && (0 < imageTransformations[t].Count))
                    {
                        foreach (KeyValuePair<string, string> param in imageTransformations[t])
                        {
                            if (parameters.ContainsKey(param.Key) || param.Key.StartsWith(DynamicImageProvider.TRANSFTYPEPREFIX_KEY, StringComparison.InvariantCultureIgnoreCase))
                            {
                                throw new InvalidOperationException("Duplicate parameter key in query string (creation type).");
                            }

                            parameters.Add(param.Key, string.Format(parameterFormat, server.UrlEncode(param.Key), server.UrlEncode(param.Value)));
                        }
                    }
                }
            }

            return (parameters.Count > 0) ? string.Join("&", new List<string>(parameters.Values).ToArray()) : string.Empty;
        }
Example #14
0
 public TimeActions(DynamicText label, int timeUnits)
 {
     startingTimeUnits = timeUnits;
     timeLabel         = label;
     ResetTimeUnits();
 }
        private string GenerateText(int length, string charArray)
        {
            if (string.IsNullOrEmpty(charArray))
            {
                return null;
            }

            // generate a new text
            string text = string.Empty;
            for (int i = 0; i < length; i++)
            {
                text += charArray[CaptchaImage.random.Next(charArray.Length)];
            }

            return text;
        }
        /// <summary>
        /// Creates a gradient button image according to the specified params.
        /// </summary>
        /// <param name="parameters">The creator params.</param>
        /// <returns>A new image based on the params.</returns>
        public Image Get(NameValueCollection parameters)
        {
            TextContainerSizeType textSizeType;
            if (!TextDependentImageCreator.ParseTextSizeParam(parameters, out textSizeType))
            {
                textSizeType = TextContainerSizeType.Specified;
            }

            // the size is required

            Size size;
            if (!ResizeImageTransformation.ParseSizeParam(parameters, out size))
            {
                throw new ArgumentNullException("size");
            }

            Image image;

            switch (textSizeType)
            {
                case TextContainerSizeType.Specified:
                    {
                        using (Bitmap temp = new Bitmap(size.Width, size.Height))
                        {
                            MemoryStream ms = new MemoryStream();
                            temp.Save(ms, ImageFormat.Png);
                            image = Image.FromStream(ms);
                        }

                        break;
                    }
                case TextContainerSizeType.StrechToText:
                    {
                        // fit the size on the text

                        DynamicText text;
                        if (!TextImageTransformation.ParseTextParam(parameters, out text))
                        {
                            text = new DynamicText();
                            text.Value = "Gradient button";
                        }

                        Size textSize;
                        using (Bitmap temp = new Bitmap(size.Width, size.Height))
                        {
                            using (Graphics g = Graphics.FromImage(temp))
                            {
                                textSize = g.MeasureString(text.Value, text.Font).ToSize();
                            }
                        }

                        using (Bitmap temp = new Bitmap(textSize.Width + TextDependentImageCreator.padding.Width, textSize.Height + TextDependentImageCreator.padding.Height))
                        {
                            MemoryStream ms = new MemoryStream();
                            temp.Save(ms, ImageFormat.Png);
                            image = Image.FromStream(ms);
                        }

                        break;
                    }
                default:
                    {
                        throw new NotSupportedException("textSizeType");
                    }
            }

            // add background image
            using (Graphics g = Graphics.FromImage(image))
            {
                // add transparent background
                using (Pen pen = new Pen(Color.Transparent))
                {
                    g.DrawRectangle(pen, new Rectangle(Point.Empty, new Size(image.Width, image.Height)));
                }
            }

            return image;
        }
        // Methods
        /// <summary>
        /// Utility method that returns a query string representation based on the provided parameter values.
        /// </summary>
        /// <param name="source">The image source.</param>
        /// <param name="width">The image width.</param>
        /// <param name="height">The image height.</param>
        /// <param name="clientCacheDuration">The image client cache duration.</param>
        /// <param name="serverCacheDuration">The image server cache duration.</param>
        /// <param name="rotateFlip">The image rotate flip type.</param>
        /// <param name="drawGrayscale">The image draw grayscale type.</param>
        /// <param name="drawSepia">The image draw sepia type.</param>
        /// <param name="text">The image dynamic text.</param>
        /// <param name="gradientBackground">The button gradient background.</param>
        /// <param name="sizeType">The button size type.</param>
        /// <param name="textRenderTime">The time when the text is rendered.</param>
        internal static string ToQueryString(
            int width,
            int height,
            int clientCacheDuration,
            int serverCacheDuration,
            RotateFlipType rotateFlip,
            bool drawGrayscale,
            bool drawSepia,
            DynamicText text,
            DynamicImageFormat imageFormat,
            KeyValuePair<Type, IDictionary<string, string>>? imageCreator,
            Dictionary<Type, IDictionary<string, string>> imageTransformations,
            GradientBackground gradientBackground,
            TextContainerSizeType sizeType)
        {
            string dynamicImageQueryString = DynamicImageProvider.ToQueryString(
                null,
                width,
                height,
                clientCacheDuration,
                serverCacheDuration,
                rotateFlip,
                drawGrayscale,
                drawSepia,
                text,
                imageFormat,
                imageCreator,
                imageTransformations);

            List<string> parameters = new List<string>();
            string parameterFormat = "{0}={1}";

            if (null != gradientBackground)
            {
                // gradient border color
                if (Color.Gray != gradientBackground.BorderColor)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGCOLOR_KEY, gradientBackground.BorderColor.ToArgb()));
                }

                // gradient start color
                if (Color.Brown != gradientBackground.GradientStartColor)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGSTARTCOLOR_KEY, gradientBackground.GradientStartColor.ToArgb()));
                }

                // gradient end color
                if (Color.White != gradientBackground.GradientEndColor)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGENDCOLOR_KEY, gradientBackground.GradientEndColor.ToArgb()));
                }

                // gradient round corner radius
                if (0 <= gradientBackground.RoundCornerRadius)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGRCORNER_KEY, gradientBackground.RoundCornerRadius));
                }

                // gradient border width
                if (0 <= gradientBackground.BorderWidth)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGBWIDTH_KEY, gradientBackground.BorderWidth));
                }

                // gradient type
                if (GradientType.BackwardDiagonal != gradientBackground.Type)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGTYPE_KEY, gradientBackground.Type));
                }

                // gradient inner border color
                if (Color.Gray != gradientBackground.InnerBorderColor)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGIBCOLOR_KEY, gradientBackground.InnerBorderColor.ToArgb()));
                }

                // gradient inner border width
                if (0 <= gradientBackground.InnerBorderWidth)
                {
                    parameters.Add(string.Format(parameterFormat, GradientButtonImageTransformation.GRADIENTBKGIBWIDTH_KEY, gradientBackground.InnerBorderWidth));
                }
            }

            // size type
            if (TextContainerSizeType.Specified != sizeType)
            {
                parameters.Add(string.Format(parameterFormat, TextDependentImageCreator.TEXTCONTSIZETYPE_KEY, sizeType));
            }

            return (0 < parameters.Count) ? string.Concat(dynamicImageQueryString, "&", string.Join("&", parameters.ToArray())) : dynamicImageQueryString;
        }
Example #18
0
 /// <summary>
 /// Клонировать объект
 /// </summary>
 public override object Clone()
 {
     DynamicText dynamicText = new DynamicText();
     dynamicText.CopyFrom(this);
     return dynamicText;
 }
Example #19
0
        /// <summary>
        /// Сохранить представление в поток
        /// </summary>
        public void SaveToStream(Stream stream)
        {
            XmlDocument xmlDoc = new XmlDocument();

            XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);

            xmlDoc.AppendChild(xmlDecl);

            // запись заголовка представления
            XmlElement rootElem = xmlDoc.CreateElement("SchemeView");

            rootElem.SetAttribute("title", SchemeParams.Title);
            xmlDoc.AppendChild(rootElem);

            // запись параметров схемы
            XmlElement schemeElem = xmlDoc.CreateElement("Scheme");

            rootElem.AppendChild(schemeElem);

            WriteProp(schemeElem, "Size", SchemeParams.Size);
            WriteProp(schemeElem, "BackColor", SchemeParams.BackColor);
            if (SchemeParams.BackImage != null)
            {
                WriteProp(schemeElem, "BackImageName", SchemeParams.BackImage.Name);
            }
            WriteProp(schemeElem, "ForeColor", SchemeParams.ForeColor);
            WriteProp(schemeElem, "Font", SchemeParams.Font);

            // запись элементов схемы
            XmlElement elemsElem = xmlDoc.CreateElement("Elements");

            rootElem.AppendChild(elemsElem);

            foreach (Element elem in ElementList)
            {
                XmlElement elemElem = xmlDoc.CreateElement(elem.GetType().Name);
                elemsElem.AppendChild(elemElem);

                WriteProp(elemElem, "ID", elem.ID);
                WriteProp(elemElem, "Name", elem.Name);
                WriteProp(elemElem, "Location", elem.Location);
                WriteProp(elemElem, "Size", elem.Size);
                WriteProp(elemElem, "ZIndex", elem.ZIndex);

                if (elem is StaticText)
                {
                    StaticText staticText = (StaticText)elem;
                    WriteProp(elemElem, "AutoSize", staticText.AutoSize);
                    WriteProp(elemElem, "BackColor", staticText.BackColor);
                    WriteProp(elemElem, "BorderColor", staticText.BorderColor);
                    WriteProp(elemElem, "ForeColor", staticText.ForeColor);
                    WriteProp(elemElem, "Font", staticText.Font);
                    WriteProp(elemElem, "Text", staticText.Text);
                    WriteProp(elemElem, "WordWrap", staticText.WordWrap);
                    WriteProp(elemElem, "HAlign", staticText.HAlign);
                    WriteProp(elemElem, "VAlign", staticText.VAlign);

                    if (elem is DynamicText)
                    {
                        DynamicText dynamicText = (DynamicText)elem;
                        WriteProp(elemElem, "ToolTip", dynamicText.ToolTip);
                        WriteProp(elemElem, "UnderlineOnHover", dynamicText.UnderlineOnHover);
                        WriteProp(elemElem, "BackColorOnHover", dynamicText.BackColorOnHover);
                        WriteProp(elemElem, "BorderColorOnHover", dynamicText.BorderColorOnHover);
                        WriteProp(elemElem, "ForeColorOnHover", dynamicText.ForeColorOnHover);
                        WriteProp(elemElem, "InCnlNum", dynamicText.InCnlNum);
                        WriteProp(elemElem, "CtrlCnlNum", dynamicText.CtrlCnlNum);
                        WriteProp(elemElem, "Action", dynamicText.Action);
                        WriteProp(elemElem, "ShowValue", dynamicText.ShowValue);
                    }

                    elemsElem.AppendChild(elemElem);
                }
                else if (elem is StaticPicture)
                {
                    StaticPicture staticPicture = (StaticPicture)elem;
                    WriteProp(elemElem, "BorderColor", staticPicture.BorderColor);
                    if (staticPicture.Image != null)
                    {
                        WriteProp(elemElem, "ImageName", staticPicture.Image.Name);
                    }
                    WriteProp(elemElem, "ImageStretch", staticPicture.ImageStretch);

                    if (elem is DynamicPicture)
                    {
                        DynamicPicture dynamicPicture = (DynamicPicture)elem;
                        WriteProp(elemElem, "ToolTip", dynamicPicture.ToolTip);
                        if (dynamicPicture.ImageOnHover != null)
                        {
                            WriteProp(elemElem, "ImageOnHoverName", dynamicPicture.ImageOnHover.Name);
                        }
                        WriteProp(elemElem, "BorderColorOnHover", dynamicPicture.BorderColorOnHover);
                        WriteProp(elemElem, "InCnlNum", dynamicPicture.InCnlNum);
                        WriteProp(elemElem, "CtrlCnlNum", dynamicPicture.CtrlCnlNum);
                        WriteProp(elemElem, "Action", dynamicPicture.Action);

                        if (dynamicPicture.Conditions != null && dynamicPicture.Conditions.Count > 0)
                        {
                            XmlElement condsElem = xmlDoc.CreateElement("Conditions");
                            elemElem.AppendChild(condsElem);

                            foreach (Condition cond in dynamicPicture.Conditions)
                            {
                                WriteProp(condsElem, "Condition", cond);
                            }
                        }
                    }
                }
            }

            // запись словаря изображений схемы
            XmlElement imagesElem = xmlDoc.CreateElement("Images");

            rootElem.AppendChild(imagesElem);

            foreach (Image image in ImageDict.Values)
            {
                WriteProp(imagesElem, "Image", image);
            }

            // запись фильтра по входным каналам
            XmlElement cnlsFilterElem = xmlDoc.CreateElement("CnlsFilter");

            cnlsFilterElem.InnerText = string.Join <int>(" ", CnlsFilter);
            rootElem.AppendChild(cnlsFilterElem);

            xmlDoc.Save(stream);
        }
Example #20
0
 private void ProcessDynamicText(DynamicText directive)
 {
     GenerateDebugLine(this.builder, directive.Line);
     this.builder.AppendLine(directive.Value);
 }
Example #21
0
 public override void Start()
 {
     base.Start();
     GameObject level = GameObject.Find("LevelText");
     LevelText = DynamicText.GetTextMesh(level.transform.GetChild(0).gameObject);
     LevelText.SetText("");
     pausedMenu = navigate.GetMenu("Pause Menu");
 }
Example #22
0
        public LogicalInventorySlot(InventorySlotId id)
        {
            On <InventoryChangedEvent>(e =>
            {
                if (e.Id == _id.Id)
                {
                    _version++;
                }
            });

            _id = id;

            IText amountSource;

            if (id.Slot == ItemSlotId.Gold)
            {
                amountSource = new DynamicText(() =>
                {
                    var gold = Inventory?.Gold.Amount ?? 0;
                    return(new[] { new TextBlock($"{gold / 10}.{gold % 10}") }); // i18n: May need to vary based on the current game language
                }, x => _version);
            }
            else if (id.Slot == ItemSlotId.Rations)
            {
                amountSource = new DynamicText(() =>
                {
                    var food = Inventory?.Rations.Amount ?? 0;
                    return(new[] { new TextBlock(food.ToString(CultureInfo.InvariantCulture)) }); // i18n: Will need to be changed if we support a language that doesn't use Hindu-Arabic numerals.
                }, x => _version);
            }
            else
            {
                amountSource = new DynamicText(() =>
                {
                    var slotInfo = Slot;
                    return(slotInfo == null || slotInfo.Amount < 2
                        ? Array.Empty <TextBlock>()
                        : new[] { new TextBlock(slotInfo.Amount.ToString(CultureInfo.InvariantCulture))
                                  {
                                      Alignment = TextAlignment.Right
                                  } });                                                                                                        // i18n: Will need to be changed if we support a language that doesn't use Hindu-Arabic numerals.
                }, x => _version);
            }

            _visual = AttachChild(new VisualInventorySlot(_id, amountSource, () => Slot))
                      .OnButtonDown(() =>
            {
                var im          = Resolve <IInventoryManager>();
                var inputBinder = Resolve <IInputBinder>();
                if (im.ItemInHand.Item != null ||
                    inputBinder.IsCtrlPressed ||
                    inputBinder.IsShiftPressed ||
                    inputBinder.IsAltPressed)
                {
                    _visual.SuppressNextDoubleClick = true;
                }
            })
                      .OnClick(() =>
            {
                var inputBinder = Resolve <IInputBinder>();
                if (inputBinder.IsCtrlPressed)
                {
                    Raise(new InventoryPickupEvent(null, _id.Id, _id.Slot));
                }
                else if (inputBinder.IsShiftPressed)
                {
                    Raise(new InventoryPickupEvent(5, _id.Id, _id.Slot));
                }
                else if (inputBinder.IsAltPressed)
                {
                    Raise(new InventoryPickupEvent(1, _id.Id, _id.Slot));
                }
                else
                {
                    Raise(new InventorySwapEvent(_id.Id, _id.Slot));
                }
            })
                      .OnDoubleClick(() => Raise(new InventoryPickupEvent(null, _id.Id, _id.Slot)))
                      .OnRightClick(OnRightClick)
                      .OnHover(Hover)
                      .OnBlur(Blur);
        }
 // Methods
 internal static bool ParseTextParam(NameValueCollection parameters, out DynamicText text)
 {
     if ((null != parameters) && !string.IsNullOrEmpty(parameters[TextImageTransformation.TEXTVALUE_KEY]))
     {
         text = new DynamicText();
         text.Value = parameters[TextImageTransformation.TEXTVALUE_KEY];
         if (!string.IsNullOrEmpty(parameters[TextImageTransformation.TEXTFONT_KEY]))
         {
             text.Font = (Font)new FontConverter().ConvertFromString(parameters[TextImageTransformation.TEXTFONT_KEY]);
         }
         if (!string.IsNullOrEmpty(parameters[TextImageTransformation.TEXTCOLOR_KEY]))
         {
             text.Color = Color.FromArgb(int.Parse(parameters[TextImageTransformation.TEXTCOLOR_KEY]));
         }
         if (!string.IsNullOrEmpty(parameters[TextImageTransformation.TEXTHEIGHTALIGN_KEY]))
         {
             text.HorizontalAlign = (StringAlignment)Enum.Parse(typeof(StringAlignment), parameters[TextImageTransformation.TEXTHEIGHTALIGN_KEY]);
         }
         if (!string.IsNullOrEmpty(parameters[TextImageTransformation.TEXTWIDTHALIGN_KEY]))
         {
             text.VerticalAlign = (StringAlignment)Enum.Parse(typeof(StringAlignment), parameters[TextImageTransformation.TEXTWIDTHALIGN_KEY]);
         }
         return true;
     }
     else
     {
         text = null;
         return false;
     }
 }
Example #24
0
    // Use this for initialization
    void Start()
    {
        gameplay = this;

        _MainCamera = (Camera)gameObject.GetComponent("Camera");

        _SelectionListWindow = new SelectionListWindow(Screen.width / 2, Screen.height / 2 + 100);

        _AbilityManagerList = new SelectionListGenericWindow(Screen.width / 2, Screen.height / 2 + 100);

        _SelectionCardNameWindow = new SelectionCardNameWindow(Screen.width / 2 - 50, Screen.height / 2);
        _SelectionCardNameWindow.CreateCardList();
        _SelectionCardNameWindow.SetGame(this);

        _DecisionWindow = new DecisionWindow(Screen.width / 2, Screen.height / 2 + 100);
        _DecisionWindow.SetGame(this);

        _NotificationWindow = new NotificacionWindow(Screen.width / 2, Screen.height / 2 + 100);
        _NotificationWindow.SetGame(this);

        FromHandToBindList = new List<Card>();

        AttackedList = new List<Card>();

        UnitsCalled = new List<Card>();

        EnemySoulBlastQueue = new List<Card>();

        _PopupNumber = new PopupNumber();

        _MouseHelper = new MouseHelper(this);
        GameChat = new Chat();

        opponent = PlayerVariables.opponent;

        playerHand = new PlayerHand();
        enemyHand = new EnemyHand();

        field = new Field(this);
        enemyField = new EnemyField(this);
        guardZone = new GuardZone();
        guardZone.SetField(field);
        guardZone.SetEnemyField(enemyField);
        guardZone.SetGame(this);

        fieldInfo = new FieldInformation();
        EnemyFieldInfo = new EnemyFieldInformation();

        Data = new CardDataBase();
        List<CardInformation> tmpList = Data.GetAllCards();
        for(int i = 0; i < tmpList.Count; i++)
        {
            _SelectionCardNameWindow.AddNewNameToTheList(tmpList[i]);
        }

        //camera = (CameraPosition)GameObject.FindGameObjectWithTag("MainCamera").GetComponent("CameraPosition");
        //camera.SetLocation(CameraLocation.Hand);

        LoadPlayerDeck();
        LoadEnemyDeck();

        gamePhase = GamePhase.CHOOSE_VANGUARD;

        bDrawing = true;
        bIsCardSelectedFromHand = false;
        bPlayerTurn = false;

        bDriveAnimation = false;
        bChooseTriggerEffects = false;
        DriveCard = null;

        //Texture showed above a card when this is selected for an action (An attack, for instance)
        CardSelector = GameObject.FindGameObjectWithTag("CardSelector");
        _CardMenuHelper = (CardHelpMenu)GameObject.FindGameObjectWithTag("CardMenuHelper").GetComponent("CardHelpMenu");
        _GameHelper = (GameHelper)GameObject.FindGameObjectWithTag("GameHelper").GetComponent("GameHelper");

        bPlayerTurn = PlayerVariables.bFirstTurn;

        //ActivePopUpQuestion(playerDeck.DrawCard());
        _CardMenu = new CardMenu(this);

        _AbilityManager = new AbilityManager(this);
        _AbilityManagerExt = new AbilityManagerExt();

        _GameHelper.SetChat(GameChat);
        _GameHelper.SetGame(this);

        EnemyTurnStackedCards = new List<Card>();

        dummyUnitObject = new UnitObject();
        dummyUnitObject.SetGame(this);

        stateDynamicText = new DynamicText();
    }
        // Methods
        internal static string ToQueryString(
            int width,
            int height,
            int clientCacheDuration,
            int serverCacheDuration,
            RotateFlipType rotateFlip,
            bool drawGrayscale,
            bool drawSepia,
            DynamicText text,
            DynamicImageFormat imageFormat,
            KeyValuePair<Type, IDictionary<string, string>>? imageCreator,
            Dictionary<Type, IDictionary<string, string>> imageTransformations,
            TextContainerSizeType sizeType,
            CaptchaStyle distortionStyle,
            ReadnessLevel readnessLevel,
            Color backColor)
        {
            string dynamicImageQueryString = DynamicImageProvider.ToQueryString(
                null,
                width,
                height,
                clientCacheDuration,
                serverCacheDuration,
                rotateFlip,
                drawGrayscale,
                drawSepia,
                text,
                imageFormat,
                imageCreator,
                imageTransformations);

            List<string> parameters = new List<string>();
            string parameterFormat = "{0}={1}";

            // size type
            if (TextContainerSizeType.Specified != sizeType)
            {
                parameters.Add(string.Format(parameterFormat, TextDependentImageCreator.TEXTCONTSIZETYPE_KEY, sizeType));
            }

            // distortion style
            if (CaptchaStyle.Confetti != distortionStyle)
            {
                parameters.Add(string.Format(parameterFormat, CaptchaImageTransformation.DISTSTYLE_KEY, distortionStyle));
            }

            // readness level
            if (ReadnessLevel.Normal != readnessLevel)
            {
                parameters.Add(string.Format(parameterFormat, CaptchaImageTransformation.READLEVEL_KEY, readnessLevel));
            }

            // back color
            if (Color.White != backColor)
            {
                parameters.Add(string.Format(parameterFormat, CaptchaImageTransformation.CAPTCHABACKCOLOR_KEY, backColor.ToArgb()));
            }

            return (0 < parameters.Count) ? string.Concat(dynamicImageQueryString, "&", string.Join("&", parameters.ToArray())) : dynamicImageQueryString;
        }
Example #26
0
        public override void Read(string filename)
        {
            FileData f     = new FileData(filename);
            int      magic = f.readInt();

            // I don't know what this is for, but it's always the same value
            // so I use it as an endianness sentinel.
            int endianness = f.readInt();

            if (endianness == 0x10)
            {
                f.Endian = System.IO.Endianness.Big;
                Endian   = System.IO.Endianness.Big;
            }
            else
            {
                f.Endian = System.IO.Endianness.Little;
                Endian   = System.IO.Endianness.Little;
            }

            f.skip(0x14);
            int fileSize = f.readInt();

            f.skip(0x20);

            bool done = false;

            while (!done)
            {
                ChunkType chunkType = (ChunkType)f.readInt();
                int       chunkSize = f.readInt(); // in dwords!

                switch (chunkType)
                {
                // Invalid chunk
                case ChunkType.Invalid:
                    // uhhh. i think there's a specific exception for this
                    throw new Exception("Malformed file");

                case ChunkType.Symbols:
                    int numSymbols = f.readInt();

                    while (symbols.Count() < numSymbols)
                    {
                        int len = f.readInt();

                        symbols.Add(f.readString());
                        f.skip(4 - (f.pos() % 4));
                    }

                    break;

                case ChunkType.Colors:
                    int numColors = f.readInt();

                    for (int i = 0; i < numColors; i++)
                    {
                        Color color;
                        color.r = (short)f.readShort();
                        color.g = (short)f.readShort();
                        color.b = (short)f.readShort();
                        color.a = (short)f.readShort();

                        colors.Add(color);
                    }
                    break;

                case ChunkType.End:
                    done = true;
                    break;

                case ChunkType.Transforms:
                    int numTransforms = f.readInt();

                    for (int i = 0; i < numTransforms; i++)
                    {
                        // idk if this is the right order for opentk. should be?
                        transforms.Add(new Matrix3x2(
                                           f.readFloat(), f.readFloat(),
                                           f.readFloat(), f.readFloat(),
                                           f.readFloat(), f.readFloat()
                                           ));
                    }

                    break;

                case ChunkType.Positions:
                    int numPositions = f.readInt();

                    for (int i = 0; i < numPositions; i++)
                    {
                        positions.Add(new Vector2(f.readFloat(), f.readFloat()));
                    }

                    break;

                case ChunkType.Properties:
                    properties.unk1      = f.readInt();
                    properties.unk2      = f.readInt();
                    properties.unk3      = f.readInt();
                    properties.unk4      = f.readInt();
                    properties.unk5      = f.readInt();
                    properties.unk6      = f.readInt();
                    properties.unk7      = f.readInt();
                    properties.framerate = f.readInt();
                    properties.width     = f.readInt();
                    properties.height    = f.readInt();
                    properties.unk8      = f.readInt();
                    properties.unk9      = f.readInt();
                    break;

                case ChunkType.TextureAtlases:
                    int numAtlases = f.readInt();

                    for (int i = 0; i < numAtlases; i++)
                    {
                        TextureAtlas atlas = new TextureAtlas();
                        atlas.id     = f.readInt();
                        atlas.unk    = f.readInt();
                        atlas.width  = f.readFloat();
                        atlas.height = f.readFloat();

                        textureAtlases.Add(atlas);
                    }

                    break;

                case ChunkType.Shape:
                    shapes.Add(new Shape(f));
                    break;

                case ChunkType.DynamicText:
                    DynamicText text = new DynamicText();
                    text.id              = f.readInt();
                    text.unk1            = f.readInt();
                    text.placeholderText = symbols[f.readInt()];
                    text.unk2            = f.readInt();
                    text.colorId         = f.readInt();
                    text.unk3            = f.readInt();
                    text.unk4            = f.readInt();
                    text.unk5            = f.readInt();
                    text.alignment       = (short)f.readShort();
                    text.unk6            = (short)f.readShort();
                    text.unk7            = f.readInt();
                    text.unk8            = f.readInt();
                    text.size            = f.readFloat();
                    text.unk9            = f.readInt();
                    text.unk10           = f.readInt();
                    text.unk11           = f.readInt();
                    text.unk12           = f.readInt();
                    texts.Add(text);
                    break;

                case ChunkType.MovieClip:
                    movieclips.Add(new MovieClip(f));
                    break;

                default:
                    f.skip(chunkSize * 4);
                    break;
                }
            }
        }