/// <summary> /// Charge une matrice de régions /// </summary> /// <param name="dimensions">Dimensions de la scène</param> /// <param name="hotspots">Liste de hotspots</param> /// <param name="matrixPrecision"></param> /// <returns>Matrice d'octets</returns> public void CreateRegionMatrix(VO_Stage stage, System.Drawing.Size dimensions, List <VO_StageRegion> hotspots, int matrixPrecision) { if (!Directory.Exists(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes))) { Directory.CreateDirectory(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes)); } StreamWriter sw = new StreamWriter(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes) + stage.Id.ToString() + "_r"); byte[,] matrix = new byte[4096, 4096]; int height = dimensions.Height / matrixPrecision; int width = dimensions.Width / matrixPrecision; for (int y = 0; y <= height; y++) { for (int x = 0; x < width; x++) { matrix[x, y] = (byte)stage.Region; foreach (VO_StageRegion hotspot in hotspots) { if (FormsTools.PointInPolygon(new Point(x, y), ConvertPointsForMatrix(matrixPrecision, hotspot.Points))) { matrix[x, y] = (byte)ConvertTools.CastInt(hotspot.Ratio); } } sw.Write(GetValueFromByte(matrix[x, y])); } sw.Write("\r\n"); } sw.Close(); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); ddpMovements.SelectedIndexChanged += new EventHandler(ddpMovements_SelectedIndexChanged); List <VO_ListItem> list = FormsTools.GetMovementsList(); ddpMovements.Items.Clear(); ddpMovements.DisplayMember = "Title"; ddpMovements.ValueMember = "Id"; int i = 0; foreach (VO_ListItem item in list) { ddpMovements.Items.Add(item); if (item.Id == (int)Direction) { ddpMovements.SelectedItem = item; } i++; } ddpMovements.SelectedIndexChanged += new EventHandler(ddpMovements_SelectedIndexChanged); }
/// <summary> /// Charger les listes propres à CharacterDB /// </summary> private void LoadLists() { this.ddpStartingDirection.SelectedIndexChanged -= new System.EventHandler(this.ddpStartingDirection_SelectedIndexChanged); this.ddpCharacterTemplate.SelectedValueChanged -= new EventHandler(ddpCharacterTemplate_SelectedValueChanged); List <VO_Base> list = _Service.GetCharacterTemplateList(CurrentCharacter.Id); ddpCharacterTemplate.DataSource = list; ddpCharacterTemplate.DisplayMember = "Title"; ddpCharacterTemplate.ValueMember = "Id"; ddpCharacterTemplate.SelectedValue = CurrentCharacter.CharacterId; List <VO_ListItem> list2 = FormsTools.GetMovementsList(); ddpStartingDirection.DataSource = list2; ddpStartingDirection.DisplayMember = "Title"; ddpStartingDirection.ValueMember = "Id"; ddpStartingDirection.SelectedValue = (int)CurrentCharacter.StartPosition; if (ddpStartingDirection.SelectedValue == null) { CurrentCharacter.StartPosition = 0; ddpStartingDirection.SelectedValue = 0; } this.ddpStartingDirection.SelectedIndexChanged += new System.EventHandler(this.ddpStartingDirection_SelectedIndexChanged); this.ddpCharacterTemplate.SelectedValueChanged += new EventHandler(ddpCharacterTemplate_SelectedValueChanged); }
/// <summary> /// Méthode qui charge l'animation courante /// </summary> public void LoadCharacter(Guid guid) { Cursor.Current = Cursors.WaitCursor; //Suppression des eventhandler this.txtName.LostFocus -= new System.EventHandler(this.txtName_TextChanged); this.ddpSpeed.ValueChanged -= new System.EventHandler(this.ddpSpeed_ValueChanged); //Code de chargement CurrentCharacter = GameCore.Instance.GetCharacterById(guid); txtName.Text = CurrentCharacter.Title; ddpSpeed.Value = CurrentCharacter.Speed; AnimCharacter.ParentCharacter = CurrentCharacter.Id; ColorDialog.Color = FormsTools.GetGDIColorFromVOColor(CurrentCharacter.DialogColor); if (CurrentCharacter.Face != new Guid()) { AnimFace.LoadAnimation(CurrentCharacter.Face); AnimFace.Start(); } else { AnimFace.LoadAnimation(new Guid()); } if (CurrentCharacter.TalkingFace != new Guid()) { TalkingFace.LoadAnimation(CurrentCharacter.TalkingFace); TalkingFace.Start(); } else { TalkingFace.LoadAnimation(new Guid()); } LoadLists(); if (CurrentCharacter.StandingAnim != new Guid()) { AnimCharacter.UseCustomRow = true; AnimCharacter.Row = 2; AnimCharacter.LoadAnimation(CurrentCharacter.StandingAnim); AnimCharacter.Start(); } else { AnimCharacter.LoadAnimation(new Guid()); } this.txtName.LostFocus += new System.EventHandler(this.txtName_TextChanged); this.ddpSpeed.ValueChanged += new System.EventHandler(this.ddpSpeed_ValueChanged); grpAnimations.Visible = true; grpInformations.Visible = true; grpDialogs.Visible = true; Cursor.Current = DefaultCursor; }
/// <summary> /// Constructeur /// </summary> public CoordsManager() { InitializeComponent(); _Service = new CoordsService(); _Opacity = new ImageAttributes(); _TransparentFillBrush = FormsTools.GetMasksFillingColors()[0]; //Timer _FrequencyTimer = new Timer(); _FrequencyTimer.Tick += new EventHandler(CallBack_Frequency); _FrequencyTimer.Interval = 200; }
/// <summary> /// Constructeur principal /// </summary> public CharacterConditions() { InitializeComponent(); //Character speed ddpSpeed.DataSource = FormsTools.GetMovementsSpeedList(); ddpSpeed.DisplayMember = "Title"; ddpSpeed.ValueMember = "Id"; //Animation frequency ddpFrequency.DataSource = FormsTools.GetAnimationFrequencyList(); ddpFrequency.DisplayMember = "Title"; ddpFrequency.ValueMember = "Id"; }
/// <summary> /// Insére un message dans la gridview /// </summary> /// <param name="message">VO_Message</param> private void InsertMessage(VO_Message message) { DataGridViewRow row = new DataGridViewRow(); //Id DataGridViewTextBoxCell cellId = new DataGridViewTextBoxCell(); cellId.Value = message.Id; //Text DataGridViewTextBoxCell cellText = new DataGridViewTextBoxCell(); cellText.Value = message.Text; //Character DataGridViewComboBoxCell cellCharacter = new DataGridViewComboBoxCell(); cellCharacter.DisplayMember = "Title"; cellCharacter.ValueMember = "Id"; cellCharacter.DataSource = _Characters; cellCharacter.Value = message.Character; //Duration DataGridViewComboBoxCell cellDuration = new DataGridViewComboBoxCell(); cellDuration.DisplayMember = "Title"; cellDuration.ValueMember = "Id"; cellDuration.DataSource = FormsTools.GetMessageDurationList(); cellDuration.Value = message.Duration; //FontSize DataGridViewComboBoxCell cellFontSize = new DataGridViewComboBoxCell(); cellFontSize.DisplayMember = "Title"; cellFontSize.ValueMember = "Id"; cellFontSize.DataSource = FormsTools.GetMessageFontSizeList(); cellFontSize.Value = message.FontSize; //Sound DataGridViewButtonCell cellSound = new DataGridViewButtonCell(); cellSound.Value = GlobalConstants.BUTTON_SOUND; row.Cells.Add(cellId); row.Cells.Add(cellText); row.Cells.Add(cellCharacter); row.Cells.Add(cellDuration); row.Cells.Add(cellFontSize); row.Cells.Add(cellSound); grdDialog.Rows.Add(row); }
/// <summary> /// Constructeur principal /// </summary> public AnimationsConditions() { InitializeComponent(); TriggerExecutionTypeCombo.SelectedValueChanged -= new EventHandler(EventManager_TriggerExecutionTypeChanged); //Binding des Descriptions d'Enumeration sur la ComboBox TriggerExecutionTypeCombo.DataSource = typeof(Enums.TriggerExecutionType).ToList(); TriggerExecutionTypeCombo.DisplayMember = "Value"; TriggerExecutionTypeCombo.ValueMember = "Key"; //Animation frequency ddpSpeed.DataSource = FormsTools.GetAnimationFrequencyList(); ddpSpeed.DisplayMember = "Title"; ddpSpeed.ValueMember = "Id"; }
/// <summary> /// Constructeur principal /// </summary> public StagePanel() { InitializeComponent(); _Service = new StageService(); HideEditEventsContextMenu(); DesactivateCopyPastContextMenu(); #region Creation des curseurs DrawingCursor = FormsTools.LoadCursor(Assembly.GetExecutingAssembly().GetManifestResourceStream("ReplicaStudio.Editor.Resources.StagePanel.drawing_pen.cur")); AddVectorCursor = FormsTools.LoadCursor(Assembly.GetExecutingAssembly().GetManifestResourceStream("ReplicaStudio.Editor.Resources.StagePanel.drawing_pen_add.cur")); RemoveVectorCursor = FormsTools.LoadCursor(Assembly.GetExecutingAssembly().GetManifestResourceStream("ReplicaStudio.Editor.Resources.StagePanel.drawing_pen_delete.cur")); #endregion this.LostFocus += new EventHandler(StagePanel_LostFocus); this.GotFocus += new EventHandler(StagePanel_GotFocus); }
/// <summary> /// Insère un character /// </summary> /// <returns>VO_Character</returns> public static VO_Character CreateCharacter() { //Création de l'objet int i = 1; string title = string.Empty; while (true) { if (GameCore.Instance.Game.Characters.Find(p => p.Title == string.Format(GlobalConstants.CHARACTERS_NEW_ITEM, i)) != null) { i++; continue; } else { title = string.Format(GlobalConstants.CHARACTERS_NEW_ITEM, i); break; } } VO_Character character = new VO_Character(Guid.NewGuid()) { Title = title, Speed = GlobalConstants.CHARACTERS_NORMAL_SPEED, DialogColor = FormsTools.GetVOColorFromGDIColor(Color.Black), Animations = new List <VO_Animation>() }; //Insertion de l'objet GameCore.Instance.Game.Characters.Add(character); //Animations VO_Animation standing = CreateCharAnimation(character.Id); standing.Title = GlobalConstants.CHARACTERS_STANDING; VO_Animation walking = CreateCharAnimation(character.Id); walking.Title = GlobalConstants.CHARACTERS_WALKING; VO_Animation talking = CreateCharAnimation(character.Id); talking.Title = GlobalConstants.CHARACTERS_TALKING; character.TalkingAnim = talking.Id; character.StandingAnim = standing.Id; character.WalkingAnim = walking.Id; return(character); }
/// <summary> /// Constructeur principal /// </summary> public GeneralSettings() { InitializeComponent(); ddpMessageDuration.Minimum = GlobalConstants.DIALOG_MIN_DURATION; ddpMessageDuration.Maximum = GlobalConstants.DIALOG_MAX_DURATION; ddpMessageFontSize.DataSource = FormsTools.GetMessageFontSizeList(); ddpMessageFontSize.DisplayMember = "Title"; ddpMessageFontSize.ValueMember = "Id"; ddpStagePadding.Minimum = 0; ddpStagePadding.Maximum = GlobalConstants.STAGE_PADDING_LIMIT; ddpVectorPointsSize.Minimum = 1; ddpVectorPointsSize.Maximum = 10; ddpAnimationDefaultFrequency.DataSource = FormsTools.GetAnimationFrequencyList(); ddpAnimationDefaultFrequency.DisplayMember = "Title"; ddpAnimationDefaultFrequency.ValueMember = "Id"; ddpTransparentBlockSize.Items.Add(8); ddpTransparentBlockSize.Items.Add(16); ddpTransparentBlockSize.Items.Add(32); }
/// <summary> /// Rafraichi l'animation /// </summary> /// <param name="pContainer">Containeur de l'animation</param> /// <param name="pCurrentSprite">Sprite courant</param> /// <returns>Surface</returns> public Image RefreshAnimation(Rectangle container, Rectangle currentSprite) { //Chargement background if (_BackgroundAnimPreview == null) { _BackgroundAnimPreview = new VO_BackgroundSerial(new Size(container.Width, container.Height), EditorSettings.Instance.TransparentBlockSize); ImageManager.CreateNewImageBackground(_BackgroundAnimPreview); } //Preview Image sprite = new Bitmap(currentSprite.Width, currentSprite.Height); Graphics graphicsSprite = Graphics.FromImage(sprite); graphicsSprite.DrawImage(ImageManager.GetImageResource(_ResourceOriginal), new Rectangle(new Point(0, 0), new Size(currentSprite.Width, currentSprite.Height)), new Rectangle(new Point(currentSprite.X, currentSprite.Y), new Size(currentSprite.Width, currentSprite.Height)), GraphicsUnit.Pixel); Image mainSurface = FormsTools.GetImageReducedAndCentered(sprite, ImageManager.GetImageBackground(_BackgroundAnimPreview), container, new Rectangle(new Point(0, 0), new Size(currentSprite.Width, currentSprite.Height)), false); graphicsSprite.Dispose(); sprite.Dispose(); return(mainSurface); }
/// <summary> /// Créer matrix walkable /// </summary> /// <param name="dimensions"></param> /// <param name="stage"></param> /// <param name="matrixPrecision"></param> private void CreateWalkableMatrix(System.Drawing.Size dimensions, VO_Stage stage, int matrixPrecision) { if (!Directory.Exists(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes))) { Directory.CreateDirectory(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes)); } StreamWriter sw = new StreamWriter(PathTools.GetProjectPath(Enums.ProjectPath.Matrixes) + stage.Id.ToString() + "_w"); byte[,] matrix = new byte[4096, 4096]; int height = dimensions.Height / matrixPrecision; int width = dimensions.Width / matrixPrecision; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { matrix[x, y] = 0; byte i = 1; foreach (VO_Layer layer in stage.ListLayers) { foreach (VO_StageHotSpot hotspot in layer.ListWalkableAreas) { if (FormsTools.PointInPolygon(new Point(x, y), ConvertPointsForMatrix(matrixPrecision, hotspot.Points))) { matrix[x, y] = i; break; } } i++; } sw.Write(GetValueFromByte(matrix[x, y])); } sw.Write("\r\n"); } sw.Close(); }
/// <summary> /// Rafraichi la ressource /// </summary> /// <param name="pContainer">Containeur de l'animation</param> /// <param name="pCurrentSprite">Sprite courant</param> /// <param name="pFull">False si la ressource est redimmensionnée, sinon true</param> /// <returns>Surface</returns> public Image RefreshRessource(Rectangle container, Rectangle currentSprite, bool full) { //Chargement background if (_BackgroundResource == null) { _BackgroundResource = new VO_BackgroundSerial(new Size(container.Width, container.Height), EditorSettings.Instance.TransparentBlockSize); ImageManager.CreateNewImageBackground(_BackgroundAnimPreview); } //Ressource Image resourceInSurfaceControl; Image resource = (Image)ImageManager.GetImageResource(_ResourceOriginal).Clone(); Graphics resourceGraphics = Graphics.FromImage(resource); Image highlighted = new Bitmap(currentSprite.Width, currentSprite.Height); Graphics highlightGraphics = Graphics.FromImage(highlighted); highlightGraphics.FillRectangle(EditorSettings.Instance.HighlightningBrush, new Rectangle(new Point(0, 0), new Size(highlighted.Width, highlighted.Height))); resourceGraphics.DrawImage(highlighted, new Rectangle(currentSprite.Location, new Size(resource.Width, resource.Height)), 0, 0, resource.Width, resource.Height, GraphicsUnit.Pixel, _ImageTransparency); if (!full) { resourceInSurfaceControl = FormsTools.GetImageReducedAndCentered(resource, ImageManager.GetImageBackground(_BackgroundResource), container, new Rectangle(new Point(0, 0), ImageManager.GetImageResource(_ResourceOriginal).Size), full); } else { resourceInSurfaceControl = FormsTools.GetImageReducedAndCentered(resource, ImageManager.GetImageBackground(_BackgroundResource), container, container, full); } resource.Dispose(); resourceGraphics.Dispose(); highlighted.Dispose(); highlightGraphics.Dispose(); return(resourceInSurfaceControl); }
/// <summary> /// Bouton qui affiche la ColorDialog pour le choix de couleur de dialogue. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnChoose_Click(object sender, EventArgs e) { ColorDialog.ShowDialog(); CurrentCharacter.DialogColor = FormsTools.GetVOColorFromGDIColor(ColorDialog.Color); }
/// <summary> /// Charge les contrôles /// </summary> public void LoadControls(VO_Page currentPage, Guid characterId) { if (currentPage.PageEventType == Enums.EventType.Character) { _CharacterId = characterId; //Désactivation des events ddpDirection.SelectedValueChanged -= new EventHandler(ddpDirection_SelectedValueChanged); ddpSpeed.SelectedValueChanged -= new EventHandler(ddpSpeed_SelectedValueChanged); ddpFrequency.SelectedValueChanged -= new EventHandler(ddpFrequency_SelectedValueChanged); ddpStandingType.SelectedValueChanged -= new EventHandler(ddpStandingType_SelectedValueChanged); ddpWalkingType.SelectedValueChanged -= new EventHandler(ddpWalkingType_SelectedValueChanged); ddpTalkingType.SelectedValueChanged -= new EventHandler(ddpTalkingType_SelectedValueChanged); List <VO_ListItem> list = FormsTools.GetMovementsList(); ddpDirection.DataSource = list; ddpDirection.DisplayMember = "Title"; ddpDirection.ValueMember = "Id"; ddpDirection.SelectedValue = (int)currentPage.CharacterDirection; ddpSpeed.SelectedValue = currentPage.CharacterSpeed; ddpFrequency.SelectedValue = currentPage.CharacterAnimationFrequency; ddpStandingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpStandingType.DisplayMember = "Title"; ddpStandingType.ValueMember = "Id"; if (currentPage.CharacterStandingType == Guid.Empty) { ddpStandingType.SelectedIndex = 0; } else { ddpStandingType.SelectedValue = currentPage.CharacterStandingType; } ddpWalkingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpWalkingType.DisplayMember = "Title"; ddpWalkingType.ValueMember = "Id"; if (currentPage.CharacterWalkingType == Guid.Empty) { ddpWalkingType.SelectedIndex = 0; } else { ddpWalkingType.SelectedValue = currentPage.CharacterWalkingType; } ddpTalkingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpTalkingType.DisplayMember = "Title"; ddpTalkingType.ValueMember = "Id"; if (currentPage.CharacterTalkingType == Guid.Empty) { ddpTalkingType.SelectedIndex = 0; } else { ddpTalkingType.SelectedValue = currentPage.CharacterTalkingType; } LoadAnimation(); //Réactivation des events ddpDirection.SelectedValueChanged += new EventHandler(ddpDirection_SelectedValueChanged); ddpSpeed.SelectedValueChanged += new EventHandler(ddpSpeed_SelectedValueChanged); ddpFrequency.SelectedValueChanged += new EventHandler(ddpFrequency_SelectedValueChanged); ddpStandingType.SelectedValueChanged += new EventHandler(ddpStandingType_SelectedValueChanged); ddpWalkingType.SelectedValueChanged += new EventHandler(ddpWalkingType_SelectedValueChanged); ddpTalkingType.SelectedValueChanged += new EventHandler(ddpTalkingType_SelectedValueChanged); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (IsAdd == true) { CurrentCharacterId = Guid.Empty; } ddpMovements.SelectedIndexChanged += new EventHandler(ddpMovements_SelectedIndexChanged); //Character List VO_Stage CurrentStage = GameCore.Instance.GetStageById(EditorHelper.Instance.CurrentStage); cmbCharacterSelection.Items.Clear(); cmbCharacterSelection.DisplayMember = "Title"; cmbCharacterSelection.ValueMember = "Id"; cmbCharacterSelection.Enabled = true; foreach (VO_StageCharacter item in CurrentStage.ListCharacters) { cmbCharacterSelection.Items.Add(item); cmbCharacterSelection.SelectedItem = item; } if (cmbCharacterSelection.Items.Count <= 0) { cmbCharacterSelection.Enabled = false; return; } if (IsAdd == false) { foreach (VO_StageCharacter CurrentCharacter in CurrentStage.ListCharacters) { if (CurrentCharacter.Id == CurrentCharacterId) { cmbCharacterSelection.SelectedItem = CurrentCharacter; } } } // Movement List List <VO_ListItem> list = FormsTools.GetMovementsList(); ddpMovements.Items.Clear(); ddpMovements.DisplayMember = "Title"; ddpMovements.ValueMember = "Id"; int i = 0; foreach (VO_ListItem item in list) { ddpMovements.Items.Add(item); if (item.Id == (int)Direction) { ddpMovements.SelectedItem = item; } i++; } ddpMovements.SelectedIndexChanged += new EventHandler(ddpMovements_SelectedIndexChanged); }