public roomInfo BuildingIntoRoom(Building thisBuilding) { roomInfo ThisRoom = new roomInfo(); ThisRoom.RoomName = thisBuilding.BuildingName; ThisRoom.Description = thisBuilding.Description; ThisRoom.AltDescription = thisBuilding.AltDescription; ThisRoom.CanMove = thisBuilding.CanMove; ThisRoom.LockedIn = thisBuilding.LockedIn; ThisRoom.SuicideAction = thisBuilding.SuicideAction; //ThisRoom.ImagePath = thisBuilding.ImagePath; ThisRoom.Events = new List<Event>(); ThisRoom.Civilians = new List<CivilianProfile>(); ThisRoom.items = new List<itemInfo>(); ThisRoom.Enemy = new List<EnemyProfile>(); DataTypes dt = new DataTypes(); if (thisBuilding.Events != null) foreach (Event newEvent in thisBuilding.Events) { ThisRoom.Events.Add(dt.CloneEvent(newEvent)); } if (thisBuilding.Civilians != null) foreach (CivilianProfile NPC in thisBuilding.Civilians) { ThisRoom.Civilians.Add(dt.CloneNPC(NPC)); } if (thisBuilding.items != null) foreach (itemInfo NewItem in thisBuilding.items) { ThisRoom.items.Add(dt.CloneItem(NewItem)); } if (thisBuilding.Enemy != null) foreach (EnemyProfile Enemy in thisBuilding.Enemy) { ThisRoom.Enemy.Add(dt.CloneEnemy(Enemy)); } return ThisRoom; }
public frmRoomEditor(DataTypes.roomInfo thisRoom, int floors, bool Building) { InitializeComponent(); ChangeMade = false; isBuilding = Building; Room = thisRoom; FloorCount = floors; PopulateFields(); //DrawEnvironment(); }
public static void SaveWorld() { if (Player.InBuilding == true) { DataTypes dt = new DataTypes(); ThisFloor.CurrentFloor[Player.CurrentPos[0], Player.CurrentPos[1]].Building = dt.RoomIntoBuilding(CurrentRoom); } else ThisFloor.CurrentFloor[Player.CurrentPos[0], Player.CurrentPos[1]] = CurrentRoom; world[Player.CurrentPos[2]] = ThisFloor; WorldState.WorldState = world; }
public static Building LeaveBuilding(roomInfo thisRoom) { Building thisBuilding = new Building(); LoDConsole.WriteLine("Leaving " + thisRoom.RoomName); //Thread.Sleep(1000); DataTypes dt = new DataTypes(); thisBuilding = dt.RoomIntoBuilding(thisRoom); Player.InBuilding = false; return thisBuilding; }
public static roomInfo GoIntoBuilding(Building thisBuilding) { LoDConsole.WriteLine("Entering " + thisBuilding.BuildingName); //Thread.Sleep(1000); DataTypes dt = new DataTypes(); roomInfo ThisRoom = new roomInfo(); ThisRoom = dt.BuildingIntoRoom(thisBuilding); Player.InBuilding = true; return ThisRoom; }
public static roomInfo GetRoomInfo(int[] UserPos) { //SaveWorld(); roomInfo ThisRoom = new roomInfo(); //ThisFloor = world[UserPos[2]]; ThisFloor = world[UserPos[2]]; DataTypes dt = new DataTypes(); if (Player.InBuilding) ThisRoom = dt.BuildingIntoRoom(ThisFloor.CurrentFloor[UserPos[0], UserPos[1]].Building); else ThisRoom = ThisFloor.CurrentFloor[UserPos[0], UserPos[1]]; return (ThisRoom); }
public static Event EventAction(Event thisEvent) { if (thisEvent.Triggered == false) { thisEvent.Triggered = true; if (thisEvent.Action.ToLower() == "unlockroom") //unlock { if (thisEvent.Coodinates != null) { ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].CanMove = true; } } else if (thisEvent.Action.ToLower() == "lockroom") //lock { if (thisEvent.Coodinates != null) { ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].CanMove = false; } } else if (thisEvent.Action.ToLower() == "unlockbuilding") //unlock { if (thisEvent.Coodinates != null) { ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building.CanMove = true; } } else if (thisEvent.Action.ToLower() == "lockbuilding") //lock { if (thisEvent.Coodinates != null) { ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building.CanMove = false; } } else if (thisEvent.Action.ToLower() == "lockin") { if (!CurrentRoom.LockedIn) CurrentRoom.LockedIn = true; else CurrentRoom.LockedIn = false; SaveWorld(); } else if (thisEvent.Action.ToLower() == "kill all enemies") //kill all { //do some other things if (CurrentRoom.Enemy != null) { if (CurrentRoom.items == null) CurrentRoom.items = new List<itemInfo>(); foreach (EnemyProfile ThisEnemy in CurrentRoom.Enemy) { CurrentRoom.items.Add(ThisEnemy.Weapon); itemInfo newItem = new itemInfo(); newItem.Name = string.Concat(ThisEnemy.name, "'s body"); newItem.Class = "Object"; newItem.Examine = string.Concat("The slashed and torn body of enemy ", ThisEnemy.name); newItem.CanPickUp = false; newItem.InteractionName = new List<string>(); newItem.InteractionName.Add("body"); newItem.InteractionName.Add("corpse"); newItem.InteractionName.Add("enemy"); newItem.InteractionName.Add(string.Concat(ThisEnemy.name, "'s body")); newItem.InteractionName.Add(ThisEnemy.name); CurrentRoom.items.Add(newItem); GainXPfromEnemy(ThisEnemy); } EventTrigger("killallenemies"); CurrentRoom.Enemy.Clear(); //Overwrite all enemies } } else if (thisEvent.Action.ToLower() == "remove all npcs") //remove all npcs { CurrentRoom.Civilians.Clear(); SaveWorld(); } else if (thisEvent.Action.ToLower() == "remove all items") //remove all npcs { CurrentRoom.items.Clear(); SaveWorld(); } else if (thisEvent.Action.ToLower() == "change description" || thisEvent.Action.ToLower() == "custom description") //change description { if (thisEvent.Coodinates[2] != Player.CurrentPos[2]) //If change is not on this floor { Floor TempFloor; TempFloor = world[thisEvent.Coodinates[2]]; if (!thisEvent.ApplyToBuilding) { if (thisEvent.Action.ToLower() == "change description") TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].AltDescription; else TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = thisEvent.EventValue; } else if (thisEvent.ApplyToBuilding == true && TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building.BuildingName != null) { roomInfo TempRoom = new roomInfo(); DataTypes dt = new DataTypes(); TempRoom = dt.BuildingIntoRoom(TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building); if (thisEvent.Action.ToLower() == "change description") TempRoom.Description = TempRoom.AltDescription; else TempRoom.Description = thisEvent.EventValue; TempFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building = dt.RoomIntoBuilding(TempRoom); } world[thisEvent.Coodinates[2]] = TempFloor; } else if (Player.CurrentPos[0] != thisEvent.Coodinates[0] || Player.CurrentPos[1] != thisEvent.Coodinates[1]) //Change is not in this cell { if (!thisEvent.ApplyToBuilding) { if (thisEvent.Action.ToLower() == "change description") ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].AltDescription; else ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = thisEvent.EventValue; } else if (thisEvent.ApplyToBuilding == true && ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building.BuildingName != null) { roomInfo TempRoom = new roomInfo(); DataTypes dt = new DataTypes(); TempRoom = dt.BuildingIntoRoom(ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building); if (thisEvent.Action.ToLower() == "change description") TempRoom.Description = TempRoom.AltDescription; else TempRoom.Description = thisEvent.EventValue; ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building = dt.RoomIntoBuilding(TempRoom); } } else { if ((!thisEvent.ApplyToBuilding && !Player.InBuilding) || (thisEvent.ApplyToBuilding && Player.InBuilding)) //Applying to the non-building area the player is in { if (thisEvent.Action.ToLower() == "change description") CurrentRoom.Description = CurrentRoom.AltDescription; else CurrentRoom.Description = thisEvent.EventValue; } else if (!thisEvent.ApplyToBuilding && Player.InBuilding == true) //Applies to current cell but player is in building { if (thisEvent.Action.ToLower() == "change description") ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].AltDescription; else ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Description = thisEvent.EventValue; } else if (thisEvent.ApplyToBuilding == true && Player.InBuilding == false) //Applies to building in current Cell { roomInfo TempRoom = new roomInfo(); DataTypes dt = new DataTypes(); TempRoom = dt.BuildingIntoRoom(ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building); if (thisEvent.Action.ToLower() == "change description") TempRoom.Description = TempRoom.AltDescription; else TempRoom.Description = thisEvent.EventValue; ThisFloor.CurrentFloor[thisEvent.Coodinates[0], thisEvent.Coodinates[1]].Building = dt.RoomIntoBuilding(TempRoom); } } SaveWorld(); CurrentRoom = GetRoomInfo(Player.CurrentPos); //retreive new room info } else if (thisEvent.Action.ToLower() == "change location") //change floor { bool newFloor = false; if (thisEvent.Coodinates[2] != Player.CurrentPos[2]) newFloor = true; //If the player is changing floors //ThisEvent will remain bool untriggered as will allow multiple re-use //Thread.Sleep(5000); world[Player.CurrentPos[2]] = ThisFloor; //save floor to list. Player.CurrentPos[0] = thisEvent.Coodinates[0]; Player.CurrentPos[1] = thisEvent.Coodinates[1]; //set players position to start of new room Player.CurrentPos[2] = thisEvent.Coodinates[2]; ThisFloor = world[Player.CurrentPos[2]]; //retreive new floor if (!thisEvent.ApplyToBuilding) Player.InBuilding = false; else Player.InBuilding = true; CurrentRoom = GetRoomInfo(Player.CurrentPos); //retreive new room info //else if (!string.IsNullOrEmpty(ThisFloor.CurrentFloor[Player.CurrentPos[0], Player.CurrentPos[1]].Building.BuildingName)) //move player into building. //{ // DataTypes dt = new DataTypes(); // CurrentRoom = dt.BuildingIntoRoom(ThisFloor.CurrentFloor[Player.CurrentPos[0],Player.CurrentPos[1]].Building); //} LoDConsole.Clear(); //clear the screen LoDConsole.WriteLine(WordWrap(CurrentRoom.Description)); if (newFloor == true && ThisFloor.FloorSong != null && File.Exists(ThisFloor.FloorSong)) { MusicPlayer.SoundLocation = ThisFloor.FloorSong; Music("Start"); } } else if (thisEvent.Action.ToLower() == "change objective") { Player.Objective = thisEvent.EventValue; LoDConsole.WriteLine("\nYour current objective has changed."); } /* else if (thisEvent.Action.ToLower() == "custom description") { CurrentRoom.Description = thisEvent.EventValue; SaveWorld(); } */ else if (thisEvent.Action.ToLower() == "output text") { LoDConsole.WriteLine(""); LoDConsole.WriteLine(WordWrap(thisEvent.EventValue)); } else if (thisEvent.Action == "spawnItems") { if (CurrentRoom.items == null) CurrentRoom.items = new List<itemInfo>(); foreach (itemInfo Item in thisEvent.Items) { CurrentRoom.items.Add(Item); } SaveWorld(); } else if (thisEvent.Action == "spawnNPC") { if (CurrentRoom.Civilians == null) CurrentRoom.Civilians = new List<CivilianProfile>(); foreach (CivilianProfile NPC in thisEvent.NPCs) { CurrentRoom.Civilians.Add(NPC); } SaveWorld(); } else if (thisEvent.Action == "spawnEnemy") { if (CurrentRoom.Enemy == null) CurrentRoom.Enemy = new List<EnemyProfile>(); foreach (EnemyProfile Enemy in thisEvent.Enemies) { CurrentRoom.Enemy.Add(Enemy); } SaveWorld(); } else if (thisEvent.Action == "giveXP") { int n; if (int.TryParse(thisEvent.EventValue, out n)) Player.XP = Player.XP + n; } else if (thisEvent.Action == "EndCredits") { Console.ReadKey(); EndCredits(); } else thisEvent.Triggered = false; //If an event is re-usable allow it to be triggered again if (thisEvent.Triggered == true && thisEvent.ReUsable == true) thisEvent.Triggered = false; if (thisEvent.Coodinates != null && thisEvent.Coodinates[0] == Player.CurrentPos[0] && thisEvent.Coodinates[1] == Player.CurrentPos[1] && thisEvent.Coodinates[2] == Player.CurrentPos[2]) CurrentRoom = GetRoomInfo(Player.CurrentPos); } return thisEvent; }
private void txtBuilding_MouseDoubleClick(object sender, MouseEventArgs e) { DataTypes dt = new DataTypes(); DataTypes.Building Building = new DataTypes.Building(); if (Room.Building.BuildingName != null) Building = Room.Building; frmRoomEditor NewForm = new frmRoomEditor(dt.BuildingIntoRoom(Building),FloorCount,true); NewForm.ShowDialog(); if (NewForm.ChangeMade == true) { Building = dt.RoomIntoBuilding(NewForm.Room); Room.Building = Building; txtBuilding.Text = Building.BuildingName; } }
private void cmdCloneNPC_Click(object sender, EventArgs e) { if (lstNPCs.SelectedIndex > -1) { DataTypes dt = new DataTypes(); Room.Civilians.Add(dt.CloneNPC(Room.Civilians[lstNPCs.SelectedIndex])); GetAllNPCs(); } else MessageBox.Show("Select an NPC to Clone"); }
private void cmdCloneItem_Click(object sender, EventArgs e) { if (lstItems.SelectedIndex > -1) { DataTypes dt = new DataTypes(); Room.items.Add(dt.CloneItem(Room.items[lstItems.SelectedIndex])); GetAllItems(); } else MessageBox.Show("Select an item to clone"); }
private void cmdCloneEvent_Click(object sender, EventArgs e) { if (lstEvents.SelectedIndex > -1) { DataTypes dt = new DataTypes(); Room.Events.Add(dt.CloneEvent(Room.Events[lstEvents.SelectedIndex])); GetAllEvents(); } else MessageBox.Show("Select an Event to Clone"); }
private void cmdCloneEnemy_Click(object sender, EventArgs e) { if (lstEnemies.SelectedIndex > -1) { DataTypes dt = new DataTypes(); Room.Enemy.Add(dt.CloneEnemy(Room.Enemy[lstEnemies.SelectedIndex])); GetAllEnemies(); } else MessageBox.Show("Select an enemy to clone"); }