using CommonLang.Xml; using CommonUnity3D.UGUI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using UnityEngine; using CommonUI.Data; using TextAnchor = CommonUI.Data.TextAnchor; using FontStyle = CommonUI.Data.FontStyle; namespace CommonUnity3D.UGUIEditor.UI { public class UECheckBox : UETextComponent { protected bool mIsChecked; protected UGUI.ImageSprite mImageUnchecked; protected UGUI.ImageSprite mImageChecked; protected Vector2 mImageTextOffset = new Vector2(); protected ImageAnchor mImageTextAnchor = ImageAnchor.C_C; public UECheckBox(bool use_bitmap) : base(use_bitmap) { base.Enable = true; base.EnableChildren = false; base.IsInteractive = true; this.PointerClick += EventHandler_PointerClick; } public UECheckBox() : this(UIEditor.GlobalUseBitmapText) { } private void EventHandler_PointerClick(DisplayNode sender, UnityEngine.EventSystems.PointerEventData e) { this.mIsChecked = !mIsChecked; } //---------------------------------------------------------------------------------------------- public virtual bool IsChecked { get { return mIsChecked; } set { this.mIsChecked = value; } } //---------------------------------------------------------------------------------------------- public ImageAnchor ImageTextAnchor { get { return mImageTextAnchor; } set { this.mImageTextAnchor = value; } } public Vector2 ImageTextOffset { get { return mImageTextOffset; } set { this.mImageTextOffset = value; } } //---------------------------------------------------------------------------------------------- protected override void OnStart() { if (mTextSprite == null) { if (mUseBitmapFont) { mTextSprite = new BitmapTextSprite("bitmap_text"); } else { mTextSprite = new TextSprite("bitmap_text"); } } base.OnStart(); } protected override void OnUpdateLayout() { base.OnUpdateLayout(); if (IsChecked) { if (mImageChecked != null) { mImageChecked.Visible = true; UIUtils.AdjustAnchor(mImageTextAnchor, this, mImageChecked, mImageTextOffset); } if (mImageUnchecked != null) { mImageUnchecked.Visible = false; } } else { if (mImageUnchecked != null) { mImageUnchecked.Visible = true; UIUtils.AdjustAnchor(mImageTextAnchor, this, mImageUnchecked, mImageTextOffset); } if (mImageChecked != null) { mImageChecked.Visible = false; } } } protected override void DecodeFields(UIEditor.Decoder editor, UIComponentMeta e) { base.DecodeFields(editor, e as UECheckBoxMeta); this.Decode_ImageText(editor, e as UECheckBoxMeta); this.mIsChecked = (e as UECheckBoxMeta).is_checked; } protected override void DecodeEnd(UIEditor.Decoder editor, UIComponentMeta e) { base.DecodeEnd(editor, e); this.EnableChildren = false; this.Enable = true; } private void Decode_ImageText(UIEditor.Decoder editor, UECheckBoxMeta e) { if (!string.IsNullOrEmpty(e.imageAtlasUnchecked)) { this.mImageUnchecked = editor.editor.ParseImageSpriteFromAtlas(e.imageAtlasUnchecked, Vector2.zero); if (mImageUnchecked != null) { this.AddChild(mImageUnchecked); } } else if (!string.IsNullOrEmpty(e.imagePathUnchecked)) { this.mImageUnchecked = editor.editor.ParseImageSpriteFromImage(e.imagePathUnchecked, Vector2.zero); if (mImageUnchecked != null) { this.AddChild(mImageUnchecked); } } if (!string.IsNullOrEmpty(e.imageAtlasChecked)) { this.mImageChecked = editor.editor.ParseImageSpriteFromAtlas(e.imageAtlasChecked, Vector2.zero); if (mImageChecked != null) { this.AddChild(mImageChecked); } } else if (!string.IsNullOrEmpty(e.imagePathChecked)) { this.mImageChecked = editor.editor.ParseImageSpriteFromImage(e.imagePathChecked, Vector2.zero); if (mImageChecked != null) { this.AddChild(mImageChecked); } } this.mImageTextAnchor = e.imageAnchor; this.mImageTextOffset.x = e.imageOffsetX; this.mImageTextOffset.y = e.imageOffsetY; } } }