Ejemplo n.º 1
0
void CellAutomataAgent::setupLayers() {
  Range localRect = _local->rect;
  Tuple memorySize = localRect.grow(1).getSize();
  _computeRange = Range(memorySize).shrink(1);
  _globalToLocal = _computeRange.getBegin() - _local->rect.getBegin();
  
  ALOG << "localRect: " << localRect << EL;
  ALOG << "computeRange: " << _computeRange << EL;
  
  _layer1 = new KGridBasic(cell_grid_t(), memorySize, true);
  _layer2 = new KGridBasic(cell_grid_t(), memorySize, true);
  
  evaluate(_layer2, _layer1, 0);
  
  // Setup Neighbours
  for(int i = _neighbours->getSize() - 1; i >= 0; i--) {
    PPtr<Partition> p = _neighbours->at(i);
    Range border = _local->rect.intersectWith(p->rect.grow(1));
    Range borderOnLocal = border.translate(_globalToLocal);
    p->window = new KGridWindow(_layer1.AS(KGrid), borderOnLocal);
    p->toSend = new KRecord(border_t());
    p->toSend->setGrid(BORDER_T_DATA, p->window.AS(KGrid));
    p->phase = -1;
    KPoint(border.getBegin()).toKRecord(p->toSend->getRecord(BORDER_T_OFSET));
  }
}
Ejemplo n.º 2
0
void theme::add_object(const config& cfg)
{
	if(const config& c = cfg.child("main_map")) {
		main_map_ = object(c);
	}

	if(const config& c = cfg.child("mini_map")) {
		mini_map_ = object(c);
	}

	if(const config& c = cfg.child("palette")) {
		palette_ = object(c);
	}

	if(const config& status_cfg = cfg.child("status")) {
		for(const config::any_child& i : status_cfg.all_children_range()) {
			status_.emplace(i.key, status_item(i.cfg));
		}
		if(const config& unit_image_cfg = status_cfg.child("unit_image")) {
			unit_image_ = object(unit_image_cfg);
		} else {
			unit_image_ = object();
		}
	}

	for(const config& p : cfg.child_range("panel")) {
		panel new_panel(p);
		set_object_location(new_panel, p["rect"], p["ref"]);
		panels_.push_back(new_panel);
	}

	for(const config& lb : cfg.child_range("label")) {
		label new_label(lb);
		set_object_location(new_label, lb["rect"], lb["ref"]);
		labels_.push_back(new_label);
	}

	for(const config& m : cfg.child_range("menu")) {
		menu new_menu(m);
		DBG_DP << "adding menu: " << (new_menu.is_context() ? "is context" : "not context") << "\n";
		if(new_menu.is_context())
			context_ = new_menu;
		else {
			set_object_location(new_menu, m["rect"], m["ref"]);
			menus_.push_back(new_menu);
		}

		DBG_DP << "done adding menu...\n";
	}

	for(const config& a : cfg.child_range("action")) {
		action new_action(a);
		DBG_DP << "adding action: " << (new_action.is_context() ? "is context" : "not context") << "\n";
		if(new_action.is_context())
			action_context_ = new_action;
		else {
			set_object_location(new_action, a["rect"], a["ref"]);
			actions_.push_back(new_action);
		}

		DBG_DP << "done adding action...\n";
	}

	for(const config& s : cfg.child_range("slider")) {
		slider new_slider(s);
		DBG_DP << "adding slider\n";
		set_object_location(new_slider, s["rect"], s["ref"]);
		sliders_.push_back(new_slider);

		DBG_DP << "done adding slider...\n";
	}

	if(const config& c = cfg.child("main_map_border")) {
		border_ = border_t(c);
	}
}
Ejemplo n.º 3
0
void border_t::reset()
{
    *this = border_t();
}