示例#1
0
 /// <summary>
 /// こうげきだまパターンデータから設定する
 /// </summary>
 /// <param name="data"></param>
 public void SetAttackPattern(AttackPatternData data)
 {
     CharacterName = data.CharacterName;
     if (image != null)
     {
         var texture = AttackPatternSampleGenerator.Generate(data, 80, 80, setting);
         image.sprite = Sprite.Create(texture, new Rect(0, 0, 80, 80), Vector2.zero);
     }
 }
示例#2
0
        /// <summary>
        /// テクスチャ生成
        /// </summary>
        /// <param name="data"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static Texture2D Generate(AttackPatternData data, int width, int height, IRowColInfo setting)
        {
            Context context = new Context(width, height, setting.ColumnsCount);

            Color32[] pixels = new Color32[width * height];
            Color32   black  = new Color32(0, 0, 0, 255);
            Color32   white  = new Color32(255, 255, 255, 255);

            context.SetRect(pixels, 0, 0, width, height, white, black);
            int dropIndex   = 0;
            int liftUpIndex = 0;

            int leftSampleCount = (data.SampleCount == 0) ? 24 : data.SampleCount;

            for (int i = 0; (i < data.AttackDirectionPattern.Length) && (leftSampleCount > 0); ++i)
            {
                int count = System.Math.Min(leftSampleCount, 6);
                leftSampleCount -= count;

                if (data.AttackDirectionPattern[i] == AttackPatternData.AttackDirectionType.Top)
                {
                    for (int j = 0; j < count; ++j)
                    {
                        bool set = false;
                        do
                        {
                            var a = data.DropAttackTamaPattern[dropIndex++];
                            if (a.Position.y >= data.SampleSkipRows)
                            {
                                context.PutDrop(a.Position.x, a.Position.y - data.SampleSkipRows, a.Color);
                                set = true;
                            }
                        } while (!set);
                    }
                }
                else
                {
                    for (int j = 0; j < count; ++j)
                    {
                        var a = data.LiftAttackTamaPattern[liftUpIndex++];
                        if (liftUpIndex == data.LiftAttackTamaPattern.Length)
                        {
                            liftUpIndex = 0;
                        }
                        context.PutLiftUp(a.Position.x, -a.Position.y, a.Color);
                    }
                }
            }
            context.Apply(pixels);

            Texture2D texture = new Texture2D(width, height, TextureFormat.ARGB32, false);

            texture.SetPixels32(pixels);
            texture.Apply();
            return(texture);
        }
示例#3
0
        /// <summary>
        /// 選択されたこうげきだまパターンを設定
        /// </summary>
        /// <param name="playerNo"></param>
        /// <param name="data"></param>
        public void SetPlayerAttackPattern(int playerNo, AttackPatternData data, Sprite sprite)
        {
            if ((playerNo < 0) || (playerNo >= selectedPatterns.Length))
            {
                return;
            }

            selectedPatterns[playerNo]       = data;
            selectedPatternSprites[playerNo] = sprite;
        }
示例#4
0
        /// <summary>
        /// 編集するアセットを設定する
        /// </summary>
        private void AssetField()
        {
            var p = EditorGUILayout.ObjectField("パターンデータ", pattern, typeof(AttackPatternData), false) as AttackPatternData;

            if (pattern != p)
            {
                assetPath = AssetDatabase.GetAssetPath(p);
                pattern   = p;
                GenerateAttackSampleTexture();
            }
        }
示例#5
0
        public CharacterPanel Add(AttackPatternData data, UnityAction listener)
        {
            var panel = GameObject.Instantiate <CharacterPanel>(characterPanelPrefab);

            panel.name = data.CharacterName;
            panel.transform.SetParent(grid.transform);
            panel.SetAttackPattern(data);
            var button = panel.GetComponentInChildren <Button>();

            button.onClick.AddListener(listener);
            return(panel);
        }
示例#6
0
 /// <summary>
 /// パターンを新規作成
 /// </summary>
 private void CreateNewPattern()
 {
     EditorGUILayout.LabelField("アセットを指定するか新規作成してください");
     assetPath = EditorGUILayout.TextField("アセットパス", assetPath);
     EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(assetPath) && (pattern == null));
     if (GUILayout.Button("作成"))
     {
         pattern = AssetDatabase.LoadAssetAtPath(assetPath, typeof(AttackPatternData)) as AttackPatternData;
         if (pattern == null)
         {
             pattern = new AttackPatternData();
             AssetDatabase.CreateAsset(pattern, assetPath);
             EditorUtility.SetDirty(pattern);
             AssetDatabase.SaveAssets();
         }
     }
     EditorGUI.EndDisabledGroup();
 }