示例#1
0
 public void Execute(CollisionEvent collisionEvent)
 {
     if (bulletGroup.HasComponent(collisionEvent.EntityA))
     {
         if (unitGroup.HasComponent(collisionEvent.EntityB))
         {
             HealthData data = unitGroup[collisionEvent.EntityB];
             if (data.damageCoolDown <= 0)
             {
                 data.damageCoolDown = 0.1f;
                 data.health        -= 5;
                 unitGroup[collisionEvent.EntityB] = data;
                 BulletTag bullet = bulletGroup[collisionEvent.EntityA];
                 bullet.destroyTimer = 0;
                 bulletGroup[collisionEvent.EntityA] = bullet;
             }
         }
     }
     else if (unitGroup.HasComponent(collisionEvent.EntityA))
     {
         if (bulletGroup.HasComponent(collisionEvent.EntityB))
         {
             HealthData data = unitGroup[collisionEvent.EntityA];
             if (data.damageCoolDown <= 0)
             {
                 data.damageCoolDown = 0.1f;
                 data.health        -= 5;
                 unitGroup[collisionEvent.EntityB] = data;
                 BulletTag bullet = bulletGroup[collisionEvent.EntityB];
                 bullet.destroyTimer = 0;
                 bulletGroup[collisionEvent.EntityA] = bullet;
             }
         }
     }
 }
示例#2
0
    //BulletTag stuff, somewhat shorter than the last one
    void BulletTagsGUI()
    {
        if (bp.bulletTags == null)
        {
            bp.bulletTags = new BulletTag[0];
        }

        var bulletTags = new List <BulletTag>(bp.bulletTags);

        if (bulletTags.Count != bp.btFoldouts.Count)
        {
            bp.btFoldouts = new List <bool>(new bool[bulletTags.Count]);
        }

        if (bulletTags.Count != bp.btaFoldouts.Count)
        {
            bp.btaFoldouts = new List <ActionFoldouts>(new ActionFoldouts[bulletTags.Count]);
            if (bp.btaFoldouts.Count > 0)
            {
                for (var zz = 0; zz < bp.btaFoldouts.Count; zz++)
                {
                    bp.btaFoldouts[zz] = new ActionFoldouts();
                }
            }
        }

        GUILayout.BeginHorizontal();
        bp.btFoldout = EditorGUILayout.Foldout(bp.btFoldout, "BulletTags");
        if (GUILayout.Button("Collapse All", GUILayout.Width(150)))
        {
            bp.btFoldout = !bp.btFoldout;

            for (int zz = 0; zz < bp.btFoldouts.Count; zz++)
            {
                bp.btFoldouts[zz] = bp.btFoldout;
            }
        }
        GUILayout.EndHorizontal();

        if (bp.btFoldout)
        {
            EditorGUI.indentLevel++;
            var removeIndex = -1;
            var moveIndex   = -1;

            for (var l = 0; l < bulletTags.Count; l++)
            {
                EditorGUIUtility.labelWidth = 140;
                EditorGUIUtility.fieldWidth = 100;

                GUILayout.BeginHorizontal();
                var str = "BulletTag " + (l + 1);
                bp.btFoldouts[l] = EditorGUILayout.Foldout(bp.btFoldouts[l], str);

                if (GUILayout.Button("Down", GUILayout.Width(50)))
                {
                    moveIndex = l;
                }

                if (GUILayout.Button("Remove", GUILayout.Width(80)))
                {
                    removeIndex = l;
                }
                GUILayout.EndHorizontal();

                EditorGUILayout.Space();

                if (bp.btFoldouts[l])
                {
                    GUI.changed = false;

                    EditorGUI.indentLevel++;

                    var bt = bulletTags[l];

                    GUILayout.BeginHorizontal();
                    if (!bt.randomSpeed)
                    {
                        bt.speed.x = EditorGUILayout.FloatField("Speed", bt.speed.x);
                    }
                    else
                    {
                        bt.speed = EditorGUILayout.Vector2Field("Speed Range", bt.speed);
                    }
                    bt.randomSpeed = EditorGUILayout.Toggle("Randomize", bt.randomSpeed);
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    bt.rankSpeed = EditorGUILayout.Toggle("Add Rank", bt.rankSpeed);
                    if (bt.rankSpeed)
                    {
                        bt.speed.z = EditorGUILayout.FloatField("RankSpeed", bt.speed.z);
                    }
                    GUILayout.EndHorizontal();
                    bt.prefabIndex = EditorGUILayout.IntSlider("PrefabIndex", bt.prefabIndex, 0, bm.bulletPrefab.Length - 1);

                    if (GUI.changed)
                    {
                        SceneView.RepaintAll();
                    }

                    BulletTagActionsGUI(l);

                    EditorGUI.indentLevel--;
                    EditorGUILayout.Space();
                }
            }

            if (moveIndex >= 0 && moveIndex != bulletTags.Count - 1)
            {
                var temp = bulletTags[moveIndex];
                bulletTags[moveIndex]     = bulletTags[moveIndex + 1];
                bulletTags[moveIndex + 1] = temp;

                var temp2 = bp.btFoldouts[moveIndex];
                bp.btFoldouts[moveIndex]     = bp.btFoldouts[moveIndex + 1];
                bp.btFoldouts[moveIndex + 1] = temp2;

                var temp3 = bp.btaFoldouts[moveIndex];
                bp.btaFoldouts[moveIndex]     = bp.btaFoldouts[moveIndex + 1];
                bp.btaFoldouts[moveIndex + 1] = temp3;
            }

            if (removeIndex >= 0)
            {
                bulletTags.RemoveAt(removeIndex);
                bp.btFoldouts.RemoveAt(removeIndex);
                bp.btaFoldouts.RemoveAt(removeIndex);
            }

            EditorGUILayout.Space();

            GUILayout.BeginHorizontal();
            GUILayout.Label("");
            if (GUILayout.Button("Add Bullet Tag", GUILayout.Width(100)))
            {
                var bt = new BulletTag();
                bulletTags.Add(bt);
                bp.btFoldouts.Add(true);
                bp.btaFoldouts.Add(new ActionFoldouts());
            }
            GUILayout.EndHorizontal();

            bp.bulletTags = bulletTags.ToArray();
        }

        EditorGUILayout.Space();
    }
    //BulletTag stuff, somewhat shorter than the last one
    void BulletTagsGUI()
    {
        if (bp.bulletTags == null)
            bp.bulletTags = new BulletTag[0];

        var bulletTags = new List<BulletTag>(bp.bulletTags);

        if (bulletTags.Count != bp.btFoldouts.Count)
            bp.btFoldouts = new List<bool>(new bool[bulletTags.Count]);

        if (bulletTags.Count != bp.btaFoldouts.Count)
        {
            bp.btaFoldouts = new List<ActionFoldouts>(new ActionFoldouts[bulletTags.Count]);
            if (bp.btaFoldouts.Count > 0)
            {
                for (var zz = 0; zz < bp.btaFoldouts.Count; zz++)
                {
                    bp.btaFoldouts[zz] = new ActionFoldouts();
                }
            }
        }

        GUILayout.BeginHorizontal();
        bp.btFoldout = EditorGUILayout.Foldout(bp.btFoldout, "BulletTags");
        if (GUILayout.Button("Collapse All", GUILayout.Width(150)))
        {
            bp.btFoldout = !bp.btFoldout;

            for (int zz = 0; zz < bp.btFoldouts.Count; zz++)
                bp.btFoldouts[zz] = bp.btFoldout;
        }
        GUILayout.EndHorizontal();

        if (bp.btFoldout)
        {
            EditorGUI.indentLevel++;
            var removeIndex = -1;
            var moveIndex = -1;

            for (var l = 0; l < bulletTags.Count; l++)
            {
                EditorGUIUtility.labelWidth = 140;
                EditorGUIUtility.fieldWidth = 100;

                GUILayout.BeginHorizontal();
                var str = "BulletTag " + (l + 1);
                bp.btFoldouts[l] = EditorGUILayout.Foldout(bp.btFoldouts[l], str);

                if (GUILayout.Button("Down", GUILayout.Width(50)))
                    moveIndex = l;

                if (GUILayout.Button("Remove", GUILayout.Width(80)))
                    removeIndex = l;
                GUILayout.EndHorizontal();

                EditorGUILayout.Space();

                if (bp.btFoldouts[l])
                {
                    GUI.changed = false;

                    EditorGUI.indentLevel++;

                    var bt = bulletTags[l];

                    GUILayout.BeginHorizontal();
                    if (!bt.randomSpeed)
                        bt.speed.x = EditorGUILayout.FloatField("Speed", bt.speed.x);
                    else
                        bt.speed = EditorGUILayout.Vector2Field("Speed Range", bt.speed);
                    bt.randomSpeed = EditorGUILayout.Toggle("Randomize", bt.randomSpeed);
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    bt.rankSpeed = EditorGUILayout.Toggle("Add Rank", bt.rankSpeed);
                    if (bt.rankSpeed)
                        bt.speed.z = EditorGUILayout.FloatField("RankSpeed", bt.speed.z);
                    GUILayout.EndHorizontal();
                    bt.prefabIndex = EditorGUILayout.IntSlider("PrefabIndex", bt.prefabIndex, 0, bm.bulletPrefab.Length - 1);

                    if (GUI.changed)
                        SceneView.RepaintAll();

                    BulletTagActionsGUI(l);

                    EditorGUI.indentLevel--;
                    EditorGUILayout.Space();
                }
            }

            if (moveIndex >= 0 && moveIndex != bulletTags.Count - 1)
            {
                var temp = bulletTags[moveIndex];
                bulletTags[moveIndex] = bulletTags[moveIndex + 1];
                bulletTags[moveIndex + 1] = temp;

                var temp2 = bp.btFoldouts[moveIndex];
                bp.btFoldouts[moveIndex] = bp.btFoldouts[moveIndex + 1];
                bp.btFoldouts[moveIndex + 1] = temp2;

                var temp3 = bp.btaFoldouts[moveIndex];
                bp.btaFoldouts[moveIndex] = bp.btaFoldouts[moveIndex + 1];
                bp.btaFoldouts[moveIndex + 1] = temp3;
            }

            if (removeIndex >= 0)
            {
                bulletTags.RemoveAt(removeIndex);
                bp.btFoldouts.RemoveAt(removeIndex);
                bp.btaFoldouts.RemoveAt(removeIndex);
            }

            EditorGUILayout.Space();

            GUILayout.BeginHorizontal();
            GUILayout.Label("");
            if (GUILayout.Button("Add Bullet Tag", GUILayout.Width(100)))
            {
                var bt = new BulletTag();
                bulletTags.Add(bt);
                bp.btFoldouts.Add(true);
                bp.btaFoldouts.Add(new ActionFoldouts());

            }
            GUILayout.EndHorizontal();

            bp.bulletTags = bulletTags.ToArray();

        }

        EditorGUILayout.Space();
    }