@ -39,279 +39,279 @@ void SetCoord(df::coord in, RemoteFortressReader::Coord *out)
command_result MoveCommand ( DFHack : : color_ostream & stream , const MoveCommandParams * in )
{
auto viewScreen = getCurViewscreen ( ) ;
if ( ! in - > has_direction ( ) )
return CR_WRONG_USAGE ;
if ( ! df : : global : : ui_advmode - > menu = = ui_advmode_menu : : Default )
return CR_OK ;
auto dir = in - > direction ( ) ;
switch ( dir . x ( ) )
{
case - 1 :
switch ( dir . y ( ) )
{
case - 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NW_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NW ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NW_UP ) ;
break ;
}
break ;
case 0 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_W_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_W ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_W_UP ) ;
break ;
}
break ;
case 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SW_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SW ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SW_UP ) ;
break ;
}
break ;
}
break ;
case 0 :
switch ( dir . y ( ) )
{
case - 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_N_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_N ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_N_UP ) ;
break ;
}
break ;
case 0 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_DOWN ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_UP ) ;
break ;
}
break ;
case 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_S_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_S ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_S_UP ) ;
break ;
}
break ;
}
break ;
case 1 :
switch ( dir . y ( ) )
{
case - 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NE_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NE ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_NE_UP ) ;
break ;
}
break ;
case 0 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_E_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_E ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_E_UP ) ;
break ;
}
break ;
case 1 :
switch ( dir . z ( ) )
{
case - 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SE_DOWN ) ;
break ;
case 0 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SE ) ;
break ;
case 1 :
viewScreen - > feed_key ( interface_key : : A_MOVE_SE_UP ) ;
break ;
}
break ;
}
break ;
}
//auto viewScreen = getCurViewscreen();
//if (!in->has_direction())
// return CR_WRONG_USAGE;
//if (!df::global::ui_advmode->menu == ui_advmode_menu::Default)
// return CR_OK;
//auto dir = in->direction();
//switch (dir.x())
//{
//case -1:
// switch (dir.y())
// {
// case -1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_NW_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_NW);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_NW_UP);
// break;
// }
// break;
// case 0:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_W_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_W);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_W_UP);
// break;
// }
// break;
// case 1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_SW_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_SW);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_SW_UP);
// break;
// }
// break;
// }
// break;
//case 0:
// switch (dir.y())
// {
// case -1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_N_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_N);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_N_UP);
// break;
// }
// break;
// case 0:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_DOWN);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_UP);
// break;
// }
// break;
// case 1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_S_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_S);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_S_UP);
// break;
// }
// break;
// }
// break;
//case 1:
// switch (dir.y())
// {
// case -1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_NE_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_NE);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_NE_UP);
// break;
// }
// break;
// case 0:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_E_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_E);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_E_UP);
// break;
// }
// break;
// case 1:
// switch (dir.z())
// {
// case -1:
// viewScreen->feed_key(interface_key::A_MOVE_SE_DOWN);
// break;
// case 0:
// viewScreen->feed_key(interface_key::A_MOVE_SE);
// break;
// case 1:
// viewScreen->feed_key(interface_key::A_MOVE_SE_UP);
// break;
// }
// break;
// }
// break;
//}
return CR_OK ;
}
command_result JumpCommand ( DFHack : : color_ostream & stream , const MoveCommandParams * in )
{
if ( ! in - > has_direction ( ) )
return CR_WRONG_USAGE ;
if ( ! df : : global : : ui_advmode - > menu = = ui_advmode_menu : : Default )
return CR_OK ;
auto dir = in - > direction ( ) ;
keyQueue . push ( interface_key : : A_JUMP ) ;
int x = dir . x ( ) ;
int y = dir . y ( ) ;
if ( x > 0 )
{
for ( int i = 0 ; i < x ; i + + )
{
keyQueue . push ( interface_key : : CURSOR_RIGHT ) ;
}
}
if ( x < 0 )
{
for ( int i = 0 ; i > x ; i - - )
{
keyQueue . push ( interface_key : : CURSOR_LEFT ) ;
}
}
if ( y > 0 )
{
for ( int i = 0 ; i < y ; i + + )
{
keyQueue . push ( interface_key : : CURSOR_DOWN ) ;
}
}
if ( y < 0 )
{
for ( int i = 0 ; i > y ; i - - )
{
keyQueue . push ( interface_key : : CURSOR_UP ) ;
}
}
keyQueue . push ( interface_key : : SELECT ) ;
//if (!in->has_direction())
// return CR_WRONG_USAGE;
//if (!df::global::ui_advmode->menu == ui_advmode_menu::Default)
// return CR_OK;
//auto dir = in->direction();
//keyQueue.push(interface_key::A_JUMP);
//int x = dir.x();
//int y = dir.y();
//if (x > 0)
//{
// for (int i = 0; i < x; i++)
// {
// keyQueue.push(interface_key::CURSOR_RIGHT);
// }
//}
//if (x < 0)
//{
// for (int i = 0; i > x; i--)
// {
// keyQueue.push(interface_key::CURSOR_LEFT);
// }
//}
//if (y > 0)
//{
// for (int i = 0; i < y; i++)
// {
// keyQueue.push(interface_key::CURSOR_DOWN);
// }
//}
//if (y < 0)
//{
// for (int i = 0; i > y; i--)
// {
// keyQueue.push(interface_key::CURSOR_UP);
// }
//}
//keyQueue.push(interface_key::SELECT);
return CR_OK ;
}
command_result MenuQuery ( DFHack : : color_ostream & stream , const EmptyMessage * in , MenuContents * out )
{
auto advUi = df : : global : : ui_advmode ;
//auto advUi = df::global::ui_advmode;
if ( advUi = = NULL )
return CR_FAILURE ;
//if (advUi == NULL)
// return CR_FAILURE;
out - > set_current_menu ( ( AdvmodeMenu ) advUi - > menu ) ;
//out->set_current_menu((AdvmodeMenu)advUi->menu);
// Fixme: Needs a proper way to control it, but for now, this is the only way to allow Armok Vision to keep going without the user needing to switch to DF.
if ( advUi - > menu = = ui_advmode_menu : : FallAction )
{
getCurViewscreen ( ) - > feed_key ( interface_key : : OPTION1 ) ;
}
// // Fixme: Needs a proper way to control it, but for now, this is the only way to allow Armok Vision to keep going without the user needing to switch to DF.
//if (advUi->menu == ui_advmode_menu::FallAction)
//{
// getCurViewscreen()->feed_key(interface_key::OPTION1);
//}
switch ( advUi - > menu )
{
case ui_advmode_menu : : MoveCarefully :
for ( size_t i = 0 ; i < advUi - > movements . size ( ) ; i + + )
{
auto movement = advUi - > movements [ i ] ;
auto send_movement = out - > add_movements ( ) ;
SetCoord ( movement - > source , send_movement - > mutable_source ( ) ) ;
SetCoord ( movement - > dest , send_movement - > mutable_dest ( ) ) ;
//switch (advUi->menu)
//{
//case ui_advmode_menu::MoveCarefully:
// for (size_t i = 0; i < advUi->movements.size(); i++)
// {
// auto movement = advUi->movements[i];
// auto send_movement = out->add_movements();
// SetCoord(movement->source, send_movement->mutable_source());
// SetCoord(movement->dest, send_movement->mutable_dest());
STRICT_VIRTUAL_CAST_VAR ( climbMovement , df : : adventure_movement_climbst , movement ) ;
if ( climbMovement )
{
SetCoord ( climbMovement - > grab , send_movement - > mutable_grab ( ) ) ;
send_movement - > set_movement_type ( CarefulMovementType : : CLIMB ) ;
}
STRICT_VIRTUAL_CAST_VAR ( holdTileMovement , df : : adventure_movement_hold_tilest , movement ) ;
if ( holdTileMovement )
{
SetCoord ( holdTileMovement - > grab , send_movement - > mutable_grab ( ) ) ;
send_movement - > set_movement_type ( CarefulMovementType : : HOLD_TILE ) ;
}
}
default :
break ;
}
// STRICT_VIRTUAL_CAST_VAR(climbMovement, df::adventure_movement_climbst, movement);
// if (climbMovement)
// {
// SetCoord(climbMovement->grab, send_movement->mutable_grab());
// send_movement->set_movement_type(CarefulMovementType::CLIMB);
// }
// STRICT_VIRTUAL_CAST_VAR(holdTileMovement, df::adventure_movement_hold_tilest, movement);
// if (holdTileMovement)
// {
// SetCoord(holdTileMovement->grab, send_movement->mutable_grab());
// send_movement->set_movement_type(CarefulMovementType::HOLD_TILE);
// }
// }
//default:
// break;
//}
return CR_OK ;
}
command_result MovementSelectCommand ( DFHack : : color_ostream & stream , const dfproto : : IntMessage * in )
{
if ( ! ( df : : global : : ui_advmode - > menu = = ui_advmode_menu : : MoveCarefully ) )
return CR_OK ;
int choice = in - > value ( ) ;
int page = choice / 5 ;
int select = choice % 5 ;
for ( int i = 0 ; i < page ; i + + )
{
keyQueue . push ( interface_key : : SECONDSCROLL_PAGEDOWN ) ;
}
keyQueue . push ( ( interface_key : : interface_key ) ( interface_key : : OPTION1 + select ) ) ;
//if (!(df::global::ui_advmode->menu == ui_advmode_menu::MoveCarefully))
// return CR_OK;
//int choice = in->value();
//int page = choice / 5;
//int select = choice % 5;
//for (int i = 0; i < page; i++)
//{
// keyQueue.push(interface_key::SECONDSCROLL_PAGEDOWN);
//}
//keyQueue.push((interface_key::interface_key)(interface_key::OPTION1 + select));
return CR_OK ;
}
command_result MiscMoveCommand ( DFHack : : color_ostream & stream , const MiscMoveParams * in )
{
if ( ! df : : global : : ui_advmode - > menu = = ui_advmode_menu : : Default )
return CR_OK ;
//if (!df::global::ui_advmode->menu == ui_advmode_menu::Default)
// return CR_OK;
auto type = in - > type ( ) ;
//auto type = in->type();
switch ( type )
{
case AdventureControl : : SET_CLIMB :
getCurViewscreen ( ) - > feed_key ( interface_key : : A_HOLD ) ;
break ;
case AdventureControl : : SET_STAND :
getCurViewscreen ( ) - > feed_key ( interface_key : : A_STANCE ) ;
break ;
case AdventureControl : : SET_CANCEL :
getCurViewscreen ( ) - > feed_key ( interface_key : : LEAVESCREEN ) ;
break ;
default :
break ;
}
//switch (type)
//{
//case AdventureControl::SET_CLIMB:
// getCurViewscreen()->feed_key(interface_key::A_HOLD);
// break;
//case AdventureControl::SET_STAND:
// getCurViewscreen()->feed_key(interface_key::A_STANCE);
// break;
//case AdventureControl::SET_CANCEL:
// getCurViewscreen()->feed_key(interface_key::LEAVESCREEN);
// break;
//default:
// break;
//}
return CR_OK ;
}