예제 #1
0
        //キャラクターのパターン変更をキーフレームアニメーションから呼ぶためのメソッド
        public virtual void ChangePatternAnimation(string paraString)
        {
            if (LastResource == null)
            {
                Debug.LogError("ChangePatternAnimationError  LastResource is null");
                return;
            }
            AdvCharacterSettingData characterData = LastResource.SettingData as AdvCharacterSettingData;

            if (characterData == null)
            {
                Debug.LogError("ChangePatternAnimationError  characterData is null");
                return;
            }

            string[] after = paraString.Split(new char[] { ',' });
            float    fadeTime;

            if (after.Length <= 0)
            {
                Debug.LogError("ChangePatternAnimationError  argString = " + paraString);
                return;
            }
            else if (after.Length == 1)
            {
                fadeTime = 0;
            }
            else
            {
                if (!WrapperUnityVersion.TryParseFloatGlobal(after[1], out fadeTime))
                {
                    Debug.LogError("ChangePatternAnimationError  " + after[1] + " is not float string");
                    return;
                }
            }
            //0秒だと、DestroyImmediateが呼ばれてしまうが
            //AnimationClip中でそれが許可されていないため
            fadeTime = Mathf.Max(fadeTime, 0.001f);

            string pattern = after[0];
            AdvCharacterSettingData newPatternData = Engine.DataManager.SettingDataManager.CharacterSetting.GetCharacterData(characterData.Name, pattern);

            if (newPatternData == null)
            {
                Debug.LogError("ChangePatternAnimationError  pattern is not pattern name");
                return;
            }

            //Graphicのロードは考慮しない
            var graphic = newPatternData.Graphic.Main;

            //描画
            DrawSub(graphic, Engine.Page.ToSkippedTime(fadeTime));
            //モーション変更
            if (!string.IsNullOrEmpty(graphic.AnimationState))
            {
                TargetObject.ChangeAnimationState(graphic.AnimationState, fadeTime);
            }
        }
예제 #2
0
		//ロードの必要があるファイルを追加
		public void AddLoadGraphic(AdvGraphicInfo graphic)
		{
			if (graphic == null) return;
			if (IsEntityType) return;

			AddLoadFileSub(graphic.File);

			//キャラクターの場合はアイコンファイルもロード
			if (graphic.SettingData is AdvCharacterSettingData)
			{
				AdvCharacterSettingData settingData = graphic.SettingData as AdvCharacterSettingData;
				if (settingData.Icon != null && settingData.Icon.File !=null)
				{
					AddLoadFileSub(settingData.Icon.File);
				}
			}
		}
예제 #3
0
        public bool CheckType(AdvGraphicObjectType type)
        {
            if (LastResource == null)
            {
                return(false);
            }
            switch (type)
            {
            case AdvGraphicObjectType.Character:
            {
                AdvCharacterSettingData settingData = LastResource.SettingData as AdvCharacterSettingData;
                return(settingData != null);
            }

            case AdvGraphicObjectType.Bg:
            {
                AdvTextureSettingData settingData = LastResource.SettingData as AdvTextureSettingData;
                if (settingData == null)
                {
                    return(false);
                }
                return(settingData.TextureType == AdvTextureSettingData.Type.Bg || settingData.TextureType == AdvTextureSettingData.Type.Sprite);
            }

            default:
            case AdvGraphicObjectType.Sprite:
            {
                AdvTextureSettingData settingData = LastResource.SettingData as AdvTextureSettingData;
                if (settingData == null)
                {
                    return(false);
                }
                return(settingData.TextureType == AdvTextureSettingData.Type.Sprite);
            }
            }
        }
예제 #4
0
        //テキストに変更があった場合
        protected virtual bool TyrSetIcon(AdvPage page)
        {
            this.targetObject = null;
            AdvCharacterInfo info = page.CharacterInfo;

            if (info == null || info.Graphic == null || info.Graphic.Main == null)
            {
                return(false);
            }

            AdvGraphicInfo          graphic     = info.Graphic.Main;
            AdvCharacterSettingData settingData = graphic.SettingData as AdvCharacterSettingData;

            if (settingData == null)
            {
                return(false);
            }

            AdvCharacterSettingData.IconInfo iconInfo = settingData.Icon;
            if (iconInfo.IconType == AdvCharacterSettingData.IconInfo.Type.None)
            {
                return(false);
            }

            this.targetObject = Engine.GraphicManager.FindObject(info.Label);

            switch (iconInfo.IconType)
            {
            case AdvCharacterSettingData.IconInfo.Type.IconImage:
                SetIconImage(iconInfo.File);
                return(true);

            case AdvCharacterSettingData.IconInfo.Type.DicingPattern:
                SetIconDicingPattern(iconInfo.File, iconInfo.IconSubFileName);
                return(true);

            case AdvCharacterSettingData.IconInfo.Type.RectImage:
                IconGraphicType type = ParseIconGraphicType(graphic, info.Label);
                switch (type)
                {
                case IconGraphicType.Default:
                    SetIconRectImage(graphic, iconInfo.IconRect);
                    return(true);

                case IconGraphicType.Dicing:
                    SetIconDicing(graphic, iconInfo.IconRect);
                    return(true);

                case IconGraphicType.RenderTexture:
                    SetIconRenderTexture(iconInfo.IconRect);
                    return(true);

                case IconGraphicType.NotSupport:
                default:
                    return(false);
                }

            case AdvCharacterSettingData.IconInfo.Type.None:
            default:
                return(false);
            }
        }
예제 #5
0
        public static AdvCharacterInfo Create(AdvCommand command, AdvSettingDataManager dataManager)
        {
            if (command.IsEmptyCell(AdvColumnName.Arg1))
            {
                return(null);
            }

            //名前
            string nameText       = command.ParseCell <string>(AdvColumnName.Arg1);
            string characterLabel = nameText;
            //第二引数を解析
            //基本的にはパターン名だが
            //キャラクターラベルの指定タグがあったり、非表示タグする
            bool   isHide  = false;
            string erroMsg = "";
            string pattern = ParserUtil.ParseTagTextToString(
                command.ParseCellOptional <string>(AdvColumnName.Arg2, ""),
                (tagName, arg) =>
            {
                bool failed = false;
                switch (tagName)
                {
                case "Off":
                    //非表示タグ
                    isHide = true;
                    break;

                case "Character":
                    //キャラクターラベルの指定タグ
                    characterLabel = arg;
                    break;

                default:
                    erroMsg = "Unkownn Tag <" + tagName + ">";
                    failed  = true;
                    break;
                }
                return(!failed);
            });

            if (!string.IsNullOrEmpty(erroMsg))
            {
                Debug.LogError(erroMsg);
                return(null);
            }

            if (!dataManager.CharacterSetting.Contains(characterLabel))
            {
                //そもそもキャラ表示がない場合、名前表示のみになる
                return(new AdvCharacterInfo(characterLabel, nameText, pattern, isHide, null));
            }

            AdvCharacterSettingData data = dataManager.CharacterSetting.GetCharacterData(characterLabel, pattern);

            //キャラの表示情報の記述エラー
            if (data == null)
            {
                Debug.LogError(command.ToErrorString(characterLabel + ", " + pattern + " is not contained in Chactecter Sheet"));
                return(null);
            }
            //名前テキストをキャラクターシートの定義に変更
            if (!string.IsNullOrEmpty(data.NameText) && nameText == characterLabel)
            {
                nameText = data.NameText;
            }
            return(new AdvCharacterInfo(characterLabel, nameText, pattern, isHide, data.Graphic));
        }