コード例 #1
0
    public void select_next_group_type()
    {
        if (this.event_type != GROUP_TYPE.NONE)
        {
            this.event_count--;
            if (this.event_count <= 0)
            {
                this.event_type   = GROUP_TYPE.NONE;
                this.normal_count = Random.Range(3, 7);
            }
        }
        else
        {
            this.normal_count--;

            if (this.normal_count <= 0)
            {
                this.event_type = (GROUP_TYPE)Random.Range(0, 4);
                switch (this.event_type)
                {
                default:
                case GROUP_TYPE.DECELERATE:
                case GROUP_TYPE.PASSING:
                case GROUP_TYPE.SLOW:
                    this.event_count = 1;
                    break;

                case GROUP_TYPE.RAPID:
                    this.event_count = Random.Range(2, 4);
                    break;
                }
            }
        }

        if (this.event_type == GROUP_TYPE.NONE)
        {
            float rate;
            rate = (float)this.no_miss_count / 10.0f;
            rate = Mathf.Clamp01(rate);

            // Oni 的 speed 越大,相对 player 的速度是较慢的,所以从 SPEED_MAX 开始插值
            this.next_speed = Mathf.Lerp(OniGroupControl.SPEED_MAX, OniGroupControl.SPEED_MIN, rate);
            this.next_line  = Mathf.Lerp(LevelControl.INTERVAL_MAX, LevelControl.INTERVAL_MIN, rate);

            this.group_type_next = GROUP_TYPE.NORMAL;
        }
        else
        {
            this.group_type_next = this.event_type;
        }
    }
コード例 #2
0
ファイル: CConfig.cs プロジェクト: hyulin/Athena
        public GROUP_TYPE getGroupType(long chatID)
        {
            GROUP_TYPE rtType = GROUP_TYPE.GROUP_TYPE_CLAN;

            foreach (var iter in group_)
            {
                if (iter == chatID)
                {
                    return(rtType);
                }

                rtType++;
            }

            return(GROUP_TYPE.GROUP_TYPE_MAX);
        }
コード例 #3
0
    public void select_next_group_type()
    {
        // ノーマルとイベントの遷移チェック.

        if(this.event_type != GROUP_TYPE.NONE) {

            this.event_count--;

            if(this.event_count <= 0) {

                this.event_type = GROUP_TYPE.NONE;

                this.normal_count = Random.Range(3, 7);
            }

        } else {

            this.normal_count--;

            if(this.normal_count <= 0) {

                // イベントを発生させる.

                this.event_type = (GROUP_TYPE)Random.Range(0, 4);

                switch(this.event_type) {

                    default:
                    case GROUP_TYPE.DECELERATE:
                    case GROUP_TYPE.PASSING:
                    case GROUP_TYPE.SLOW:
                    {
                        this.event_count = 1;
                    }
                    break;

                    case GROUP_TYPE.RAPID:
                    {
                        this.event_count = Random.Range(2, 4);
                    }
                    break;
                }
            }
        }

        // ノーマル、イベントのグループを発生させる.

        if(this.event_type == GROUP_TYPE.NONE) {

            // ノーマルタイプのグループ.

            float		rate;

            rate = (float)this.no_miss_count/10.0f;

            rate = Mathf.Clamp01(rate);

            this.next_speed = Mathf.Lerp(OniGroupControl.SPEED_MAX, OniGroupControl.SPEED_MIN, rate);

            this.next_line = Mathf.Lerp(LevelControl.INTERVAL_MAX, LevelControl.INTERVAL_MIN, rate);

            this.group_type_next = GROUP_TYPE.NORMAL;

        } else {

            // イベントタイプのグループ.

            this.group_type_next = this.event_type;
        }
    }
コード例 #4
0
    public void oniAppearControl()
    {
        #if false
        for(int i = 0;i < 4;i++) {

            if(Input.GetKeyDown((KeyCode)(KeyCode.Alpha1 + i))) {

                this.group_type_next = (GROUP_TYPE)i;

                this.is_random = false;
            }
        }
        if(Input.GetKeyDown(KeyCode.Alpha0)) {

            this.is_random = !this.is_random;
        }
        #endif

        // プレイヤーが一定距離進むごとに、オニのグループを発生させる.

        if(this.can_dispatch) {

            // つぎのグループの発生準備ができている.

        } else {

            // つぎのグループの発生準備ができていない.

            if(this.is_one_group_only()) {

                // 特別パターンのときは、画面からおにがいなくなるのを待つ.

                if(GameObject.FindGameObjectsWithTag("OniGroup").Length == 0) {

                    this.can_dispatch = true;
                }

            } else {

                // 通常パターンのときは、すぐに出せる.
                this.can_dispatch = true;
            }

            if(this.can_dispatch) {

                // 出現させる準備ができたら、プレイヤーの現在位置から出現位置を計算する.

                if(this.group_type_next == GROUP_TYPE.NORMAL) {

                    this.oni_generate_line = this.player.transform.position.x + this.next_line;

                } else if(this.group_type_next == GROUP_TYPE.SLOW) {

                    this.oni_generate_line = this.player.transform.position.x + 50.0f;

                } else {

                    this.oni_generate_line = this.player.transform.position.x + 10.0f;
                }
            }
        }

        // プレイヤーが一定距離進んだら、次のグループを発生させる.

        do {
            if(this.scene_control.oni_group_num >= this.scene_control.oni_group_appear_max )
            {
                break;
            }

            if(!this.can_dispatch) {

                break;
            }

            if(this.player.transform.position.x <= this.oni_generate_line) {

                break;
            }

            //

            this.group_type = this.group_type_next;

            switch(this.group_type) {

                case GROUP_TYPE.SLOW:
                {
                    this.dispatch_slow();
                }
                break;

                case GROUP_TYPE.DECELERATE:
                {
                    this.dispatch_decelerate();
                }
                break;

                case GROUP_TYPE.PASSING:
                {
                    this.dispatch_passing();
                }
                break;

                case GROUP_TYPE.RAPID:
                {
                    this.dispatch_rapid();
                }
                break;

                case GROUP_TYPE.NORMAL:
                {
                    this.dispatch_normal(this.next_speed);
                }
                break;
            }

            // 次回出現するグループのオニの数を更新しておく
            // (だんだん増える).
            this.oni_appear_num++;

            this.oni_appear_num = Mathf.Min(this.oni_appear_num, SceneControl.ONI_APPEAR_NUM_MAX);

            this.can_dispatch = false;

            this.no_miss_count++;

            this.scene_control.oni_group_num++;

            if(this.is_random) {

                // 次に出現するグループを選ぶ.
                this.select_next_group_type();
            }

        } while(false);
    }
コード例 #5
0
    public void     oniAppearControl()
    {
        #if false
        for (int i = 0; i < 4; i++)
        {
            if (Input.GetKeyDown((KeyCode)(KeyCode.Alpha1 + i)))
            {
                this.group_type_next = (GROUP_TYPE)i;

                this.is_random = false;
            }
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            this.is_random = !this.is_random;
        }
        #endif

        // 玩家每前进一定距离后,生成怪物的分组

        if (this.can_dispatch)
        {
            // 已准备好生成下一个分组
        }
        else
        {
            // 未准备好生成下一个分组

            if (this.is_exclusive_group())
            {
                // 特别模式情况下,等待怪物从画面中消失

                if (GameObject.FindGameObjectsWithTag("OniGroup").Length == 0)
                {
                    this.can_dispatch = true;
                }
            }
            else
            {
                // 普通模式下,马上产生
                this.can_dispatch = true;
            }

            if (this.can_dispatch)
            {
                // 准备好出现后,通过玩家的当前位置计算应该出现的位置

                if (this.group_type_next == GROUP_TYPE.NORMAL)
                {
                    this.oni_generate_line = this.player.transform.position.x + this.next_line;
                }
                else if (this.group_type_next == GROUP_TYPE.SLOW)
                {
                    this.oni_generate_line = this.player.transform.position.x + 50.0f;
                }
                else
                {
                    this.oni_generate_line = this.player.transform.position.x + 10.0f;
                }
            }
        }

        // 玩家前进了一定距离后,生成下一个分组

        do
        {
            if (this.scene_control.oni_group_num >= this.scene_control.oni_group_appear_max)
            {
                break;
            }
            if (!this.can_dispatch)
            {
                break;
            }
            if (this.player.transform.position.x <= this.oni_generate_line)
            {
                break;
            }

            //

            this.group_type = this.group_type_next;

            switch (this.group_type)
            {
            case GROUP_TYPE.SLOW:
            {
                this.dispatch_slow();
            }
            break;

            case GROUP_TYPE.DECELERATE:
            {
                this.dispatch_decelerate();
            }
            break;

            case GROUP_TYPE.PASSING:
            {
                this.dispatch_passing();
            }
            break;

            case GROUP_TYPE.RAPID:
            {
                this.dispatch_rapid();
            }
            break;

            case GROUP_TYPE.NORMAL:
            {
                this.dispatch_normal(this.next_speed);
            }
            break;
            }

            // 更新下次出现分组时的怪物数量
            // (逐渐增加)
            this.oni_appear_num++;
            this.oni_appear_num = Mathf.Min(this.oni_appear_num, SceneControl.ONI_APPEAR_NUM_MAX);

            this.can_dispatch = false;

            this.no_miss_count++;

            this.scene_control.oni_group_num++;

            if (this.is_random)
            {
                // 选择下次出现的分组
                this.select_next_group_type();
            }
        } while(false);
    }
コード例 #6
0
    public void select_next_group_type()
    {
        // 检测普通分组和事件分组的状态迁移

        if (this.event_type != GROUP_TYPE.NONE)
        {
            this.event_count--;

            if (this.event_count <= 0)
            {
                this.event_type = GROUP_TYPE.NONE;

                this.normal_count = Random.Range(3, 7);
            }
        }
        else
        {
            this.normal_count--;

            if (this.normal_count <= 0)
            {
                // 产生事件

                this.event_type = (GROUP_TYPE)Random.Range(0, 4);

                switch (this.event_type)
                {
                default:
                case GROUP_TYPE.DECELERATE:
                case GROUP_TYPE.PASSING:
                case GROUP_TYPE.SLOW:
                {
                    this.event_count = 1;
                }
                break;

                case GROUP_TYPE.RAPID:
                {
                    this.event_count = Random.Range(2, 4);
                }
                break;
                }
            }
        }

        // 生成普通分组和事件分组

        if (this.event_type == GROUP_TYPE.NONE)
        {
            // 普通类型的分组

            float rate;

            rate = (float)this.no_miss_count / 10.0f;

            rate = Mathf.Clamp01(rate);

            this.next_speed = Mathf.Lerp(OniGroupControl.SPEED_MAX, OniGroupControl.SPEED_MIN, rate);

            this.next_line = Mathf.Lerp(LevelControl.INTERVAL_MAX, LevelControl.INTERVAL_MIN, rate);

            this.group_type_next = GROUP_TYPE.NORMAL;
        }
        else
        {
            // 事件类型的分组

            this.group_type_next = this.event_type;
        }
    }
コード例 #7
0
    public void oniAppearControl()
    {
#if true
        for (int i = 0; i < 4; i++)
        {
            if (Input.GetKeyDown((KeyCode)(KeyCode.Alpha1 + i)))
            {
                this.group_type_next = (GROUP_TYPE)i;
                this.is_random       = false;
            }
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            this.is_random = !this.is_random;
        }
#endif

        if (!this.can_dispatch)
        {
            if (this.is_special_group())
            {
                if (GameObject.FindGameObjectsWithTag("OniGroup").Length == 0)
                {
                    this.can_dispatch = true;
                }
            }
            else
            {
                this.can_dispatch = true;
            }

            if (this.can_dispatch)
            {
                if (this.group_type_next == GROUP_TYPE.NORMAL)
                {
                    this.oni_generate_line = this.player.transform.position.x + this.next_line;
                }
                else if (this.group_type_next == GROUP_TYPE.SLOW)
                {
                    this.oni_generate_line = this.player.transform.position.x + 50.0f;
                }
                else
                {
                    this.oni_generate_line = this.player.transform.position.x + 10.0f;
                }
            }
        }

        do
        {
            if (this.scene_control.oni_group_num >= this.scene_control.oni_group_appear_max)
            {
                break;
            }
            if (!this.can_dispatch)
            {
                break;
            }
            if (this.player.transform.position.x <= this.oni_generate_line)
            {
                break;
            }

            this.group_type = this.group_type_next;

            switch (this.group_type)
            {
            case GROUP_TYPE.SLOW:
                this.dispatch_slow();
                break;

            case GROUP_TYPE.DECELERATE:
                this.dispatch_decelerate();
                break;

            case GROUP_TYPE.PASSING:
                this.dispatch_passing();
                break;

            case GROUP_TYPE.RAPID:
                this.dispatch_rapid();
                break;

            case GROUP_TYPE.NORMAL:
                this.dispatch_normal(this.next_speed);
                break;
            }

            this.oni_appear_num++;
            this.oni_appear_num = Mathf.Min(this.oni_appear_num, SceneControl.ONI_APPEAR_NUM_MAX);

            this.can_dispatch = false;
            this.no_miss_count++;

            this.scene_control.oni_group_num++;

            if (this.is_random)
            {
                this.select_next_group_type();
            }
        } while (false);
    }
コード例 #8
0
ファイル: CConfig.cs プロジェクト: hyulin/Athena
 public long getGroupKey(GROUP_TYPE type)
 {
     return(group_.ElementAt((int)type));
 }
コード例 #9
0
 public CompoundComparison(GROUP_TYPE pgroupType)
 {
     this.groupType      = pgroupType;
     this.lstComparisons = new List <Comparison>();
 }
コード例 #10
0
    public void     oniAppearControl()
    {
        #if false
        for (int i = 0; i < 4; i++)
        {
            if (Input.GetKeyDown((KeyCode)(KeyCode.Alpha1 + i)))
            {
                this.group_type_next = (GROUP_TYPE)i;

                this.is_random = false;
            }
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            this.is_random = !this.is_random;
        }
        #endif

        // プレイヤーが一定距離進むごとに、オニのグループを発生させる.

        if (this.can_dispatch)
        {
            // つぎのグループの発生準備ができている.
        }
        else
        {
            // つぎのグループの発生準備ができていない.

            if (this.is_one_group_only())
            {
                // 特別パターンのときは、画面からおにがいなくなるのを待つ.

                if (GameObject.FindGameObjectsWithTag("OniGroup").Length == 0)
                {
                    this.can_dispatch = true;
                }
            }
            else
            {
                // 通常パターンのときは、すぐに出せる.
                this.can_dispatch = true;
            }

            if (this.can_dispatch)
            {
                // 出現させる準備ができたら、プレイヤーの現在位置から出現位置を計算する.

                if (this.group_type_next == GROUP_TYPE.NORMAL)
                {
                    this.oni_generate_line = this.player.transform.position.x + this.next_line;
                }
                else if (this.group_type_next == GROUP_TYPE.SLOW)
                {
                    this.oni_generate_line = this.player.transform.position.x + 50.0f;
                }
                else
                {
                    this.oni_generate_line = this.player.transform.position.x + 10.0f;
                }
            }
        }

        // プレイヤーが一定距離進んだら、次のグループを発生させる.

        do
        {
            if (this.scene_control.oni_group_num >= this.scene_control.oni_group_appear_max)
            {
                break;
            }

            if (!this.can_dispatch)
            {
                break;
            }

            if (this.player.transform.position.x <= this.oni_generate_line)
            {
                break;
            }

            //

            this.group_type = this.group_type_next;

            switch (this.group_type)
            {
            case GROUP_TYPE.SLOW:
            {
                this.dispatch_slow();
            }
            break;

            case GROUP_TYPE.DECELERATE:
            {
                this.dispatch_decelerate();
            }
            break;

            case GROUP_TYPE.PASSING:
            {
                this.dispatch_passing();
            }
            break;

            case GROUP_TYPE.RAPID:
            {
                this.dispatch_rapid();
            }
            break;

            case GROUP_TYPE.NORMAL:
            {
                this.dispatch_normal(this.next_speed);
            }
            break;
            }

            // 次回出現するグループのオニの数を更新しておく
            // (だんだん増える).
            this.oni_appear_num++;

            this.oni_appear_num = Mathf.Min(this.oni_appear_num, SceneControl.ONI_APPEAR_NUM_MAX);

            this.can_dispatch = false;

            this.no_miss_count++;

            this.scene_control.oni_group_num++;

            if (this.is_random)
            {
                // 次に出現するグループを選ぶ.
                this.select_next_group_type();
            }
        } while(false);
    }
コード例 #11
0
    public void select_next_group_type()
    {
        // ノーマルとイベントの遷移チェック.

        if (this.event_type != GROUP_TYPE.NONE)
        {
            this.event_count--;

            if (this.event_count <= 0)
            {
                this.event_type = GROUP_TYPE.NONE;

                this.normal_count = Random.Range(3, 7);
            }
        }
        else
        {
            this.normal_count--;

            if (this.normal_count <= 0)
            {
                // イベントを発生させる.

                this.event_type = (GROUP_TYPE)Random.Range(0, 4);

                switch (this.event_type)
                {
                default:
                case GROUP_TYPE.DECELERATE:
                case GROUP_TYPE.PASSING:
                case GROUP_TYPE.SLOW:
                {
                    this.event_count = 1;
                }
                break;

                case GROUP_TYPE.RAPID:
                {
                    this.event_count = Random.Range(2, 4);
                }
                break;
                }
            }
        }

        // ノーマル、イベントのグループを発生させる.

        if (this.event_type == GROUP_TYPE.NONE)
        {
            // ノーマルタイプのグループ.

            float rate;

            rate = (float)this.no_miss_count / 10.0f;

            rate = Mathf.Clamp01(rate);

            this.next_speed = Mathf.Lerp(OniGroupControl.SPEED_MAX, OniGroupControl.SPEED_MIN, rate);

            this.next_line = Mathf.Lerp(LevelControl.INTERVAL_MAX, LevelControl.INTERVAL_MIN, rate);

            this.group_type_next = GROUP_TYPE.NORMAL;
        }
        else
        {
            // イベントタイプのグループ.

            this.group_type_next = this.event_type;
        }
    }