public boolean load(int level, int isave) {
		clear();
		
		boolean fromSave = false;
		if (level == 0) {
			fromSave = true;
			SaveInfo si = new SaveInfo();
			if (!CableBattle.cb.sd.loadGame(isave, si, historyList)) {
				CableBattle.mainWindow.levelMessagePanel.setMessage("加载失败", "无法加载该存档");
				return false;
			}
			
			level = si.level;
		}
		
		LevelInfo li = CableBattle.getLevel().get(level);
		if (li.available()) {

			CableBattle.propsBar.setList(li.getItemList());
			li.setMapBlockTable(mapblocks);
			
			if (fromSave) {
				this.level = level;
				for (int i = 0; i < historyList.size(); i++) {
					if (!setProps(historyList.get(i).point, historyList.get(i).newtype, false)) {
						CableBattle.mainWindow.levelMessagePanel.setMessage("加载失败", "存档不匹配");
						return false;
					}
				}
			}

			if (li.getBgm() != null && !li.getBgm().isEmpty()) {
				CableBattle.getSound().playBgm(li.getBgm());
			} else {
				CableBattle.getSound().stopBgm();
			}

			CableBattle.mainWindow.levelMessagePanel.setMessage(level, li.getName(), li.getDescription());
			CableBattle.mainWindow.levelTitlePanel.setLevelInfo(level, li.getName(), li.getDescription());
			CableBattle.mainWindow.stagePanel.refresh();
			CableBattle.mainWindow.propsBarPanel.refresh();
			CableBattle.mainWindow.propsBarPanel.controls.refresh();
			
			return true;
		} else {
			CableBattle.mainWindow.levelMessagePanel.setMessage("加载失败", li.getDescription());
			return false;
		}
	}