Ejemplo n.º 1
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			return m_Condition != null && GetCondition(trigObject) == false
					   ? new Rectangle2D()
					   : new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 2
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			gump.AddLabel(originX + GetX(trigObject), originY + GetY(trigObject), GetHue(trigObject), GetLabel(trigObject));

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 3
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			gump.X = GetX(trigObject);
			gump.Y = GetY(trigObject);
			gump.Closable = Closable;
			gump.Disposable = Disposable;
			gump.Dragable = Dragable;
			gump.Resizable = Resizable;

			gump.AddPage(0);

			foreach (UberGumpElement child in Children)
			{
				child.GenerateGump(trigObject, gump, gump.X, gump.Y);
			}

			return new Rectangle2D();
		}
Ejemplo n.º 4
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int x = originX + GetX(trigObject);
			int y = originY + GetY(trigObject);
			int width = GetWidth(trigObject);
			int height = GetHeight(trigObject);

			if (HTMLMath != null)
			{
				object toSend = HTMLMath.Calculate(trigObject);

				gump.AddHtml(x, y, width, height, toSend == null ? HTMLString : toSend.ToString(), Background, ScrollBar);
			}
			else
			{
				gump.AddHtml(x, y, width, height, HTMLString, Background, ScrollBar);
			}

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 5
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int backgroundID = GetBackgroundID(trigObject);
			int padding = GetPadding(trigObject);
			int x = originX + GetX(trigObject);
			int y = originY + GetY(trigObject);
			int width = GetWidth(trigObject);
			int height = GetHeight(trigObject);
			int verticalGap = GetVerticalGap(trigObject);

			if (backgroundID != 0)
			{
				gump.AddBackground(x, y, width, height, backgroundID);
			}

			x += padding;
			y += padding;

			foreach (UberGumpElement child in Children)
			{
				if (child is UberGumpList)
				{
					UberGumpList list = (UberGumpList)child;
					ArrayList actualList = list.GetListSource(trigObject);

					if (actualList != null)
					{
						string key = list.GetObjsVarName(trigObject);
						string functionName = list.GetLoopFunction(trigObject);

						foreach (object element in actualList)
						{
							trigObject.objs[key] = element;
							child.GenerateGump(trigObject, gump, x, y);
							y += child.GetHeight(trigObject) + verticalGap;

							// check the script to execute in between
							if (functionName == null)
							{
								continue;
							}

							RootNode scriptNode = trigObject.Script.ScriptRootNode;

							if (scriptNode != null)
							{
								foreach (UserDefinedFunctionNode node in
									scriptNode.UserDefinedFunctionNodes.Where(node => node.ScriptString == functionName))
								{
									node.Execute(trigObject);
									break;
								}
							}
						}
					}
				}
				else
				{
					child.GenerateGump(trigObject, gump, x, y);
					y += child.GetHeight(trigObject) + verticalGap;
				}
			}
			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 6
0
		// returns the width and height of the element
		public virtual Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			throw new NotImplementedException();
		}
Ejemplo n.º 7
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int backgroundID = GetBackgroundID(trigObject);
			int padding = GetPadding(trigObject);
			int x = originX + GetX(trigObject);
			int y = originY + GetY(trigObject);
			int width = GetWidth(trigObject);
			int height = GetHeight(trigObject);
			int horizontalGap = GetHorizontalGap(trigObject);

			if (backgroundID != 0)
			{
				gump.AddBackground(x, y, width, height, backgroundID);
			}

			x += padding;
			y += padding;

			foreach (UberGumpElement child in Children)
			{
				child.GenerateGump(trigObject, gump, x, y);
				x += child.GetWidth(trigObject) + horizontalGap;
			}

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 8
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int x = originX + GetX(trigObject);
			int y = originY + GetY(trigObject);

			gump.CurrentList = GetListSource(trigObject);

			string objName = GetObjsVarName(trigObject);
			ArrayList prevList = gump.CurrentList;
			object prevListObject = gump.CurrentListObject;

			gump.CurrentListObject = trigObject.objs.ContainsKey(objName) ? trigObject.objs[objName] : null;

			foreach (UberGumpElement child in Children)
			{
				child.GenerateGump(trigObject, gump, x, y);
			}

			gump.CurrentList = prevList;
			gump.CurrentListObject = prevListObject;

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 9
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			Mobile mob = GetMobile(trigObject);

			if (mob == null)
			{
				return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
			}

			var layers = new Item[NumLayers];

			foreach (Item item in mob.Items)
			{
				byte byteLayer = (byte)item.Layer;

				if (byteLayer < 0x19)
				{
					layers[LayerMapping[byteLayer]] = item;
				}
			}

			if (layers[2] != null && (layers[2].ItemID == 0x1411 || layers[2].ItemID == 0x141a)) // plate legs go over shoes
			{
				layers[3] = null; // remove shoe layer
			}

			int x = originX + GetX(trigObject);
			int y = originY + GetY(trigObject);
			int mobHue = mob.Hue & 0x0FFF;
			// somehow 0x8000 bit is added to indicate it is a skin hue... but this doesn't work as a gumpart hue... weird :P

			if (mobHue > 0)
			{
				mobHue = mobHue - 1;
				// for some reason gump hues skip hue = 1 (pitch black), so anything above 0 needs to be offset by one
			}

			if (mob.BodyValue == 400) // human male
			{
				gump.AddImage(x, y, 0xC, mobHue);
			}
			else if (mob.BodyValue == 401) // human male
			{
				gump.AddImage(x, y, 0xD, mobHue);
			}
			else if (mob.BodyValue == 605) // elf male
			{
				gump.AddImage(x, y, 0xE, mobHue);
			}
			else if (mob.BodyValue == 606) // elf female
			{
				gump.AddImage(x, y, 0xF, mobHue);
			}
			else if (mob.BodyValue == 183 || mob.BodyValue == 185) // savage male?
			{
				gump.AddImage(x, y, 0x79, mobHue);
			}
			else if (mob.BodyValue == 184 || mob.BodyValue == 186) // savage female?
			{
				gump.AddImage(x, y, 0x78, mobHue);
			}
			else if (mob.BodyValue == 666) // gargoyle male
			{
				gump.AddImage(x, y, 0x29A, mobHue);
			}
			else if (mob.BodyValue == 667) // gargoyle female
			{
				gump.AddImage(x, y, 0x299, mobHue);
			}
			else if (mob.BodyValue == 990) // lord british
			{
				gump.AddImage(x, y, 0x3DE, mobHue);
			}
			else if (mob.BodyValue == 991) // lord blackthorn
			{
				gump.AddImage(x, y, 0x3DF, mobHue);
			}
			else if (mob.BodyValue == 994) // dupre
			{
				gump.AddImage(x, y, 0xC732, mobHue);
			}
			else
			{
				return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
				// can't make a paperdoll
			}

			for (int i = 0; i < NumLayers; i++)
			{
				int mappedGumpID = 0;

				if (i == 13) // hair layer
				{
					PaperDollLookup.ItemIDtoGumpID.TryGetValue(mob.HairItemID, out mappedGumpID);

					if (mappedGumpID != 0)
					{
						if (mob.Female && HasFemaleOffset(mappedGumpID))
						{
							mappedGumpID += 10000; // female offset
						}

						gump.AddImage(x, y, mappedGumpID, mob.HairHue == 0 ? 0 : mob.HairHue - 1);
						// weird gump art hue offset (skips jet black)
					}

					PaperDollLookup.ItemIDtoGumpID.TryGetValue(mob.FacialHairItemID, out mappedGumpID);

					if (mappedGumpID != 0)
					{
						if (mob.Female && HasFemaleOffset(mappedGumpID))
						{
							mappedGumpID += 10000; // female offset
						}

						gump.AddImage(x, y, mappedGumpID, mob.FacialHairHue == 0 ? 0 : mob.FacialHairHue - 1);
						// weird gump art hue offset (skips jet black)
					}
				}
				else
				{
					if (layers[i] == null)
					{
						continue;
					}

					PaperDollLookup.ItemIDtoGumpID.TryGetValue(layers[i].ItemID, out mappedGumpID);

					if (mappedGumpID == 0)
					{
						continue; // not in the dictionary
					}

					if (mob.Female && HasFemaleOffset(mappedGumpID))
					{
						mappedGumpID += 10000; // female offset
					}

					gump.AddImage(x, y, mappedGumpID, layers[i].Hue == 0 ? 0 : layers[i].Hue - 1);
					// weird gump art hue offset (skips jet black)
				}
			}

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 10
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int randomButtonID = gump.GetRandomButtonID();
			int size = GetSize(trigObject);

			gump.ButtonMap.Add(randomButtonID, GetName(trigObject));

			if (size > -1)
			{
				gump.AddTextEntry(
					originX + GetX(trigObject),
					originY + GetY(trigObject),
					GetWidth(trigObject),
					GetHeight(trigObject),
					GetHue(trigObject),
					randomButtonID,
					GetDefault(trigObject),
					size);
			}
			else
			{
				gump.AddTextEntry(
					originX + GetX(trigObject),
					originY + GetY(trigObject),
					GetWidth(trigObject),
					GetHeight(trigObject),
					GetHue(trigObject),
					randomButtonID,
					GetDefault(trigObject));
			}

			if (gump.CurrentList != null && gump.CurrentListObject != null)
			{
				gump.AddListIDMapping(gump.CurrentList, gump.CurrentListObject, randomButtonID);
			}

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}
Ejemplo n.º 11
0
		public override Rectangle2D GenerateGump(TriggerObject trigObject, UberScriptGump gump, int originX, int originY)
		{
			if (m_Condition != null && GetCondition(trigObject) == false)
			{
				return new Rectangle2D();
			}

			int randomButtonID = gump.GetRandomButtonID();

			gump.ButtonMap.Add(randomButtonID, GetName(trigObject));
			gump.AddButton(
				originX + GetX(trigObject),
				originY + GetY(trigObject),
				GetNormalID(trigObject),
				GetPressedID(trigObject),
				randomButtonID,
				GumpButtonType.Reply,
				0);

			if (gump.CurrentList != null && gump.CurrentListObject != null)
			{
				gump.AddListIDMapping(gump.CurrentList, gump.CurrentListObject, randomButtonID);
			}

			return new Rectangle2D(GetX(trigObject), GetY(trigObject), GetWidth(trigObject), GetHeight(trigObject));
		}