Files
spacetrader/source/SpaceTraderSource201/Form_ViewShip.cs
T

314 lines
11 KiB
C#

/*******************************************************************************
*
* Space Trader for Windows 2.00
*
* Copyright (C) 2005 Jay French, All Rights Reserved
*
* Additional coding by David Pierron
* Original coding by Pieter Spronck, Sam Anderson, Samuel Goldstein, Matt Lee
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* If you'd like a copy of the GNU General Public License, go to
* http://www.gnu.org/copyleft/gpl.html.
*
* You can contact the author at spacetrader@frenchfryz.com
*
******************************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Fryz.Apps.SpaceTrader
{
public class FormViewShip : System.Windows.Forms.Form
{
#region Control Declarations
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.Label lblTypeLabel;
private System.Windows.Forms.Label lblType;
private System.Windows.Forms.GroupBox boxSpecialCargo;
private System.Windows.Forms.Label lblSpecialCargo;
private System.Windows.Forms.Label lblEquipLabel;
private System.Windows.Forms.Label lblEquip;
private System.ComponentModel.Container components = null;
#endregion
#region Member Declarations
private Game game = Game.CurrentGame;
private Ship ship = Game.CurrentGame.Commander.Ship;
#endregion
#region Methods
public FormViewShip()
{
InitializeComponent();
lblType.Text = ship.Name;
lblEquipLabel.Text = "";
lblEquip.Text = "";
DisplayEquipment();
DisplaySpecialCargo();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
components.Dispose();
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lblTypeLabel = new System.Windows.Forms.Label();
this.lblType = new System.Windows.Forms.Label();
this.btnClose = new System.Windows.Forms.Button();
this.lblEquipLabel = new System.Windows.Forms.Label();
this.lblEquip = new System.Windows.Forms.Label();
this.boxSpecialCargo = new System.Windows.Forms.GroupBox();
this.lblSpecialCargo = new System.Windows.Forms.Label();
this.boxSpecialCargo.SuspendLayout();
this.SuspendLayout();
//
// lblTypeLabel
//
this.lblTypeLabel.AutoSize = true;
this.lblTypeLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblTypeLabel.Location = new System.Drawing.Point(8, 8);
this.lblTypeLabel.Name = "lblTypeLabel";
this.lblTypeLabel.Size = new System.Drawing.Size(34, 13);
this.lblTypeLabel.TabIndex = 2;
this.lblTypeLabel.Text = "Type:";
//
// lblType
//
this.lblType.Location = new System.Drawing.Point(80, 8);
this.lblType.Name = "lblType";
this.lblType.Size = new System.Drawing.Size(100, 13);
this.lblType.TabIndex = 4;
this.lblType.Text = "Grasshopper";
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Location = new System.Drawing.Point(-32, -32);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(32, 32);
this.btnClose.TabIndex = 32;
this.btnClose.TabStop = false;
this.btnClose.Text = "X";
//
// lblEquipLabel
//
this.lblEquipLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblEquipLabel.Location = new System.Drawing.Point(8, 34);
this.lblEquipLabel.Name = "lblEquipLabel";
this.lblEquipLabel.Size = new System.Drawing.Size(64, 176);
this.lblEquipLabel.TabIndex = 43;
this.lblEquipLabel.Text = "Hull:\r\n\r\nEquipment:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nUnfilled:";
//
// lblEquip
//
this.lblEquip.Location = new System.Drawing.Point(80, 34);
this.lblEquip.Name = "lblEquip";
this.lblEquip.Size = new System.Drawing.Size(120, 176);
this.lblEquip.TabIndex = 44;
this.lblEquip.Text = "Hardened\r\n\r\n1 Military Laser\r\n1 Morgan\'s Laser\r\n1 Energy Shield\r\n1 Reflective Shi" +
"eld\r\n1 Lightning Shield\r\nNavigating System\r\nAuto-Repair System\r\n10 Extra Cargo Bays\r\nAn Escape Pod\r\n" +
"\r\n1 weapon slot\r\n1 gadget slot";
//
// boxSpecialCargo
//
this.boxSpecialCargo.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lblSpecialCargo});
this.boxSpecialCargo.Location = new System.Drawing.Point(192, 8);
this.boxSpecialCargo.Name = "boxSpecialCargo";
this.boxSpecialCargo.Size = new System.Drawing.Size(200, 204);
this.boxSpecialCargo.TabIndex = 64;
this.boxSpecialCargo.TabStop = false;
this.boxSpecialCargo.Text = "Special Cargo";
//
// lblSpecialCargo
//
this.lblSpecialCargo.Location = new System.Drawing.Point(8, 16);
this.lblSpecialCargo.Name = "lblSpecialCargo";
this.lblSpecialCargo.Size = new System.Drawing.Size(190, 176);
this.lblSpecialCargo.TabIndex = 0;
this.lblSpecialCargo.Text = "No special items.";
//
// FormViewShip
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.btnClose;
this.ClientSize = new System.Drawing.Size(402, 219);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.boxSpecialCargo,
this.lblEquip,
this.lblEquipLabel,
this.btnClose,
this.lblTypeLabel,
this.lblType});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormViewShip";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Current Ship";
this.boxSpecialCargo.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private void DisplayEquipment()
{
if (game.QuestStatusScarab == SpecialEvent.StatusScarabDone)
{
lblEquipLabel.Text += "Hull:" + Environment.NewLine + Environment.NewLine;
lblEquip.Text += "Hardened" + Environment.NewLine + Environment.NewLine;
}
bool equipPrinted = false;
for (int i = 0; i < Consts.Weapons.Length; i++)
{
int count = 0;
for (int j = 0; j < ship.Weapons.Length; j++)
{
if (ship.Weapons[j] != null && ship.Weapons[j].Type == Consts.Weapons[i].Type)
count++;
}
if (count > 0)
{
lblEquipLabel.Text += equipPrinted ? Environment.NewLine : "Equipment:" + Environment.NewLine;
lblEquip.Text += Functions.Multiples(count, Consts.Weapons[i].Name) + Environment.NewLine;
equipPrinted = true;
}
}
for (int i = 0; i < Consts.Shields.Length; i++)
{
int count = 0;
for (int j = 0; j < ship.Shields.Length; j++)
{
if (ship.Shields[j] != null && ship.Shields[j].Type == Consts.Shields[i].Type)
count++;
}
if (count > 0)
{
lblEquipLabel.Text += equipPrinted ? Environment.NewLine : "Equipment:" + Environment.NewLine;
lblEquip.Text += Functions.Multiples(count, Consts.Shields[i].Name) + Environment.NewLine;
equipPrinted = true;
}
}
for (int i = 0; i < Consts.Gadgets.Length; i++)
{
int count = 0;
for (int j = 0; j < ship.Gadgets.Length; j++)
{
if (ship.Gadgets[j] != null && ship.Gadgets[j].Type == Consts.Gadgets[i].Type)
count++;
}
if (count > 0)
{
lblEquipLabel.Text += equipPrinted ? Environment.NewLine : "Equipment:" + Environment.NewLine;
if (i == (int)GadgetType.ExtraCargoBays || i == (int)GadgetType.HiddenCargoBays)
{
count *= 5;
lblEquip.Text += Functions.FormatNumber(count) + Consts.Gadgets[i].Name.Substring(1) + Environment.NewLine;
}
else
lblEquip.Text += Functions.Multiples(count, Consts.Gadgets[i].Name) + Environment.NewLine;
equipPrinted = true;
}
}
if (ship.EscapePod)
{
lblEquipLabel.Text += equipPrinted ? Environment.NewLine : "Equipment:" + Environment.NewLine;
lblEquip.Text += "1 " + Strings.ShipInfoEscapePod + Environment.NewLine;
equipPrinted = true;
}
if (ship.FreeSlots > 0)
{
lblEquipLabel.Text += (equipPrinted ? Environment.NewLine : "") + "Unfilled:";
lblEquip.Text += (equipPrinted ? Environment.NewLine : "");
if (ship.FreeSlotsWeapon > 0)
lblEquip.Text += Functions.Multiples(ship.FreeSlotsWeapon, "weapon slot") + Environment.NewLine;
if (ship.FreeSlotsShield > 0)
lblEquip.Text += Functions.Multiples(ship.FreeSlotsShield, "shield slot") + Environment.NewLine;
if (ship.FreeSlotsGadget > 0)
lblEquip.Text += Functions.Multiples(ship.FreeSlotsGadget, "gadget slot") + Environment.NewLine;
}
}
private void DisplaySpecialCargo()
{
ArrayList specialCargo = new ArrayList(12);
if (ship.Tribbles > 0)
{
if (ship.Tribbles == Consts.MaxTribbles)
specialCargo.Add(Strings.SpecialCargoTribblesInfest);
else
specialCargo.Add(Functions.Multiples(ship.Tribbles, Strings.SpecialCargoTribblesCute) + ".");
}
if (game.QuestStatusJapori == SpecialEvent.StatusJaporiInTransit)
specialCargo.Add(Strings.SpecialCargoJapori);
if (ship.ArtifactOnBoard)
specialCargo.Add(Strings.SpecialCargoArtifact);
if (game.QuestStatusJarek == SpecialEvent.StatusJarekDone)
specialCargo.Add(Strings.SpecialCargoJarek);
if (ship.ReactorOnBoard)
{
specialCargo.Add(Strings.SpecialCargoReactor);
specialCargo.Add(Functions.Multiples(10 - ((game.QuestStatusReactor - 1) / 2), "bay") +
Strings.SpecialCargoReactorBays);
}
if (ship.SculptureOnBoard)
specialCargo.Add(Strings.SpecialCargoSculpture);
if (game.CanSuperWarp)
specialCargo.Add(Strings.SpecialCargoExperiment);
lblSpecialCargo.Text = specialCargo.Count == 0 ? Strings.SpecialCargoNone :
String.Join(Environment.NewLine + Environment.NewLine, Functions.ArrayListToStringArray(specialCargo));
}
#endregion
}
}