using System;
using Assets.src.rpg;
using Assets.src.screen;

public class PrepareScr : CScreen, IActionListener
{
	public static string[] GUN_NAME = new string[12]
	{
		"GUNNER", "MISS 6", "ELECTICIAN", "KING KONG", "ROCKETER", "GRANOS", "CHICKY", "TARZAN", "APACHE", "MAGENTA",
		"LASER GIRL", "COW GIRL"
	};

	public static sbyte numPlayer = 8;

	public static sbyte currentRoom;

	public static sbyte currLevel;

	public MyVector bossInfos = new MyVector("boss info");

	public int showChatInterval;

	public static sbyte[] mapBossID;

	public static sbyte[] bossID;

	private int[] x_pos;

	private int[] y_pos;

	private int x_player = 30;

	private int y_player = 60;

	private int y_owner;

	private int money;

	private int ownerID;

	private int height = 30;

	private int y_Map;

	private int x_Name;

	public static sbyte curMap = 0;

	private sbyte numMap = 3;

	public static sbyte numCurItemSlot = 8;

	public static int[] itemCur = new int[numCurItemSlot];

	public static MyItemIcon prepareScrItemIcon;

	public static sbyte numUseSlot = 4;

	public bool isChooseItem;

	private bool isChooseGun;

	private int selectedItem;

	private int selectedGunLv2;

	private int curUsing;

	private int x_item;

	private int y_item;

	private int y_item_touch;

	private int x_item_touch;

	public static short bulletType = 0;

	public ChatPopup tip = new ChatPopup();

	private bool isGameEnd;

	public Command cmdChat;

	public Command cmdExit;

	private Command cmdStart;

	private Command cmdReady;

	private Command cmdMenuPrepare;

	private Command cmdChangeTeam;

	private Command cmdAddFriend;

	private Command cmdSelect;

	private Command cmdLeft;

	private Command cmdRight;

	private Command cmdBack;

	private Command cmdBanBe;

	private Command cmdTinNhan;

	private Command cmdMap;

	private Command cmdInvite;

	public static Image randomMap;

	public static sbyte[] fileData;

	public static bool exitFromPrepareScr;

	public static Image iconChat;

	public int chatDelay;

	public int readyDelay;

	public bool isTouchItem;

	public int currZone;

	public int currRoom;

	public sbyte currLeft;

	public sbyte currRight;

	public static bool isBossRoom = false;

	private static int totalPow;

	private static int leftPow;

	private static int rightPow;

	public PrepareScr()
	{
		initPosPlayers();
		initItemCurrent();
		int num = (CCanvas.isTouch ? 25 : 0);
		x_item = CCanvas.w - 181 >> 1;
		if (CScreen.h < 200)
		{
			y_item = CCanvas.h - (CScreen.cmdH + 18);
		}
		else
		{
			y_item = CCanvas.h - (CScreen.cmdH + 42) + 5;
		}
		x_item_touch = CCanvas.w / 2 - 80 + 12;
		for (y_item_touch = CCanvas.h / 2 - 40; y_item < y_pos[7] + 55; y_item++)
		{
		}
		if (y_item > CCanvas.h - 30)
		{
			y_item = CCanvas.h - 30;
		}
		switch (CCanvas.w)
		{
		case 320:
			x_player = 30;
			y_player = 40;
			height = 33;
			y_Map = 20;
			x_Name = 10;
			y_owner = 2;
			break;
		case 240:
			x_player = 30;
			y_player = 60;
			height = 45;
			y_Map = 20;
			x_Name = 10;
			y_owner = 8;
			break;
		case 176:
			x_player = 10;
			y_player = 40;
			height = 30;
			y_Map = 15;
			x_Name = 3;
			y_owner = 2;
			break;
		}
		cmdMenuPrepare = new Command("Menu", this, 1001, null);
		cmdChat = new Command("Chat", this, 1002, null);
		cmdChangeTeam = new Command(L.changeTeam(), this, 1003, null);
		cmdAddFriend = new Command(L.makeFriend(), this, 1004, null);
		cmdMap = new Command(L.selectMap(), this, 1005, null);
		cmdInvite = new Command(L.findFriend(), this, 1006, null);
		cmdReady = new Command(L.ready(), this, 1007, null);
		cmdStart = new Command(L.begin(), this, 1008, null);
		cmdExit = new Command(L.leaveBattle(), this, 1009, null);
		cmdBack = new Command(L.back(), this, 1010, null);
		cmdBanBe = new Command(L.friends(), this, 1011, null);
		cmdTinNhan = new Command(L.message(), this, 1012, null);
		cmdSelect = new Command("Balô", this, 1013, null);
		cmdLeft = new Command("Left", this, 1014, null);
		cmdRight = new Command(L.back(), this, 1015, null);
		left = cmdMenuPrepare;
		right = cmdExit;
		if (CCanvas.isTouch)
		{
			cmdExit.img = Command.back;
			cmdExit.x = CScreen.w - 44;
			cmdExit.y = 10;
		}
	}

	public new static void loadImage()
	{
		try
		{
			randomMap = CCanvas.loadImage("/randomMap.png");
			iconChat = CCanvas.loadImage("/iconChat.png");
		}
		catch (Exception)
		{
		}
	}

	public static void init()
	{
		CRes.outz("MM.NUMBMAP= " + MM.NUM_MAP);
	}

	public void getPlayerIcon(short clanID, Image icon)
	{
	}

	public void initItemCurrent()
	{
		for (int i = 0; i < itemCur.Length; i++)
		{
			itemCur[i] = -2;
		}
		itemCur[0] = 0;
		itemCur[1] = 0;
		itemCur[2] = 1;
		itemCur[3] = 1;
	}

	public static int[] getStrainingItem()
	{
		int[] array = new int[numCurItemSlot];
		array[0] = 0;
		array[1] = 0;
		array[2] = 0;
		array[3] = 0;
		array[4] = 0;
		array[5] = 0;
		return array;
	}

	public int[] copyItemCurrent()
	{
		int[] array = new int[itemCur.Length];
		for (int i = 0; i < array.Length; i++)
		{
			array[i] = itemCur[i];
		}
		return array;
	}

	public int getIDBySeat(int i)
	{
		return PM.p[i].IDDB;
	}

	public void setAt(int seat, CPlayer joinPersonInfo)
	{
		PM.p[seat] = joinPersonInfo;
	}

	public void doViewMessage()
	{
		MyVector myVector = new MyVector("do view mess");
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != MyMidlet.myInfo.IDDB && cPlayer.IDDB != -1)
			{
				myVector.addElement(new Command(cPlayer.name, this, 1000, cPlayer));
			}
		}
		CCanvas.menu.startAt(myVector, 0);
	}

	public void initPosPlayers()
	{
		x_pos = new int[numPlayer];
		y_pos = new int[numPlayer];
		int num = CScreen.w / 5;
		int num2 = CCanvas.hh - 20;
		int num3 = 70;
		if (CScreen.h < 200)
		{
			num2 = CCanvas.hh - 45;
		}
		int num4 = CScreen.w / 10;
		x_pos[0] = num - num4;
		y_pos[0] = num2;
		x_pos[1] = CCanvas.w - num + num4;
		y_pos[1] = num2;
		x_pos[2] = (num << 1) - num4;
		y_pos[2] = num2 + num3;
		x_pos[3] = CCanvas.w - (num << 1) + num4;
		y_pos[3] = num2 + num3;
		x_pos[4] = (num << 1) - num4;
		y_pos[4] = num2;
		x_pos[5] = CCanvas.w - (num << 1) + num4;
		y_pos[5] = num2;
		x_pos[6] = num - num4;
		y_pos[6] = num2 + num3;
		x_pos[7] = CCanvas.w - num + num4;
		y_pos[7] = num2 + num3;
	}

	private void doShowFriend()
	{
		GameService.gI().friend(0, -1);
		InfoDlg.showWait();
	}

	private void doViewTinNhan()
	{
	}

	protected void doChangeTeam()
	{
		GameService.gI().changeTeam();
		InfoDlg.showWait();
	}

	public void onChangeTeam(int userID, sbyte newSeat)
	{
		int numberByID = getNumberByID(userID);
		CPlayer cPlayer = PM.p[numberByID];
		PM.p[newSeat] = cPlayer;
		PM.p[newSeat].teamColor = (sbyte)((newSeat % 2 != 0) ? 1 : 0);
		PM.p[numberByID] = null;
		if (userID == MyMidlet.myInfo.IDDB)
		{
			GameScr.myIndex = newSeat;
			MyMidlet.myInfo.index = newSeat;
		}
		CRes.outz("indexOfme= " + GameScr.myIndex);
	}

	protected void doAddFriend()
	{
		MyVector myVector = new MyVector("do fire friend");
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != MyMidlet.myInfo.IDDB && cPlayer.IDDB != -1)
			{
				myVector.addElement(new Command(cPlayer.name, this, 1016, cPlayer));
			}
		}
		CCanvas.menu.startAt(myVector, 0);
	}

	protected void doKick()
	{
		MyVector myVector = new MyVector("do kick");
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != MyMidlet.myInfo.IDDB && cPlayer.IDDB >= 0)
			{
				myVector.addElement(new Command(cPlayer.name, this, 1017, cPlayer));
			}
		}
		CCanvas.menu.startAt(myVector, 0);
	}

	protected void doStartGame()
	{
		int num = 0;
		int num2 = 0;
		int num3 = 0;
		int num4 = 0;
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != MyMidlet.myInfo.IDDB && cPlayer.IDDB != -1)
			{
				if (cPlayer.isReady)
				{
					num++;
				}
				else
				{
					num2++;
				}
			}
			if (cPlayer != null && cPlayer.IDDB != -1)
			{
				if (i % 2 == 0)
				{
					num3++;
				}
				else
				{
					num4++;
				}
			}
		}
		if (num == 0 || num2 > 0)
		{
		}
		InfoDlg.showWait();
		GameService.gI().startGame();
	}

	protected void doChat()
	{
		string text = CCanvas.inputDlg.tfInput.getText();
		if (!text.Equals(string.Empty))
		{
			GameService.gI().chatToBoard(text);
			showChat(MyMidlet.myInfo.IDDB, CCanvas.inputDlg.tfInput.getText(), 90);
		}
		chatDelay = 30;
		CCanvas.endDlg();
	}

	private void doReady()
	{
		if (readyDelay != 0)
		{
			return;
		}
		bool flag = !PM.p[GameScr.myIndex].isReady;
		if (flag)
		{
			if (MyMidlet.myInfo.xu < money)
			{
				CCanvas.startOKDlg(L.cannotReady());
				return;
			}
			readyDelay = 30;
		}
		InfoDlg.showWait();
		GameService.gI().ready(flag);
	}

	protected void doSelectMap()
	{
		CCanvas.panel.setTypeMap();
		CCanvas.panel.show();
	}

	private void doInvite()
	{
		GameService.gI().inviteFriend(true, -1);
		CCanvas.startOKDlg(L.pleaseWait());
	}

	protected void doSettingMoney()
	{
		MyVector myVector = new MyVector("menu");
		if (currLevel == 0)
		{
			myVector.addElement(new Command("100\n" + L.xu(), this, 2001, null));
			myVector.addElement(new Command("200\n" + L.xu(), this, 2002, null));
			myVector.addElement(new Command("500\n" + L.xu(), this, 2003, null));
			myVector.addElement(new Command("1000\n" + L.xu(), this, 2004, null));
		}
		if (currLevel == 1)
		{
			myVector.addElement(new Command("1000\n" + L.xu(), this, 2005, null));
			myVector.addElement(new Command("2000\n" + L.xu(), this, 2006, null));
			myVector.addElement(new Command("5000\n" + L.xu(), this, 2007, null));
			myVector.addElement(new Command("10000\n" + L.xu(), this, 2008, null));
		}
		if (currLevel == 2)
		{
			myVector.addElement(new Command("10000\n" + L.xu(), this, 2009, null));
			myVector.addElement(new Command("20000\n" + L.xu(), this, 2010, null));
			myVector.addElement(new Command("50000\n" + L.xu(), this, 2011, null));
		}
		if (currLevel == 3)
		{
			myVector.addElement(new Command("10000\n" + L.xu(), this, 2009, null));
			myVector.addElement(new Command("20000\n" + L.xu(), this, 2010, null));
			myVector.addElement(new Command("50000\n" + L.xu(), this, 2011, null));
		}
		CCanvas.menu.startAt(myVector, 0);
	}

	private void doSettingPassword()
	{
		CCanvas.inputDlg = new InputDlg();
		CCanvas.inputDlg.setInfo(L.setPass(), new Command(string.Empty, this, 1020, null), new Command(string.Empty, this, 1019, null), TField.INPUT_TYPE_ANY);
		CCanvas.inputDlg.show();
	}

	private void doSettingBoardName()
	{
		CCanvas.inputDlg.setInfo(L.setBoardName(), new Command(string.Empty, this, 1021, null), new Command(string.Empty, this, 1019, null), TField.INPUT_TYPE_ANY);
		CCanvas.inputDlg.show();
		CCanvas.inputDlg.tfInput.doChangeToTextBox(false);
	}

	protected void doLeaveBoard()
	{
		WaitingScr.gI().show();
		exitFromPrepareScr = true;
		GameService.gI().leaveBoard();
		MenuScr.gI().show();
		MM.mapImages.removeAllElements();
		MM.maps.removeAllElements();
	}

	protected void doSetMaxPlayer()
	{
		MyVector myVector = new MyVector(" do set max player");
		myVector.addElement(new Command("4 vs 4", this, 1022, null));
		myVector.addElement(new Command("3 vs 3", this, 1023, null));
		myVector.addElement(new Command("2 vs 2", this, 1024, null));
		myVector.addElement(new Command("1 vs 1", this, 1025, null));
		CCanvas.menu.startAt(myVector, 0);
	}

	private void doShowMenuPrepare()
	{
		MyVector myVector = new MyVector();
		if (ownerID == MyMidlet.myInfo.IDDB)
		{
			myVector.addElement(cmdMap);
		}
		Command o = new Command(L.setting(), this, 1027, null);
		Command o2 = new Command("Kick..", this, 1031, null);
		if (!PM.p[GameScr.myIndex].isReady || ownerID == MyMidlet.myInfo.IDDB)
		{
			myVector.addElement(cmdChangeTeam);
		}
		if (ownerID == MyMidlet.myInfo.IDDB)
		{
			myVector.addElement(o);
		}
		bool flag = false;
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != MyMidlet.myInfo.IDDB && cPlayer.IDDB != -1)
			{
				flag = true;
				break;
			}
		}
		if (flag)
		{
			myVector.addElement(cmdAddFriend);
		}
		if (!CCanvas.isTouch)
		{
			myVector.addElement(new Command(L.message(), this, 2000, null));
		}
		if (flag && ownerID == MyMidlet.myInfo.IDDB)
		{
			myVector.addElement(o2);
		}
		if (!CCanvas.isTouch)
		{
			myVector.addElement(cmdExit);
		}
		CCanvas.menu = new Menu();
		CCanvas.menu.startAt(myVector, 0);
	}

	public void onMapChanged(sbyte map)
	{
		CCanvas.endDlg();
		curMap = map;
	}

	public void onSomeOneChangeGun(int userID, sbyte gunID)
	{
		getPlayerFromID(userID).gun = gunID;
		showChat(userID, "Doi sung\n" + GUN_NAME[gunID] + " !", 40);
	}

	public int getNumberByID(int ID)
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB == ID)
			{
				return i;
			}
		}
		return -1;
	}

	public override void input()
	{
		if (CCanvas.panel.isShow)
		{
			return;
		}
		if (CCanvas.isPointerJustRelease)
		{
			if (CCanvas.isPointer(x_item - 15, y_item - 15, CPlayer.arrItemBalo.Length * 30, 30))
			{
				cmdSelect.performAction();
			}
			if (ownerID == MyMidlet.myInfo.IDDB && CCanvas.isTouch && CCanvas.isPointer(CCanvas.hw - 50, 10, 100, 90) && CCanvas.isTouch)
			{
				cmdMap.performAction();
			}
		}
		if (CCanvas.keyPressed[4] || CScreen.keyLeft)
		{
			if (curUsing == 0)
			{
				if (!isChooseItem)
				{
					selectedItem--;
					if (selectedItem < 0)
					{
						selectedItem = numCurItemSlot - 1;
					}
				}
			}
			else if (curUsing == 1)
			{
				if (isChooseGun)
				{
					selectedGunLv2--;
					if (selectedGunLv2 < 0)
					{
						selectedGunLv2 = 9;
					}
					showTipChooseWeapon(x_item - 45, y_item - 22);
				}
				else
				{
					curUsing = 0;
					selectedItem = numCurItemSlot - 1;
				}
			}
		}
		else if (CCanvas.keyPressed[6] || CScreen.keyRight)
		{
			if (curUsing == 0)
			{
				if (!isChooseItem)
				{
					selectedItem++;
					if (selectedItem > numCurItemSlot - 1)
					{
						selectedItem = 0;
					}
				}
			}
			else if (curUsing == 1)
			{
				if (isChooseGun)
				{
					selectedGunLv2++;
					if (selectedGunLv2 > 9)
					{
						selectedGunLv2 = 0;
					}
					showTipChooseWeapon(x_item - 45, y_item - 22);
				}
				else
				{
					curUsing = 0;
					selectedItem = 0;
				}
			}
		}
		if (CCanvas.isPointerJustRelease && CCanvas.isPointer(0, 0, 50, 50))
		{
			CCanvas.isPointerJustRelease = false;
			if (CCanvas.currentDialog == null)
			{
				CCanvas.inputDlg = new InputDlg();
				CCanvas.inputDlg.setInfo("Chat", new Command(L.ok(), this, 1, null), new Command(L.close(), this, 2, null), TField.INPUT_TYPE_ANY);
				CCanvas.inputDlg.show();
				if (CCanvas.isTouch && mGraphics.zoomLevel > 1)
				{
					CCanvas.inputDlg.tfInput.doChangeToTextBox(false);
				}
			}
		}
		if (CCanvas.inputDlg.tfInput.justReturnFromTextBox && !CCanvas.panel.isFindRoom)
		{
			CCanvas.inputDlg.tfInput.justReturnFromTextBox = false;
			doChat();
		}
		if (CCanvas.isTouch && CCanvas.panel.listMail.size() >= 2 && !CCanvas.panel.isShow && CCanvas.isPointer(CCanvas.w - 30, 40, 30, 30) && CCanvas.isPointerJustRelease)
		{
			CCanvas.isPointerJustRelease = false;
			CCanvas.panel.setTypeMail();
			CCanvas.panel.show();
		}
		base.input();
		CScreen.clearKey();
	}

	private void showTipChooseWeapon(int x, int y)
	{
	}

	public void resetItemCurrent()
	{
	}

	public override void update()
	{
		if (PM.p[GameScr.myIndex] == null)
		{
			return;
		}
		GameScr.updateChat();
		for (int i = 0; i < 8; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != -1)
			{
				cPlayer.action();
			}
		}
		if (readyDelay > 0)
		{
			readyDelay--;
		}
		if (chatDelay > 0)
		{
			chatDelay--;
		}
		x_item = CCanvas.w / 2 - CPlayer.arrItemBalo.Length * 30 / 2 + 15;
		if (CCanvas.isTouch)
		{
			center = cmdExit;
		}
		else
		{
			center = null;
		}
		left = cmdMenuPrepare;
		if (ownerID == MyMidlet.myInfo.IDDB)
		{
			right = cmdStart;
			cmdStart.caption = L.begin();
		}
		else
		{
			if (currLevel != 7)
			{
				right = cmdReady;
			}
			else
			{
				right = cmdStart;
			}
			cmdReady.caption = L.ready();
			for (int j = 0; j < PM.p.Length; j++)
			{
				CPlayer cPlayer2 = PM.p[j];
				if (cPlayer2 != null && cPlayer2.IDDB == MyMidlet.myInfo.IDDB && cPlayer2.isReady)
				{
					cmdReady.caption = L.noReady();
					if (readyDelay == 0)
					{
						center = cmdReady;
					}
					else
					{
						center = null;
					}
				}
			}
		}
		if (ownerID == MyMidlet.myInfo.IDDB)
		{
			if (!CCanvas.isTouch)
			{
				center = cmdSelect;
			}
		}
		else if (PM.p[GameScr.myIndex].isReady)
		{
			center = null;
		}
		else if (!CCanvas.isTouch)
		{
			center = cmdSelect;
		}
		if (isChooseGun)
		{
			left = (right = null);
		}
	}

	public override void paint(mGraphics g)
	{
		BackgroundNew.paintBGGameScr(g);
		paintPlayerPos2(g);
		paintPlayer(g);
		if (!CCanvas.panel.isShow)
		{
			CCanvas.paintInfoPopup(g);
		}
		try
		{
			paintMODEandMoney(g);
		}
		catch (Exception)
		{
		}
		paintItem(g, x_item, y_item);
		g.translate(-g.getTranslateX(), -g.getTranslateY());
		g.setClip(0, 0, CCanvas.w, CCanvas.h);
		GameScr.drawChat(g);
		if (CCanvas.isTouch)
		{
			g.drawImage(iconChat, 10, 10, 0, false);
		}
		if (CCanvas.panel.nMail > 0 && !CCanvas.panel.isShow)
		{
			g.drawImage(iconChat, CCanvas.w - 5, 45, mGraphics.TOP | mGraphics.RIGHT, false);
			mFont.tahoma_7b_white.drawString(g, CCanvas.panel.nMail + string.Empty, CCanvas.w - 28, 47, 1, mFont.tahoma_7b_dark);
		}
		base.paint(g);
	}

	private void paintPlayerPos2(mGraphics g)
	{
		for (int i = 0; i < 8; i++)
		{
			g.drawImage(MenuScr.imgStone, x_pos[i], y_pos[i], mGraphics.TOP | mGraphics.HCENTER, false);
		}
	}

	private void paintMODEandMoney(mGraphics g)
	{
		int num = 10;
		if (CCanvas.h >= 210)
		{
			if (SmallImage.imgNew[MM.getMapFileByID(curMap).iconID] != null && SmallImage.imgNew[MM.getMapFileByID(curMap).iconID].img != null)
			{
				num = 10 + SmallImage.imgNew[MM.getMapFileByID(curMap).iconID].img.getHeight();
			}
			try
			{
				SmallImage.drawSmallImage(g, MM.getMapFileByID(curMap).iconID, CCanvas.hw, 10f, 0, mGraphics.HCENTER | mGraphics.TOP, false);
				mFont.tahoma_7b_white.drawString(g, MM.getMapFileByID(curMap).mapName, CCanvas.hw, num + 10, 2, mFont.tahoma_7b_dark);
			}
			catch (Exception)
			{
				g.drawImage(randomMap, CCanvas.hw, 36, mGraphics.VCENTER | mGraphics.HCENTER, false);
				mFont.tahoma_7b_white.drawString(g, "Unknown", CCanvas.hw, num + 10, 2, mFont.tahoma_7b_dark);
			}
		}
		mFont.tahoma_7b_white.drawString(g, L.room() + " " + currRoom + "-" + currZone, CCanvas.hw, num + 25, 2, mFont.tahoma_7b_dark);
		if (money != 0)
		{
			g.drawImage(Panel.coin, CCanvas.hw - 26, num + 37, 0, false);
			mFont.tahoma_7b_yellow.drawString(g, money + string.Empty, CCanvas.hw - 8, num + 40, 0, mFont.tahoma_7b_dark);
		}
		GameScr.paintOngMau(GameScr.frBarPow20, GameScr.frBarPow21, GameScr.frBarPow22, CCanvas.hw - 25, num + 55, 50, g);
		GameScr.paintOngMauPercent(GameScr.frBarPow0, GameScr.frBarPow1, GameScr.frBarPow2, CCanvas.hw - 25, num + 55, 50, leftPow >> 1, g);
		mFont.tahoma_7_yellow.drawString(g, leftPow + string.Empty, CCanvas.hw - 27, num + 52, 1, mFont.tahoma_7);
		mFont.tahoma_7_white.drawString(g, rightPow + string.Empty, CCanvas.hw + 27, num + 52, 0, mFont.tahoma_7);
	}

	public static void calcBalance()
	{
		if (PM.p == null)
		{
			return;
		}
		totalPow = 0;
		leftPow = 0;
		rightPow = 0;
		for (int i = 0; i < 8; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && (cPlayer == null || cPlayer.IDDB != -1))
			{
				totalPow += cPlayer.power;
			}
		}
		if (totalPow == 0)
		{
			return;
		}
		for (int j = 0; j < 8; j++)
		{
			CPlayer cPlayer2 = PM.p[j];
			if (cPlayer2 != null && (cPlayer2 == null || cPlayer2.IDDB != -1))
			{
				if (j % 2 == 0)
				{
					leftPow += cPlayer2.power;
				}
				else
				{
					rightPow += cPlayer2.power;
				}
			}
		}
		leftPow = leftPow * 100 / totalPow;
		rightPow = rightPow * 100 / totalPow;
	}

	public void paintPlayer(mGraphics g)
	{
		currLeft = 0;
		currRight = 0;
		for (int i = 0; i < 8; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB != -1)
			{
				if (i % 2 == 0)
				{
					currLeft += cPlayer.pointSeat;
				}
				else
				{
					currRight += cPlayer.pointSeat;
				}
				int num = (cPlayer.look = ((i % 2 != 0) ? 2 : 0));
				cPlayer.lookAngle = -1;
				cPlayer.paintPlayer3(g, x_pos[i], y_pos[i]);
				cPlayer.paintLevel(g, x_pos[i] + ((num != 2) ? (-5) : 25), y_pos[i] - 53);
				if (cPlayer.isReady && cPlayer.IDDB != ownerID)
				{
					mFont.tahoma_7b_white.drawString(g, "ok", x_pos[i] + ((num != 2) ? 5 : (-5)), y_pos[i] - 48, 2, mFont.tahoma_7b_dark);
				}
				if (cPlayer.IDDB == ownerID)
				{
					mFont.tahoma_7b_white.drawString(g, L.boss(), x_pos[i] + ((num != 2) ? 5 : (-5)), y_pos[i] - 48, 2, mFont.tahoma_7b_dark);
				}
				mFont mFont2 = ((i % 2 != 0) ? mFont.tahoma_7_yellow : mFont.tahoma_7_blue1);
				mFont font = ((i % 2 != 0) ? mFont.tahoma_7_grey : mFont.tahoma_7_grey);
				if (CCanvas.gameTick % 60 > 30)
				{
					mFont2.drawString(g, cPlayer.name, (i % 2 != 0) ? (x_pos[i] + 16) : (x_pos[i] - 16), y_pos[i] + 5, (i % 2 != 0) ? 1 : 0, font);
				}
				else if (cPlayer.power != 0)
				{
					mFont2.drawString(g, "SM: " + cPlayer.power, (i % 2 != 0) ? (x_pos[i] + 16) : (x_pos[i] - 16), y_pos[i] + 5, (i % 2 != 0) ? 1 : 0, font);
				}
			}
		}
		if (CCanvas.h > 220)
		{
			try
			{
				if (currLevel == 5)
				{
					int num2 = mapBossID.Length - (MM.NUM_MAP - curMap);
					CPlayer.paintSimplePlayer(bossID[num2], CCanvas.w / 2, CCanvas.h - 95 - (CCanvas.isTouch ? 4 : 0), g);
				}
			}
			catch (Exception)
			{
			}
		}
		g.translate(0, -g.getTranslateY());
	}

	public void paintChooseItem(int x, int y, mGraphics g)
	{
		int y2 = (CCanvas.h - CScreen.cmdH) / 2 - 80;
		CScreen.paintBorderRect(g, y2, (!CCanvas.isTouch) ? 3 : 4, (!CCanvas.isTouch) ? 118 : 138, L.chonItem());
	}

	public void getIcon()
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			GameService.gI().getClanIcon((short)cPlayer.clanID);
		}
	}

	public void createMap()
	{
		MM.mapImages.removeAllElements();
		MM.maps.removeAllElements();
		GameScr.mm.createMap(curMap);
	}

	public override void show()
	{
		Music.playContinue(Music.BATTLE);
		Camera.y = 0;
		Camera.x = 0;
		MenuScr.instance = null;
		GameScr.trainingMode = false;
		if (CCanvas.curScr == MenuScr.gI())
		{
			GameScr.chatList.removeAllElements();
		}
		CCanvas.endDlg();
		InfoDlg.hide();
		resetItemCurrent();
		CPlayer.isShooting = false;
		if (CCanvas.gameScr != null)
		{
			CCanvas.gameScr.notClearMap();
		}
		BackgroundNew.loadBG(MM.getMapFileByID(curMap).bgID);
		CRes.outz("show ok");
		CCanvas.panel.hide();
		for (int i = 0; i < PM.p.Length; i++)
		{
			if (PM.p[i] != null)
			{
				PM.p[i].state = 0;
			}
		}
		if (currLevel != 7)
		{
			for (int j = 0; j < 8; j++)
			{
				CPlayer cPlayer = PM.p[j];
				if (cPlayer != null && cPlayer.IDDB != -1)
				{
					cPlayer.isAngry = false;
				}
			}
		}
		initPosPlayers();
		for (int k = 0; k < 8; k++)
		{
			CPlayer cPlayer2 = PM.p[k];
			if (cPlayer2 != null && cPlayer2.IDDB != -1)
			{
				cPlayer2.currAngle = (cPlayer2.lastAngle = (cPlayer2.pAngle = 0));
			}
		}
		base.show();
		for (int l = 0; l < PM.p2.Length; l++)
		{
			if (PM.p2[l] != null)
			{
				PM.p2[l] = null;
			}
		}
		if (GameScrRPG.map != null)
		{
			GameScrRPG.map.unload();
		}
		if (GameScrRPG.mapItem != null)
		{
			GameScrRPG.mapItem.unload();
		}
		GameScrRPG.vNpc.removeAllElements();
		SmallImage.unload();
		MenuScr.gI().unload();
	}

	public static void paintEachItem(mGraphics g, int iItem, int x, int y)
	{
	}

	public void paintItem(mGraphics g, int x, int y)
	{
		int num = ((curUsing != 0 || isChooseItem) ? (-1) : selectedItem);
		for (int i = 0; i < CPlayer.arrItemBalo.Length; i++)
		{
			g.drawImage(GameScr.box1, x + i * 30, y, 3, false);
			if (CPlayer.arrItemBalo[i] != null)
			{
				g.setClip(x + i * 30 - 11, y - 11, 22, 22);
				if (CPlayer.arrItemBalo[i].template.type == 5)
				{
					SmallImage.drawSmallImage(g, CPlayer.idItemBalo[i], x + i * 30 + 11, y, 0, mGraphics.VCENTER | mGraphics.RIGHT, true);
				}
				else
				{
					SmallImage.drawSmallImage(g, CPlayer.idItemBalo[i], x + i * 30, y, 0, 3, true);
				}
				g.setClip(0, 0, CCanvas.w, CCanvas.h);
			}
		}
		if (curUsing == 1 && !isChooseGun)
		{
			g.setColor((CCanvas.gameTick % 10 <= 5) ? 16711680 : 16776960);
			g.fillRect(x + Item.iWitdh * 18 - 1, y + 9, 26, 18, false);
		}
	}

	public static void paintPassiveItem_NumUse(int num, int x, int y, mGraphics g)
	{
		mFont.smallFontYellow.drawString(g, num + string.Empty, x, y, 2);
	}

	public string getPlayerNameFromID(int id)
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB == id)
			{
				return cPlayer.name;
			}
		}
		return string.Empty;
	}

	public CPlayer getPlayerFromID(int id)
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer.IDDB == id)
			{
				return cPlayer;
			}
		}
		return null;
	}

	public void setPlayers(int ownerID, int money, MyVector playerInfos)
	{
		this.money = money;
		setOwner(ownerID);
		for (int i = 0; i < playerInfos.size(); i++)
		{
			if (((PlayerInfo)playerInfos.elementAt(i)).IDDB == MyMidlet.myInfo.IDDB)
			{
				GameScr.myIndex = (sbyte)i;
				break;
			}
		}
	}

	public void setOwner(int newOwner)
	{
		ownerID = newOwner;
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB == ownerID)
			{
				cPlayer.isReady = true;
			}
		}
	}

	public void showChat(int fromID, string text, int Interval)
	{
		int numberByID = getNumberByID(fromID);
		if (numberByID != -1)
		{
			ChatPopup chatPopup = new ChatPopup();
			chatPopup.show(Interval, x_pos[numberByID], y_pos[numberByID] - 40, text);
		}
	}

	public void stopGame()
	{
		isGameEnd = true;
	}

	public void playerLeave(int leaveID)
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB == leaveID)
			{
				cPlayer.IDDB = -1;
				cPlayer.name = string.Empty;
				cPlayer.isReady = false;
			}
		}
	}

	public void resetReady()
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null)
			{
				if (cPlayer.IDDB == ownerID)
				{
					cPlayer.isReady = true;
				}
				else
				{
					cPlayer.isReady = false;
				}
			}
		}
	}

	public void setReady(int id, bool isReady)
	{
		for (int i = 0; i < PM.p.Length; i++)
		{
			CPlayer cPlayer = PM.p[i];
			if (cPlayer != null && cPlayer.IDDB == id)
			{
				cPlayer.isReady = isReady;
			}
		}
	}

	public void setMoney(int money)
	{
		this.money = money;
		for (int i = 0; i < PM.p.Length; i++)
		{
			if (PM.p[i] != null)
			{
				PM.p[i].isReady = false;
			}
		}
	}

	public void addInfo(string info)
	{
	}

	public static bool keyForPlay(int keyCode)
	{
		return keyCode == -1 || keyCode == -2 || keyCode == -3 || keyCode == -4 || keyCode == -5 || keyCode == -6 || keyCode == -7;
	}

	public override void keyPressed(int keyCode)
	{
		if (!CCanvas.menu.showMenu && !CCanvas.panel.isShow && keyCode != 10 && CCanvas.currentDialog == null && !keyForPlay(keyCode))
		{
			CCanvas.inputDlg.setInfo("Chat", new Command(L.ok(), this, 1, null), new Command(L.close(), this, 2, null), TField.INPUT_TYPE_ANY);
			CCanvas.inputDlg.show();
			CCanvas.inputDlg.tfInput.keyPressed(keyCode);
			CCanvas.inputDlg.tfInput.doChangeToTextBox(false);
		}
		base.keyPressed(keyCode);
	}

	public void perform(int idAction, object p)
	{
		if (idAction == 1)
		{
			doChat();
		}
		if (idAction == 2)
		{
			CCanvas.endDlg();
		}
		if (idAction == 1001)
		{
			doShowMenuPrepare();
		}
		if (idAction == 1002)
		{
			doChat();
		}
		if (idAction == 1003)
		{
			doChangeTeam();
		}
		if (idAction == 1004)
		{
			doAddFriend();
		}
		if (idAction == 1005)
		{
			doSelectMap();
		}
		if (idAction == 1006)
		{
			doInvite();
		}
		if (idAction == 1007)
		{
			doReady();
		}
		if (idAction == 1008)
		{
			doStartGame();
		}
		if (idAction == 1009)
		{
			CPlayer cPlayer = PM.p[GameScr.myIndex];
			if (cPlayer.isReady && cPlayer.IDDB != ownerID)
			{
				CCanvas.startOKDlg(L.cannotLeave());
				return;
			}
			doLeaveBoard();
		}
		if (idAction == 1010)
		{
			isTouchItem = false;
		}
		if (idAction == 1011)
		{
			doShowFriend();
		}
		if (idAction == 1012)
		{
			CCanvas.panel.setTypeMail();
			CCanvas.panel.show();
		}
		if (idAction == 1013)
		{
			if (CCanvas.w > 2 * Panel.WIDTH_PANEL)
			{
				CCanvas.panel.setTypeInventory();
				CCanvas.panel.show();
				CCanvas.panel2 = new Panel();
				CCanvas.panel2.setTypeMyEquip();
				CCanvas.panel2.show();
			}
			else
			{
				CCanvas.panel.setTypeInventoryWithMyEquip();
				CCanvas.panel.show();
			}
		}
		if (idAction == 1014)
		{
			if (curMap > 0)
			{
				curMap--;
			}
			else
			{
				curMap = (sbyte)(numMap - 1);
			}
		}
		if (idAction == 1015)
		{
			if (isChooseItem)
			{
				isChooseItem = false;
			}
			else if (isChooseGun)
			{
				isChooseGun = false;
			}
			else if (curMap < numMap - 1)
			{
				curMap++;
			}
			else
			{
				curMap = 0;
			}
		}
		if (idAction == 1016)
		{
			CPlayer cPlayer2 = (CPlayer)p;
			GameService.gI().friend(1, cPlayer2.IDDB);
			InfoDlg.showWait();
		}
		if (idAction == 1017)
		{
			CPlayer cPlayer3 = (CPlayer)p;
			if (cPlayer3.isReady)
			{
				CCanvas.startOKDlg(L.cannotKick());
				return;
			}
			GameService.gI().kick(cPlayer3.IDDB);
		}
		if (idAction == 1018)
		{
			try
			{
				int num = int.Parse(CCanvas.inputDlg.tfInput.getText());
				if (num < 0)
				{
					return;
				}
				CCanvas.endDlg();
				if (num > MyMidlet.myInfo.xu)
				{
					CCanvas.startOKDlg(L.onlyHave() + MyMidlet.myInfo.xu);
					return;
				}
				GameService.gI().setMoney(num);
				for (int i = 0; i < PM.p.Length; i++)
				{
					PM.p[i].isReady = false;
				}
			}
			catch (Exception)
			{
			}
		}
		if (idAction == 1019)
		{
			CCanvas.endDlg();
		}
		if (idAction == 1020)
		{
			GameService.gI().setPassword(CCanvas.inputDlg.tfInput.getText());
			CCanvas.startOKDlg(L.setPassed());
		}
		if (idAction == 1021)
		{
			if (CCanvas.inputDlg.tfInput.getText().Equals(string.Empty))
			{
				return;
			}
			string text = CCanvas.inputDlg.tfInput.getText();
			GameService.gI().setBoardName(text);
			Panel.boardName = text;
			CCanvas.startOKDlg(L.setBoardNamefinish());
		}
		if (idAction == 1022)
		{
			GameService.gI().setMaxPlayer(8);
		}
		if (idAction == 1023)
		{
			GameService.gI().setMaxPlayer(6);
		}
		if (idAction == 1024)
		{
			GameService.gI().setMaxPlayer(4);
		}
		if (idAction == 1025)
		{
			GameService.gI().setMaxPlayer(2);
		}
		if (idAction == 1026)
		{
			doSettingMoney();
		}
		if (idAction == 1028)
		{
			doSettingPassword();
		}
		if (idAction == 1029)
		{
			doSetMaxPlayer();
		}
		if (idAction == 1030)
		{
			doSettingBoardName();
		}
		if (idAction == 1027)
		{
			MyVector myVector = new MyVector("action 1027");
			myVector.addElement(new Command(L.setMoney(), this, 1026, null));
			myVector.addElement(new Command(L.setPass(), this, 1028, null));
			myVector.addElement(new Command(L.setPerson(), this, 1029, null));
			CCanvas.menu.startAt(myVector, 0);
		}
		if (idAction == 1031)
		{
			doKick();
		}
		if (idAction == 1032)
		{
			doViewMessage();
		}
		if (idAction == 1033)
		{
			GameService.gI().charactorUpgrade();
		}
		if (idAction == 2000)
		{
			CCanvas.panel.setTypeMail();
			CCanvas.panel.show();
		}
		if (idAction == 2001)
		{
			GameService.gI().setMoney(100);
		}
		if (idAction == 2002)
		{
			GameService.gI().setMoney(200);
		}
		if (idAction == 2003)
		{
			GameService.gI().setMoney(500);
		}
		if (idAction == 2004)
		{
			GameService.gI().setMoney(1000);
		}
		if (idAction == 2005)
		{
			GameService.gI().setMoney(1000);
		}
		if (idAction == 2006)
		{
			GameService.gI().setMoney(2000);
		}
		if (idAction == 2007)
		{
			GameService.gI().setMoney(5000);
		}
		if (idAction == 2008)
		{
			GameService.gI().setMoney(10000);
		}
		if (idAction == 2009)
		{
			GameService.gI().setMoney(10000);
		}
		if (idAction == 2010)
		{
			GameService.gI().setMoney(20000);
		}
		if (idAction == 2011)
		{
			GameService.gI().setMoney(50000);
		}
	}
}
