Example #1
0
 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();
     }        
 }
Example #2
0
 public void clone(crash_pos pos)
 {
     _x = pos._x;
     _y = pos._y;
     _z = pos._z;
 }
Example #3
0
    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);
                        }
                    }
                }
            }
        }
    }
Example #4
0
 public bool isvalid(crash_pos temp)
 {
     return isvalid(temp._x, temp._y, temp._z);
 }
Example #5
0
 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;
 }
Example #6
0
    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;
    }
Example #7
0
    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;
    }
Example #8
0
     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;

    }
Example #9
0
    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;
    }
Example #10
0
	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;
	}