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; } }
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); }
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; } }
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); }
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); }
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; } }
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); }
public long getGroupKey(GROUP_TYPE type) { return(group_.ElementAt((int)type)); }
public CompoundComparison(GROUP_TYPE pgroupType) { this.groupType = pgroupType; this.lstComparisons = new List <Comparison>(); }
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); }
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; } }