mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
731 lines
24 KiB
Plaintext
731 lines
24 KiB
Plaintext
/**
|
|
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: ballot_box.script
|
|
* Description: script for ballot box terminals
|
|
* @author $Author: Matthew Kwid$
|
|
* @version $Revision:$
|
|
*/
|
|
|
|
//------------------------------------------------
|
|
// Includes
|
|
//------------------------------------------------
|
|
|
|
include library.sui;
|
|
include library.utils;
|
|
include library.player_structure;
|
|
include library.xp;
|
|
|
|
//------------------------------------------------
|
|
// Constants
|
|
//------------------------------------------------
|
|
|
|
const int BALLOT_TEXT_MAX_LENGTH = 120;
|
|
const int BALLOT_TITLE_MAX_LENGTH = 32;
|
|
const int BALLOT_ITEM_MAX_LENGTH = 64;
|
|
const int BALLOT_ITEM_MAX_COUNT = 16;
|
|
const string_id SID_CONFIGURE_BALLOT = new string_id("sui", "ballot_box_config");
|
|
const string_id SID_ADD_OPTION = new string_id("sui", "ballot_box_add_option");
|
|
const string_id SID_VIEW_RESULTS = new string_id("sui", "ballot_box_view_results");
|
|
const string_id SID_VOTE = new string_id("sui", "ballot_box_vote");
|
|
const string_id SID_VOTE_LOGGED_MSG = new string_id("sui", "ballot_box_vote_logged");
|
|
const string_id SID_EDIT_BALLOT_TITLE = new string_id("sui", "ballot_box_edit_title");
|
|
const string_id SID_EDIT_BALLOT_TEXT = new string_id("sui", "ballot_box_edit_text");
|
|
const string_id SID_START_VOTE = new string_id("sui", "ballot_box_start_vote");
|
|
const string_id SID_STOP_VOTE = new string_id("sui", "ballot_box_stop_vote");
|
|
const string_id SID_MUST_STOP_VOTE_MSG = new string_id("sui", "ballot_box_must_stop");
|
|
const string_id SID_START_VOTE_MSG = new string_id("sui", "ballot_box_start_msg");
|
|
const string_id SID_STOP_VOTE_MSG = new string_id("sui", "ballot_box_stop_msg");
|
|
const string_id SID_VIEW_BALLOT = new string_id("sui", "ballot_box_view_ballot");
|
|
const string_id SID_CLEAR_LOG = new string_id("sui", "ballot_box_clear_log");
|
|
const string_id SID_TEXT_TOO_LARGE = new string_id("sui", "ballot_text_too_large");
|
|
const string_id SID_TITLE_TOO_LARGE = new string_id("sui", "ballot_title_too_large");
|
|
const string_id SID_ITEM_TOO_LARGE = new string_id("sui", "ballot_item_too_large");
|
|
const string_id SID_ITEMS_TOO_MANY = new string_id("sui", "ballot_items_too_many");
|
|
const string_id SID_SECRET = new string_id("sui", "ballot_box_secret");
|
|
const string_id SID_PUBLIC = new string_id("sui", "ballot_box_public");
|
|
const string_id SID_EDIT_BALLOT = new string_id("sui", "ballot_box_edit");
|
|
const string_id SID_REMOVE_OPTION = new string_id("sui", "ballot_box_remove_option");
|
|
const string_id SID_SECRET_CONFIRM = new string_id("sui", "ballot_box_secret_confirm");
|
|
const string_id SID_PUBLIC_CONFIRM = new string_id("sui", "ballot_box_public_confirm");
|
|
const string_id SID_SAMPLE_ONE = new string_id("sui", "ballot_box_sample_one");
|
|
const string_id SID_SAMPLE_TWO = new string_id("sui", "ballot_box_sample_two");
|
|
const string_id SID_CLEAR_MSG = new string_id("sui", "ballot_box_clear_msg");
|
|
const string_id SID_CONFIG_BALLOT_TEXT = new string_id("sui", "ballot_box_config_text");
|
|
const string_id SID_CONFIG_BALLOT_TITLE = new string_id("sui", "ballot_box_config_title");
|
|
const string_id SID_CONFIG_ADD_ITEM = new string_id("sui", "ballot_box_config_add_item");
|
|
const string_id SID_RESULTS_TITLE = new string_id("sui", "ballot_box_results_title");
|
|
const string_id SID_DEFAULT_BALLOT_TITLE = new string_id("sui", "ballot_box_sample_title");
|
|
const string_id SID_DEFAULT_BALLOT_TEXT = new string_id("sui", "ballot_box_sample_text");
|
|
const string_id SID_REMOVE_ITEM_TEXT = new string_id("sui", "ballot_box_remove_option_text");
|
|
const string_id SID_DEFAULT_BALLOT_RESULTS = new string_id("sui", "ballot_box_default_results");
|
|
const string_id SID_OPEN_STATE_TEXT = new string_id("sui", "ballot_box_open_text");
|
|
const string_id SID_CLOSED_STATE_TEXT = new string_id("sui", "ballot_box_closed_text");
|
|
const string[] DEFAULT_BALLOT_OPTIONS = {"Sample Option One", "Sample Option Two"};
|
|
const obj_id[] DEFAULT_PARTICIPANTS = new obj_id[0];
|
|
const int[] DEFAULT_VOTE_TALLY = new int[0];
|
|
const string_id SID_CHAT_BAND_TEXT = new string_id("sui", "ballot_box_band");
|
|
const string_id SID_CHAT_TITLE = new string_id("sui", "ballot_box_chat_title");
|
|
const string[] EDIT_OPTIONS = {"@sui:ballot_box_edit_title","@sui:ballot_box_edit_text","@sui:ballot_box_add_option",
|
|
"@sui:ballot_box_remove_option","@sui:ballot_box_start_vote","@sui:ballot_box_secret"};
|
|
const string VAR_BALLOT_TEXT = "var_ballot_text";
|
|
const string VAR_BALLOT_TITLE = "var_ballot_title";
|
|
const string VAR_BALLOT_STATE_TEXT = "var_ballot_state";
|
|
const string VAR_BALLOT_RESULTS = "var_ballot_results";
|
|
const string VAR_BALLOT_OPTIONS = "var_ballot_options";
|
|
const string VAR_EDIT_OPTIONS = "var_edit_options";
|
|
const string VAR_PARTICIPANTS = "var_ballot_participants";
|
|
const string VAR_VOTE_TALLY = "var_vote_tally";
|
|
const string VAR_TOTAL_VOTES = "var_total_votes";
|
|
const string VAR_LOG_COUNT = "var_ballot_log_count";
|
|
const string VAR_BALLOT_BOX_OWNER = "var_ballot_box_owner";
|
|
const string VAR_IS_SECRET_MSG = "var_secret_msg";
|
|
|
|
|
|
//------------------------------------------------
|
|
// OnInitialize
|
|
//------------------------------------------------
|
|
|
|
trigger OnInitialize()
|
|
{
|
|
setObjVar( self, "ballot_box_id", getCurrentSceneName() );
|
|
setObjVar( self, VAR_BALLOT_TEXT, getString(SID_DEFAULT_BALLOT_TEXT) );
|
|
setObjVar( self, VAR_BALLOT_TITLE, getString(SID_DEFAULT_BALLOT_TITLE) );
|
|
setObjVar( self, VAR_BALLOT_STATE_TEXT, getString(SID_CLOSED_STATE_TEXT) );
|
|
setObjVar( self, VAR_BALLOT_RESULTS, getString(SID_DEFAULT_BALLOT_RESULTS) );
|
|
// setObjVar( self, VAR_PARTICIPANTS, DEFAULT_PARTICIPANTS );
|
|
// setObjVar( self, VAR_VOTE_TALLY, DEFAULT_VOTE_TALLY );
|
|
setObjVar( self, VAR_TOTAL_VOTES, 0 );
|
|
setObjVar( self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS );
|
|
setObjVar( self, VAR_EDIT_OPTIONS, EDIT_OPTIONS );
|
|
setObjVar( self, VAR_IS_SECRET_MSG, false );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// OnObjectMenuRequest
|
|
//------------------------------------------------
|
|
|
|
trigger OnObjectMenuRequest( obj_id player, menu_info mi )
|
|
{
|
|
string stateStr = getStringObjVar( self, VAR_BALLOT_STATE_TEXT );
|
|
|
|
obj_id structure = getTopMostContainer( self );
|
|
if ( structure != null && player_structure.isAdmin( structure, player ) )
|
|
{
|
|
int menu = mi.addRootMenu( menu_info_types.CREATE_BALLOT, SID_CONFIGURE_BALLOT );
|
|
|
|
if ( stateStr.equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
mi.addSubMenu( menu, menu_info_types.DICE_COUNT_FOUR, SID_STOP_VOTE );
|
|
else
|
|
{
|
|
setObjVar( self, VAR_BALLOT_BOX_OWNER, player );
|
|
mi.addSubMenu( menu, menu_info_types.DICE_EIGHT_FACE, SID_CLEAR_LOG );
|
|
mi.addSubMenu( menu, menu_info_types.DICE_FIVE_FACE, SID_EDIT_BALLOT );
|
|
mi.addSubMenu( menu, menu_info_types.DICE_FOUR_FACE, SID_VIEW_BALLOT );
|
|
mi.addSubMenu( menu, menu_info_types.DICE_COUNT_THREE, SID_START_VOTE );
|
|
}
|
|
}
|
|
|
|
obj_id[] participants = getObjIdArrayObjVar( self, VAR_PARTICIPANTS );
|
|
|
|
if ( !utils.isObjIdInArray(participants, player) && stateStr.equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
{
|
|
mi.addRootMenu( menu_info_types.VOTE, SID_VOTE );
|
|
mi.addRootMenu( menu_info_types.DICE_THREE_FACE, SID_VIEW_BALLOT );
|
|
}
|
|
else if( stateStr.equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
mi.addRootMenu( menu_info_types.DICE_THREE_FACE, SID_VIEW_BALLOT );
|
|
else
|
|
mi.addRootMenu( menu_info_types.DICE_TWO_FACE, SID_VIEW_RESULTS );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// OnObjectMenuSelect
|
|
//------------------------------------------------
|
|
|
|
trigger OnObjectMenuSelect( obj_id player, int item )
|
|
{
|
|
if ( item == menu_info_types.DICE_THREE_FACE )
|
|
viewBallot( player, self );
|
|
else if( item == menu_info_types.DICE_COUNT_FOUR )
|
|
stopVote( player, self );
|
|
else if( item == menu_info_types.DICE_FOUR_FACE )
|
|
ownerViewBallot( player, self );
|
|
else if ( item == menu_info_types.DICE_FIVE_FACE )
|
|
editBallot( player, self );
|
|
else if( item == menu_info_types.DICE_EIGHT_FACE )
|
|
removeLogResults( player, self, true );
|
|
else if( item == menu_info_types.DICE_COUNT_THREE )
|
|
startVote( player, self );
|
|
else if( item == menu_info_types.VOTE )
|
|
vote( player, self );
|
|
else if( item == menu_info_types.ITEM_USE || item == menu_info_types.DICE_TWO_FACE )
|
|
viewResults( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// editBallot
|
|
//------------------------------------------------
|
|
|
|
void editBallot( obj_id player, obj_id terminal )
|
|
{
|
|
if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
{
|
|
sendSystemMessage( player, SID_MUST_STOP_VOTE_MSG );
|
|
return;
|
|
}
|
|
|
|
string ballot_text = getBallotViewData( terminal );
|
|
string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS );
|
|
sui.listbox( terminal, player, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT), options, "configureBallot", true, true );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// makeResultsSecret
|
|
//------------------------------------------------
|
|
|
|
void makeResultsSecret( obj_id owner, obj_id terminal )
|
|
{
|
|
setObjVar( terminal, VAR_IS_SECRET_MSG, true );
|
|
sendSystemMessage( owner, SID_SECRET_CONFIRM );
|
|
|
|
string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS );
|
|
if(options != null && options.length > 0) {
|
|
|
|
options[5] = getString( SID_PUBLIC );
|
|
setObjVar( terminal, VAR_EDIT_OPTIONS, options );
|
|
}
|
|
|
|
editBallot( owner, terminal );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// makeResultsPublic
|
|
//------------------------------------------------
|
|
|
|
void makeResultsPublic( obj_id owner, obj_id terminal )
|
|
{
|
|
setObjVar( terminal, VAR_IS_SECRET_MSG, false );
|
|
sendSystemMessage( owner, SID_PUBLIC_CONFIRM );
|
|
|
|
string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS );
|
|
if(options != null && options.length > 0) {
|
|
|
|
options[5] = getString( SID_SECRET );
|
|
setObjVar( terminal, VAR_EDIT_OPTIONS, options );
|
|
}
|
|
|
|
editBallot( owner, terminal );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// removeSelectionItem
|
|
//------------------------------------------------
|
|
|
|
void removeSelectionItem( obj_id owner, obj_id terminal )
|
|
{
|
|
string title = getStringObjVar( terminal, VAR_BALLOT_TITLE );
|
|
string text = getString( SID_REMOVE_ITEM_TEXT );
|
|
string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
|
|
sui.listbox( terminal, owner, text, sui.OK_CANCEL, title, options, "removeItem" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// addSelectionItem
|
|
//------------------------------------------------
|
|
|
|
void addSelectionItem( obj_id owner, obj_id terminal )
|
|
{
|
|
if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
{
|
|
sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG );
|
|
return;
|
|
}
|
|
|
|
string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
if ( items == null )
|
|
{
|
|
string[] options = new string[0];
|
|
setObjVar( terminal, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS );
|
|
}
|
|
|
|
string ballot_text = getString( SID_CONFIG_ADD_ITEM );
|
|
int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_ADD_OPTION), sui.INPUT_NORMAL, null, "addItem" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// ownerViewBallot
|
|
//------------------------------------------------
|
|
|
|
void ownerViewBallot( obj_id owner, obj_id terminal )
|
|
{
|
|
string title = getStringObjVar( terminal, VAR_BALLOT_TITLE );
|
|
string text = getStringObjVar( terminal, VAR_BALLOT_TEXT );
|
|
string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
sui.listbox( terminal, owner, text, sui.OK_ONLY, title, options, "no_handler" );
|
|
|
|
return;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// viewBallot
|
|
//------------------------------------------------
|
|
|
|
void viewBallot( obj_id owner, obj_id terminal )
|
|
{
|
|
string ballotData = getBallotViewData( terminal );
|
|
sui.msgbox( terminal, owner, ballotData, sui.OK_ONLY, getString(SID_VIEW_BALLOT), "noHandlerNeeded" );
|
|
return;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// getBallotViewData
|
|
//------------------------------------------------
|
|
|
|
string getBallotViewData( obj_id terminal )
|
|
{
|
|
string title = getStringObjVar( terminal, VAR_BALLOT_TITLE );
|
|
string issue = getStringObjVar( terminal, VAR_BALLOT_TEXT );
|
|
string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
string resultSet = new string();
|
|
resultSet += "Title: " + getStringObjVar(terminal, VAR_BALLOT_TITLE) + "\n";
|
|
resultSet += "Issue: " + issue + "\n\n";
|
|
resultSet += "Options: " + "\n";
|
|
|
|
if ( items != null )
|
|
{
|
|
for ( int i=0; i < items.length; ++i )
|
|
{
|
|
int count = i + 1;
|
|
resultSet += count + ". " + items[i] + "\n";
|
|
}
|
|
}
|
|
|
|
return resultSet;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// editBallotTitle
|
|
//------------------------------------------------
|
|
|
|
void editBallotTitle( obj_id owner, obj_id terminal )
|
|
{
|
|
if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
{
|
|
sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG );
|
|
return;
|
|
}
|
|
|
|
string ballot_text = getString( SID_CONFIG_BALLOT_TITLE );
|
|
int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT_TITLE), sui.INPUT_NORMAL, null, "editTitle" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// editBallotText
|
|
//------------------------------------------------
|
|
|
|
void editBallotText( obj_id owner, obj_id terminal )
|
|
{
|
|
if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) )
|
|
{
|
|
sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG );
|
|
return;
|
|
}
|
|
|
|
string ballot_text = getString( SID_CONFIG_BALLOT_TEXT );
|
|
int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT_TEXT), sui.INPUT_NORMAL, null, "editText" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// startVote
|
|
//------------------------------------------------
|
|
|
|
void startVote( obj_id player, obj_id terminal )
|
|
{
|
|
setObjVar( terminal, VAR_BALLOT_STATE_TEXT, getString(SID_OPEN_STATE_TEXT) );
|
|
setObjVar( terminal, VAR_TOTAL_VOTES, 0 );
|
|
sendSystemMessage( player, SID_START_VOTE_MSG );
|
|
|
|
string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
int[] voteCounts = new int[items.length];
|
|
|
|
for ( int i=0; i < items.length; ++i )
|
|
voteCounts[i] = 0;
|
|
|
|
if(voteCounts.length > 0) {
|
|
|
|
setObjVar( terminal, VAR_VOTE_TALLY, voteCounts );
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// stopVote
|
|
//------------------------------------------------
|
|
|
|
void stopVote( obj_id player, obj_id terminal )
|
|
{
|
|
setObjVar( terminal, VAR_BALLOT_STATE_TEXT, getString(SID_CLOSED_STATE_TEXT) );
|
|
sendSystemMessage( player, SID_STOP_VOTE_MSG );
|
|
|
|
logResults( player, terminal );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// logResults
|
|
//------------------------------------------------
|
|
|
|
void logResults( obj_id player, obj_id terminal )
|
|
{
|
|
removeLogResults( player, terminal, false );
|
|
|
|
string issue = getStringObjVar( terminal, VAR_BALLOT_TEXT );
|
|
string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
int[] votes = getIntArrayObjVar( terminal, VAR_VOTE_TALLY );
|
|
|
|
string resultSet = getStringObjVar( terminal, VAR_BALLOT_RESULTS );
|
|
|
|
if ( resultSet.equals(getString(SID_DEFAULT_BALLOT_RESULTS)) )
|
|
resultSet = new string();
|
|
|
|
resultSet += "Title: " + getStringObjVar(terminal, VAR_BALLOT_TITLE) + "\n";
|
|
resultSet += "Issue: " + issue + "\n\n";
|
|
resultSet += "Options: " + "\n";
|
|
|
|
int totalVotes = getIntObjVar( terminal, VAR_TOTAL_VOTES );
|
|
float percentValue = 0.0f;
|
|
|
|
for ( int i=0; i < items.length; ++i )
|
|
{
|
|
if ( totalVotes != 0 )
|
|
{
|
|
if ( votes[i] == totalVotes )
|
|
percentValue = 100;
|
|
else
|
|
percentValue = (float)100 * ((float)votes[i] / (float)totalVotes);
|
|
}
|
|
|
|
int count = i + 1;
|
|
if ( votes[i] == 1 )
|
|
resultSet += count + ". " + items[i] + "\n" + votes[i] + " vote = " + percentValue + "%\n\n";
|
|
else
|
|
resultSet += count + ". " + items[i] + "\n" + votes[i] + " votes = " + percentValue + "%\n\n";
|
|
}
|
|
|
|
resultSet += "\n\n";
|
|
setObjVar( terminal, VAR_BALLOT_RESULTS, resultSet );
|
|
|
|
dictionary params = new dictionary();
|
|
params.put( "owner", player );
|
|
messageTo( terminal, "sendPersistantResultsMessage", params, 0, true );
|
|
|
|
setObjVar( terminal, VAR_BALLOT_TEXT, getString(SID_DEFAULT_BALLOT_TEXT) );
|
|
setObjVar( terminal, VAR_BALLOT_TITLE, getString(SID_DEFAULT_BALLOT_TITLE) );
|
|
setObjVar( terminal, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS );
|
|
setObjVar( terminal, VAR_PARTICIPANTS, DEFAULT_PARTICIPANTS );
|
|
setObjVar( terminal, VAR_IS_SECRET_MSG, false );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// removeLogResults
|
|
//------------------------------------------------
|
|
|
|
void removeLogResults( obj_id owner, obj_id terminal, boolean displayMessage )
|
|
{
|
|
setObjVar( terminal, VAR_BALLOT_RESULTS, getString(SID_DEFAULT_BALLOT_RESULTS) );
|
|
|
|
if ( displayMessage )
|
|
sendSystemMessage( owner, SID_CLEAR_MSG );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// vote
|
|
//------------------------------------------------
|
|
|
|
void vote( obj_id player, obj_id terminal )
|
|
{
|
|
xp.grantCraftingXpChance( terminal, player, 40 );
|
|
|
|
string title = getStringObjVar( terminal, VAR_BALLOT_TITLE );
|
|
string text = getStringObjVar( terminal, VAR_BALLOT_TEXT );
|
|
string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS );
|
|
|
|
sui.listbox( terminal, player, text, sui.OK_CANCEL, title, options, "voteTracker" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// viewResults
|
|
//------------------------------------------------
|
|
|
|
void viewResults( obj_id player, obj_id terminal )
|
|
{
|
|
string resultData = new string( "error with data" );
|
|
|
|
if ( !getBooleanObjVar(terminal, VAR_IS_SECRET_MSG) )
|
|
resultData = getStringObjVar( terminal, VAR_BALLOT_RESULTS );
|
|
else
|
|
resultData = getString( SID_DEFAULT_BALLOT_RESULTS );
|
|
|
|
sui.msgbox( terminal, player, resultData, sui.OK_ONLY, getString(SID_RESULTS_TITLE), "noHandlerNeeded" );
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// configureBallot
|
|
//------------------------------------------------
|
|
|
|
messageHandler configureBallot()
|
|
{
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string button = sui.getButtonPressed( params );
|
|
if ( !button.equals(sui.OK) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
int item = sui.getListboxSelectedRow( params );
|
|
string buttonPressed = sui.getButtonPressed( params );
|
|
string[] selectionOptions = getStringArrayObjVar( self, VAR_EDIT_OPTIONS );
|
|
int optionCount = selectionOptions.length;
|
|
|
|
if ( item == 0 )
|
|
editBallotTitle( player, self );
|
|
else if( item == 1 )
|
|
editBallotText( player, self );
|
|
else if( item == 2 )
|
|
addSelectionItem( player, self );
|
|
else if( item == 3 )
|
|
removeSelectionItem( player, self );
|
|
else if( item == 4 )
|
|
startVote( player, self );
|
|
else if( item == 5 )
|
|
makeResultsSecret( player, self );
|
|
else if( item == 6 )
|
|
makeResultsPublic( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// editText
|
|
//------------------------------------------------
|
|
|
|
messageHandler editText()
|
|
{
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string ballotText = sui.getInputBoxText( params );
|
|
string buttonPressed = sui.getButtonPressed( params );
|
|
|
|
if ( ballotText.length() > BALLOT_TEXT_MAX_LENGTH )
|
|
{
|
|
obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER );
|
|
sendSystemMessage( owner, SID_TEXT_TOO_LARGE );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( ballotText != null && ballotText.length() != 0 && buttonPressed.equals(sui.OK) )
|
|
setObjVar( self, VAR_BALLOT_TEXT, ballotText );
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
editBallot( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// editTitle
|
|
//------------------------------------------------
|
|
|
|
messageHandler editTitle()
|
|
{
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string ballotTitle = sui.getInputBoxText( params );
|
|
string buttonPressed = sui.getButtonPressed( params );
|
|
|
|
if( ballotTitle.length() > BALLOT_TITLE_MAX_LENGTH )
|
|
{
|
|
obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER );
|
|
sendSystemMessage( owner, SID_TITLE_TOO_LARGE );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( ballotTitle != null && ballotTitle.length() != 0 && buttonPressed.equals(sui.OK) )
|
|
setObjVar( self, VAR_BALLOT_TITLE, ballotTitle );
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
editBallot( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// voteTracker
|
|
//------------------------------------------------
|
|
|
|
messageHandler voteTracker()
|
|
{
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int listItem = sui.getListboxSelectedRow( params );
|
|
|
|
if ( listItem == -1 )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string button = sui.getButtonPressed( params );
|
|
if ( !button.equals(sui.OK) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int[] voteCounts = getIntArrayObjVar( self, VAR_VOTE_TALLY );
|
|
int value = voteCounts[listItem];
|
|
voteCounts[listItem] = ++value;
|
|
if(voteCounts.length > 0) {
|
|
|
|
setObjVar( self, VAR_VOTE_TALLY, voteCounts );
|
|
}
|
|
|
|
resizeable obj_id[] participants = getResizeableObjIdArrayObjVar( self, VAR_PARTICIPANTS );
|
|
participants = utils.addElement( participants, sui.getPlayerId(params) );
|
|
|
|
if(participants.length > 0) {
|
|
|
|
setObjVar( self, VAR_PARTICIPANTS, participants );
|
|
}
|
|
|
|
int voteCount = getIntObjVar( self, VAR_TOTAL_VOTES );
|
|
setObjVar( self, VAR_TOTAL_VOTES, ++voteCount );
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
sendSystemMessage( player, SID_VOTE_LOGGED_MSG );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// addItem
|
|
//------------------------------------------------
|
|
|
|
messageHandler addItem()
|
|
{
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string itemToAdd = sui.getInputBoxText( params );
|
|
string buttonPressed = sui.getButtonPressed( params );
|
|
|
|
if ( itemToAdd.length() > BALLOT_ITEM_MAX_LENGTH )
|
|
{
|
|
obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER );
|
|
sendSystemMessage( owner, SID_ITEM_TOO_LARGE );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( itemToAdd != null && itemToAdd.length() != 0 && buttonPressed.equals(sui.OK) )
|
|
{
|
|
resizeable string[] options = getResizeableStringArrayObjVar( self, VAR_BALLOT_OPTIONS );
|
|
|
|
if(options[0].equals(getString(SID_SAMPLE_ONE))) {
|
|
|
|
options.clear();
|
|
}
|
|
|
|
if ( options.length > BALLOT_ITEM_MAX_COUNT )
|
|
{
|
|
obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER );
|
|
sendSystemMessage( owner, SID_ITEMS_TOO_MANY );
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
editBallot( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
options = utils.addElement( options, itemToAdd );
|
|
|
|
if(options.length > 0) {
|
|
|
|
setObjVar( self, VAR_BALLOT_OPTIONS, options );
|
|
|
|
} else {
|
|
|
|
setObjVar(self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS);
|
|
}
|
|
}
|
|
|
|
obj_id player = sui.getPlayerId( params );
|
|
editBallot( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// sendPersistantResultsMessage
|
|
//------------------------------------------------
|
|
|
|
messageHandler sendPersistantResultsMessage()
|
|
{
|
|
string resultSet = getStringObjVar( self, VAR_BALLOT_RESULTS );
|
|
|
|
if ( !getBooleanObjVar(self, VAR_IS_SECRET_MSG) )
|
|
{
|
|
obj_id[] participants = getObjIdArrayObjVar( self, VAR_PARTICIPANTS );
|
|
|
|
for ( int i=0; i < participants.length; ++i )
|
|
chatSendPersistentMessage( participants[i], "@" + SID_CHAT_TITLE.toString (), resultSet, null );
|
|
}
|
|
else
|
|
{
|
|
obj_id owner = params.getObjId( "owner" );
|
|
chatSendPersistentMessage( owner, "@" + SID_CHAT_TITLE.toString (), resultSet, null );
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//------------------------------------------------
|
|
// removeItem
|
|
//------------------------------------------------
|
|
|
|
messageHandler removeItem()
|
|
{
|
|
int listItem = sui.getListboxSelectedRow( params );
|
|
obj_id player = sui.getPlayerId( params );
|
|
|
|
if ( listItem == -1 )
|
|
{
|
|
editBallot( player, self );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
resizeable string[] items = getResizeableStringArrayObjVar( self, VAR_BALLOT_OPTIONS );
|
|
items = utils.removeElementAt( items, listItem );
|
|
|
|
if ( items.length == 0 )
|
|
setObjVar( self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS );
|
|
else
|
|
setObjVar( self, VAR_BALLOT_OPTIONS, items );
|
|
|
|
editBallot( player, self );
|
|
|
|
return SCRIPT_CONTINUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|