Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package joshua.brittain.TownOfSalem.Chat
- {
- import flash.events.KeyboardEvent;
- import flash.text.TextField;
- import flash.text.TextFormat;
- import joshua.brittain.TownOfSalem.ChatLog.ChatLog;
- import joshua.brittain.TownOfSalem.GameStage.GameStage;
- import joshua.brittain.TownOfSalem.User.User;
- import salem.utils.system.SystemCommandController;
- import salem.utils.system.SystemCommandInfo;
- public class ChatBox extends ChatBoxSymbol
- {
- private static const X_OFFSET:Number = 5;
- private static const Y_OFFSET:Number = 5;
- private static const CHATBOX_HEIGHT:Number = 266.75;
- private static const CHATBOX_WIDTH:uint = 420;
- private static const CHATBOX_WIDTH_NO_BORDERS:uint = 400;
- private static const TEXTFIELD_HEIGHT:uint = 17;
- private var m_isNameNum:int = 0;
- private var m_inputField:TextField;
- private var m_lobbyTextArray:Array;
- private var m_backgroundArray:Vector.<uint>;
- private var m_chatLogReference:ChatLog;
- private var m_text0:TextField;
- private var m_text1:TextField;
- private var m_text2:TextField;
- private var m_text3:TextField;
- private var m_text4:TextField;
- private var m_text5:TextField;
- private var m_text6:TextField;
- private var m_text7:TextField;
- private var m_text8:TextField;
- private var m_text9:TextField;
- private var m_text10:TextField;
- private var m_text11:TextField;
- private var m_text12:TextField;
- private const BG_ALPHA:Number = 0.7;
- private var m_systemCommandController:SystemCommandController;
- public function ChatBox()
- {
- var _loc1_:int = 0;
- m_inputField = new TextField();
- m_lobbyTextArray = [];
- m_backgroundArray = new Vector.<uint>(13,true);
- m_text0 = new TextField();
- m_text1 = new TextField();
- m_text2 = new TextField();
- m_text3 = new TextField();
- m_text4 = new TextField();
- m_text5 = new TextField();
- m_text6 = new TextField();
- m_text7 = new TextField();
- m_text8 = new TextField();
- m_text9 = new TextField();
- m_text10 = new TextField();
- m_text11 = new TextField();
- m_text12 = new TextField();
- m_systemCommandController = new SystemCommandController();
- super();
- SetTextBoxProperties(m_text0,8.6,9);
- SetTextBoxProperties(m_text1,m_text0.x,26);
- SetTextBoxProperties(m_text2,m_text0.x,43);
- SetTextBoxProperties(m_text3,m_text0.x,60);
- SetTextBoxProperties(m_text4,m_text0.x,77);
- SetTextBoxProperties(m_text5,m_text0.x,94);
- SetTextBoxProperties(m_text6,m_text0.x,111);
- SetTextBoxProperties(m_text7,m_text0.x,128);
- SetTextBoxProperties(m_text8,m_text0.x,145);
- SetTextBoxProperties(m_text9,m_text0.x,162);
- SetTextBoxProperties(m_text10,m_text0.x,179);
- SetTextBoxProperties(m_text11,m_text0.x,196);
- SetTextBoxProperties(m_text12,m_text0.x,213);
- m_lobbyTextArray.push(m_text0);
- m_lobbyTextArray.push(m_text1);
- m_lobbyTextArray.push(m_text2);
- m_lobbyTextArray.push(m_text3);
- m_lobbyTextArray.push(m_text4);
- m_lobbyTextArray.push(m_text5);
- m_lobbyTextArray.push(m_text6);
- m_lobbyTextArray.push(m_text7);
- m_lobbyTextArray.push(m_text8);
- m_lobbyTextArray.push(m_text9);
- m_lobbyTextArray.push(m_text10);
- m_lobbyTextArray.push(m_text11);
- m_lobbyTextArray.push(m_text12);
- _loc1_ = 0;
- while(_loc1_ < m_backgroundArray.length)
- {
- m_lobbyTextArray[_loc1_].visible = false;
- m_backgroundArray[_loc1_] = 0;
- _loc1_++;
- }
- }
- private function SetTextBoxProperties(param1:TextField, param2:int, param3:int) : void
- {
- param1.width = 400;
- param1.height = 17;
- param1.x = param2;
- param1.y = param3;
- param1.text = "";
- param1.multiline = false;
- param1.wordWrap = false;
- this.addChild(param1);
- }
- public function Initialize(param1:Number) : void
- {
- this.scaleX = param1;
- this.scaleY = param1;
- m_chatLogReference = TownOfSalem.GetSingleton().GetUserInterfaceManager().GetChatLog();
- this.x = 5;
- var _loc2_:Number = 266.75 * param1;
- if(TownOfSalem.GetSingleton().stage.stageHeight >= 600)
- {
- this.y = TownOfSalem.GetSingleton().stage.stageHeight - _loc2_ - 5;
- }
- else
- {
- this.y = 600 - _loc2_ - 5;
- }
- var _loc3_:TextFormat = new TextFormat();
- _loc3_.font = "Arial";
- _loc3_.size = 11;
- m_inputField.width = m_text0.width;
- m_inputField.height = m_text0.height;
- m_inputField.x = 9.3;
- m_inputField.y = 266.75 - 28.05;
- m_inputField.defaultTextFormat = _loc3_;
- m_inputField.type = "input";
- m_inputField.maxChars = 140;
- m_inputField.multiline = false;
- m_inputField.wordWrap = false;
- m_inputField.addEventListener("keyDown",OnPressEnter,false,0,true);
- addChild(m_inputField);
- }
- public function Reset() : void
- {
- m_inputField.removeEventListener("keyDown",OnPressEnter);
- Clear();
- m_chatLogReference = null;
- m_lobbyTextArray = null;
- m_inputField = null;
- m_backgroundArray = null;
- m_text0 = null;
- m_text1 = null;
- m_text2 = null;
- m_text3 = null;
- m_text4 = null;
- m_text5 = null;
- m_text6 = null;
- m_text7 = null;
- m_text8 = null;
- m_text9 = null;
- m_text10 = null;
- m_text11 = null;
- m_text12 = null;
- }
- public function Resize(param1:Number) : void
- {
- this.scaleX = param1;
- this.scaleY = param1;
- var _loc4_:TownOfSalem = TownOfSalem.GetSingleton();
- if(_loc4_.stage.stageHeight >= 600)
- {
- this.y = _loc4_.stage.stageHeight - this.height - 5;
- }
- else
- {
- this.y = 600 - this.height - 5;
- }
- m_inputField.x = 9.3;
- m_inputField.y = 266.75 - 28.05;
- var _loc3_:String = m_inputField.text;
- var _loc2_:int = m_inputField.caretIndex;
- m_inputField.text = "";
- var _loc5_:TextFormat = new TextFormat();
- _loc5_.font = "Arial";
- _loc5_.size = 11 * param1;
- m_inputField.setTextFormat(_loc5_);
- m_inputField.text = _loc3_;
- m_inputField.setSelection(_loc2_,_loc2_);
- }
- private function OnPressEnter(param1:KeyboardEvent) : void
- {
- var _loc3_:* = null;
- var _loc2_:int = 0;
- if(param1.charCode == 13)
- {
- if(m_inputField.text == "")
- {
- return;
- }
- m_inputField.text = StripHTMLTags(m_inputField.text);
- if(m_inputField.length > 140)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\"><b>Message exceeds 140 character limit.</b></font>");
- return;
- }
- _loc3_ = m_systemCommandController.ProcessMessage(m_inputField.text);
- if(_loc3_.isSystemCommand)
- {
- if(_loc3_.isValid)
- {
- TownOfSalem.GetSingleton().SendServerMessage(_loc3_.serverMessage);
- }
- m_inputField.text = "";
- return;
- }
- if(_loc3_.isClientCommand)
- {
- if(_loc3_.isValid)
- {
- _loc3_.process();
- }
- m_inputField.text = "";
- return;
- }
- if(GameStage.m_gameStage == 1)
- {
- if(!TownOfSalem.GetSingleton().GetUserInterfaceManager().GetNameSelection().HasChosenName())
- {
- m_inputField.text = "";
- UpdateText("<font face=\"Arial\" color=\"#FFFFFF\" size=\"11\"><b>You must choose a name before you can talk.</b></font>");
- }
- }
- else if(GameStage.m_gameStage >= 4)
- {
- if(TownOfSalem.GetSingleton().GetGameStateManager().m_blackmailed && TownOfSalem.GetSingleton().GetGameStateManager().IsAlive())
- {
- m_inputField.text = "";
- if(GameStage.m_gameStage != 7)
- {
- UpdateText("<font face=\"Arial\" color=\"#FFFFFF\" size=\"11\"><b>You are blackmailed.</b></font>");
- return;
- }
- }
- if(m_inputField.text.length >= 4)
- {
- if(IsCommand(m_inputField.text))
- {
- _loc2_ = IsWhisperCommand(m_inputField.text);
- if(_loc2_ != 0)
- {
- ProcessWhisperCommand(m_inputField.text,_loc2_);
- m_inputField.text = "";
- return;
- }
- if(IsHelpCommand(m_inputField.text))
- {
- PrintInGameCommands();
- m_inputField.text = "";
- return;
- }
- if(IsIgnoreCommand(m_inputField.text))
- {
- ProcessIgnoreCommand(m_inputField.text,true);
- m_inputField.text = "";
- return;
- }
- if(IsUnignoreCommand(m_inputField.text))
- {
- ProcessIgnoreCommand(m_inputField.text,false);
- m_inputField.text = "";
- return;
- }
- }
- }
- }
- TownOfSalem.GetSingleton().SendServerMessage(String.fromCharCode(3) + m_inputField.text + String.fromCharCode(0));
- m_inputField.text = "";
- }
- }
- public function GetUserIndex(param1:String, param2:int) : int
- {
- var _loc3_:* = undefined;
- var _loc5_:int = 0;
- var _loc4_:String = new String();
- while(param2 <= 26 && param2 < param1.length)
- {
- while(param2 < param1.length && param1.charAt(param2) != " ")
- {
- _loc4_ = _loc4_ + param1.charAt(param2);
- param2++;
- }
- if(!isNaN(int(_loc4_)))
- {
- trace("Got " + int(_loc4_) + " as player number");
- if(int(_loc4_) <= 15 && int(_loc4_) >= 1)
- {
- if(int(_loc4_) >= 10)
- {
- m_isNameNum = 2;
- }
- else
- {
- m_isNameNum = 1;
- }
- return int(_loc4_) - 1;
- }
- }
- _loc3_ = TownOfSalem.GetSingleton().GetUsers();
- _loc5_ = 0;
- while(_loc5_ < _loc3_.length)
- {
- if(_loc3_[_loc5_].GetName().toLowerCase() == _loc4_.toLowerCase())
- {
- return _loc5_;
- }
- _loc5_++;
- }
- _loc4_ = _loc4_ + " ";
- param2++;
- }
- trace("Player " + _loc4_.toLowerCase() + " not found");
- return -1;
- }
- public function ProcessWhisperCommand(param1:String, param2:int) : void
- {
- var _loc3_:int = -1;
- _loc3_ = GetUserIndex(param1,param2);
- if(_loc3_ == -1)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">Supplied user not found.</font>");
- return;
- }
- if(_loc3_ == TownOfSalem.GetSingleton().GetGameStateManager().m_ourPos)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">You cannot whisper yourself, that would be weird.</font>");
- return;
- }
- var _loc4_:Vector.<User> = TownOfSalem.GetSingleton().GetUsers();
- var _loc5_:int = param2 + _loc4_[_loc3_].GetName().length;
- if(m_isNameNum > 0)
- {
- _loc5_ = param2 + m_isNameNum;
- m_isNameNum = 0;
- }
- TownOfSalem.GetSingleton().SendServerMessage(String.fromCharCode(8) + String.fromCharCode(_loc4_[_loc3_].GetPosition() + 1) + param1.substr(_loc5_) + String.fromCharCode(0));
- }
- public function ProcessIgnoreCommand(param1:String, param2:Boolean) : void
- {
- var _loc5_:int = 0;
- if(param2)
- {
- _loc5_ = 8;
- }
- else
- {
- _loc5_ = 10;
- }
- var _loc3_:int = GetUserIndex(param1,_loc5_);
- if(_loc3_ == -1)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">Supplied user not found.</font>");
- return;
- }
- if(_loc3_ == TownOfSalem.GetSingleton().GetGameStateManager().m_ourPos)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">You cannot ignore yourself, that would be weird.</font>");
- return;
- }
- var _loc4_:Vector.<User> = TownOfSalem.GetSingleton().GetUsers();
- _loc4_[_loc3_].SetIgnored(param2);
- if(param2)
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\"><b>" + _loc4_[_loc3_].GetName() + "</b> has been ignored.</font>");
- }
- else
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\"><b>" + _loc4_[_loc3_].GetName() + "</b> has been unignored.</font>");
- }
- }
- public function PrintInGameCommands() : void
- {
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\"><b>Help:</b></font>");
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">Type use / or - to start a chat command.</font>");
- UpdateText("<font face=\"Arial\" color=\"#00FF00\" size=\"11\">/w [name] [msg] or /pm [name] [msg] will whisper a person.</font>");
- }
- public function IsHelpCommand(param1:String) : Boolean
- {
- var _loc2_:* = null;
- if(IsCommand(param1))
- {
- _loc2_ = param1.toLowerCase();
- if(_loc2_.charAt(1) == "h" && _loc2_.charAt(2) == "e" && _loc2_.charAt(3) == "l" && _loc2_.charAt(4) == "p" && (_loc2_.charAt(5) == " " || _loc2_.length == 5))
- {
- return true;
- }
- }
- return false;
- }
- public function IsWhisperCommand(param1:String) : int
- {
- var _loc2_:* = null;
- var _loc3_:int = 0;
- if(IsCommand(param1))
- {
- _loc2_ = param1.toLowerCase();
- if(_loc2_.charAt(1) == "w" && _loc2_.charAt(2) == " ")
- {
- _loc3_ = 3;
- }
- else if(_loc2_.charAt(1) == "w" && _loc2_.charAt(2) == "h" && _loc2_.charAt(3) == "i" && _loc2_.charAt(4) == "s" && _loc2_.charAt(5) == "p" && _loc2_.charAt(6) == "e" && _loc2_.charAt(7) == "r" && _loc2_.charAt(8) == " ")
- {
- _loc3_ = 9;
- }
- else if(_loc2_.charAt(1) == "p" && _loc2_.charAt(2) == "m" && _loc2_.charAt(3) == " ")
- {
- _loc3_ = 4;
- }
- }
- return _loc3_;
- }
- public function IsIgnoreCommand(param1:String) : Boolean
- {
- var _loc2_:* = null;
- if(IsCommand(param1))
- {
- _loc2_ = param1.toLowerCase();
- if(_loc2_.charAt(1) == "i" && _loc2_.charAt(2) == "g" && _loc2_.charAt(3) == "n" && _loc2_.charAt(4) == "o" && _loc2_.charAt(5) == "r" && _loc2_.charAt(6) == "e" && _loc2_.charAt(7) == " ")
- {
- return true;
- }
- }
- return false;
- }
- public function IsUnignoreCommand(param1:String) : Boolean
- {
- var _loc2_:* = null;
- if(IsCommand(param1))
- {
- _loc2_ = param1.toLowerCase();
- if(_loc2_.charAt(1) == "u" && _loc2_.charAt(2) == "n" && _loc2_.charAt(3) == "i" && _loc2_.charAt(4) == "g" && _loc2_.charAt(5) == "n" && _loc2_.charAt(6) == "o" && _loc2_.charAt(7) == "r" && _loc2_.charAt(8) == "e" && _loc2_.charAt(9) == " ")
- {
- return true;
- }
- }
- return false;
- }
- public function IsCommand(param1:String) : Boolean
- {
- if(param1.charAt(0) == "/" || param1.charAt(0) == "-")
- {
- return true;
- }
- return false;
- }
- public function UpdateText(param1:String, param2:uint = 0) : void
- {
- var _loc4_:* = 0;
- graphics.clear();
- var _loc3_:uint = m_lobbyTextArray.length - 1;
- _loc4_ = uint(0);
- while(_loc4_ < _loc3_)
- {
- m_lobbyTextArray[_loc4_].htmlText = m_lobbyTextArray[_loc4_ + 1].htmlText;
- m_backgroundArray[_loc4_] = m_backgroundArray[_loc4_ + 1];
- m_lobbyTextArray[_loc4_].visible = m_lobbyTextArray[_loc4_ + 1].visible;
- if(m_lobbyTextArray[_loc4_].visible)
- {
- graphics.lineStyle(0,m_backgroundArray[_loc4_],0);
- graphics.beginFill(m_backgroundArray[_loc4_],0.7);
- graphics.drawRect(0,_loc4_ * 17 + 9,420,17);
- graphics.endFill();
- }
- _loc4_++;
- }
- m_lobbyTextArray[_loc3_].htmlText = param1;
- m_backgroundArray[_loc3_] = param2;
- m_lobbyTextArray[_loc3_].visible = true;
- graphics.lineStyle(0,param2,0);
- graphics.beginFill(param2,0.7);
- graphics.drawRect(0,_loc3_ * 17 + 9,420,17);
- graphics.endFill();
- m_chatLogReference.AddText(param1,param2);
- }
- public function GetMessageInPieces(param1:String, param2:String, param3:String, param4:String, param5:String) : Array
- {
- var _loc8_:int = 0;
- var _loc7_:* = null;
- var _loc11_:Array = [];
- var _loc9_:* = "";
- var _loc10_:Number = MeasureString(param1 + param2 + param3 + param4 + param5);
- var _loc6_:Boolean = false;
- if(param4.length == 0)
- {
- return _loc11_;
- }
- if(_loc10_ > 400 * this.scaleX * 0.95)
- {
- _loc8_ = 0;
- _loc7_ = param4.split(" ");
- while(!_loc6_ && _loc8_ < _loc7_.length && _loc7_.length != 1)
- {
- if(MeasureString(param1 + param2 + param3 + _loc9_ + _loc7_[_loc8_] + param5) < 400 * this.scaleX * 0.95)
- {
- _loc8_++;
- _loc9_ = _loc9_ + (_loc7_[_loc8_] + " ");
- }
- else
- {
- _loc11_.push(_loc9_);
- _loc9_ = "";
- _loc6_ = true;
- }
- }
- while(_loc8_ < _loc7_.length)
- {
- _loc8_++;
- _loc9_ = _loc9_ + (_loc7_[_loc8_] + " ");
- }
- }
- else
- {
- _loc9_ = param4;
- }
- _loc11_.push(_loc9_);
- return _loc11_;
- }
- public function StripHTMLTags(param1:String) : String
- {
- return param1.replace(/<.*/g,"");
- }
- public function UpdateWrapText(param1:String, param2:String, param3:String, param4:String, param5:String, param6:uint = 0) : void
- {
- var _loc8_:int = 0;
- var _loc7_:Boolean = true;
- var _loc9_:Array = GetMessageInPieces(param1,param2,param3,param4,param5);
- _loc8_ = 0;
- while(_loc8_ < _loc9_.length)
- {
- if(_loc7_)
- {
- UpdateText(param1 + param2 + param3 + _loc9_[_loc8_] + param5,param6);
- _loc7_ = false;
- }
- else
- {
- UpdateText(param1 + param3 + _loc9_[_loc8_] + param5,param6);
- }
- _loc8_++;
- }
- }
- public function MeasureString(param1:String) : Number
- {
- var _loc2_:TextField = new TextField();
- _loc2_.htmlText = param1;
- return _loc2_.textWidth * this.scaleX;
- }
- public function Clear() : void
- {
- var _loc1_:* = 0;
- graphics.clear();
- _loc1_ = uint(0);
- while(_loc1_ < m_lobbyTextArray.length)
- {
- m_lobbyTextArray[_loc1_].htmlText = "";
- m_lobbyTextArray[_loc1_].visible = false;
- _loc1_++;
- }
- }
- public function GetInputField() : TextField
- {
- return m_inputField;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement