public void update() { camera_move_update(); if(global_instance.Instance._crash_mole_grid_manager.get_game_type() == game_type.game) { if (_game_state == gameState.game_playing && _need_play_animation == false) { Vector3 vc_position = _creature.get_position(); crash_pos pos = new crash_pos(); pos._x = transform_to_map(vc_position.x); pos._y = transform_to_map(vc_position.y); pos._z = transform_to_map(vc_position.z); if (get_crash_obj_addr(pos) != null) { if (get_crash_obj_addr(pos)._crash_obj != null) { if (get_crash_obj_addr(pos)._crash_obj.get_obj_type() == crash_obj_type.flag) { GameEnd(); } } } while (_catch_click_list.Count != 0) { KeyValuePair<int, bool> entry = _catch_click_list.Dequeue(); _catch_click(entry.Key, entry.Value); } } update_move_animation(); } }
public void clone(crash_pos pos) { _x = pos._x; _y = pos._y; _z = pos._z; }
protected void _catch_click(int i, bool his) { if (_creature._is_in_falldown == false) { if (i == 0) { _cash_click = false; } else { _cash_click = true; } Vector3 vc = _creature.get_position(); dir_move dir = _creature.get_dir(); crash_pos pos = new crash_pos(); pos._x = transform_to_map(vc.x); pos._y = transform_to_map(vc.y); pos._z = transform_to_map(vc.z); if (_cash_click) { if (_freezen_creature == false) { crash_pos pos_target = new crash_pos(); pos_target.clone(pos); pos_target.move(dir); if (check_pos_valid(pos_target) == true) { crash_mole target_mole = get_crash_mole_addr(pos_target)._crash_mole; if (target_mole != null) { _freezen_creature = true; if (his == false) { _creature.frozen_history(_freezen_creature); } _obj_creature = new crash_obj_creature(pos._x, pos._y, pos._z); _obj_creature._creature = _creature; _creature.set_position(pos._x + 0.45f, pos._y + 0.2f, pos._z + 0.5f); target_mole.add_crash_obj(_obj_creature); _lock_mole.Add(target_mole); global_instance.Instance._ngui_edit_manager.CatchButtonUpdate (true); } } } } else { if (_obj_creature != null) { _lock_mole.Clear(); if (_freezen_creature == true) { pos.move(dir_move.up); if (check_pos_valid(pos)) { if (_obj_creature._crash_mole != null) { crash_mole mole_temp = _obj_creature._crash_mole; mole_temp.remove_crash_obj(_obj_creature); _obj_creature = null; } } global_instance.Instance._ngui_edit_manager.CatchButtonUpdate (false); _freezen_creature = false; if (his == false) { _creature.frozen_history(_freezen_creature); } } } } } }
public bool isvalid(crash_pos temp) { return isvalid(temp._x, temp._y, temp._z); }
public crash_mole_addr get_crash_mole_addr(crash_pos pos) { crash_mole_addr temp = null; if(isvalid(pos)) { temp = _crash_moles[pos._x, pos._z, pos._y]; } return temp; }
protected bool move(crash_mole mole, dir_move dir) { if(mole == null) { return false; } _use_count++; int min_move_y = (int)crash_define.max_y; foreach (crash_base_obj entry in mole._crash_objs) { crash_pos pos_temp = new crash_pos(); pos_temp = entry._pos; if (min_move_y > pos_temp._y) { min_move_y = pos_temp._y; } pos_temp.move(dir); Vector3 vec = _creature.get_position(); int pos_x = transform_to_map(vec.x); int pos_y = transform_to_map(vec.y); int pos_z = transform_to_map(vec.z); if(_freezen_creature == false) { if (pos_temp._x == pos_x && pos_temp._y == pos_y && pos_temp._z == pos_z) { return false; } } if (check_pos_valid(pos_temp)) { crash_mole mole_entry = get_crash_mole_addr(pos_temp)._crash_mole; if (is_in_can_not_move_list(mole_entry) == true) { return false; } if(mole_entry == null) { continue; } else { if(mole_entry == mole) { continue; } int length = _move_mole_list.Count; bool have_mole = false; for (int i = 0; i < length; i++) { if (mole_entry == (crash_mole)_move_mole_list[i]) { have_mole = true; } } if (have_mole == true) { continue; } else { _move_mole_list.Add(mole_entry); } if (move(mole_entry, dir) == false) { foreach(crash_mole entry_temp in _move_mole_list) { add_can_not_move_list(entry_temp); } _move_mole_list.Clear(); return false; } } } else { _move_mole_list.Clear(); return false; } } return true; }
public bool check_pos_valid(crash_pos pos) { if (pos._x < 0 || pos._y < 0 || pos._z < 0) { return false; } if (pos._x >= (int)_max_x || pos._y >= (int)_max_y || pos._z >= (int)_max_z) { return false; } return true; }
public bool is_block_creature(float tempx, float tempy, float tempz) { float block_width = 0.18f; crash_pos pos = new crash_pos(); pos._x = transform_to_map(tempx); pos._y = transform_to_map(tempy); pos._z = transform_to_map(tempz); if (isvalid(pos) == false) { return true; } if (is_block(tempx, tempy, tempz) == true) { return true; } if(check_block(tempx, tempy, tempz, block_width)) { return true; } if (check_block(tempx, tempy, tempz, -block_width)) { return true; } return false; }
public bool is_block(float tempx, float tempy, float tempz) { crash_pos pos = new crash_pos(); pos._x = transform_to_map(tempx); pos._y = transform_to_map(tempy); pos._z = transform_to_map(tempz); if(get_crash_mole_addr(pos) == null) { return true; } else if (get_crash_mole_addr(pos) != null && get_crash_mole_addr(pos)._crash_mole != null) { if(get_crash_obj_addr(pos) != null) { if(get_crash_obj_addr(pos)._crash_obj.get_obj_type() != crash_obj_type.flag) { return true; } } } return false; }
public crash_pos transform_to_map(Vector3 vec) { crash_pos entry_pos = new crash_pos (); entry_pos._x = transform_to_map (vec.x); entry_pos._y = transform_to_map (vec.y); entry_pos._z = transform_to_map (vec.z); return entry_pos; }