コード例 #1
0
        public static bool OpenPackage(AMTPackage Package, string FileName)
        {
            AMTPackage ClonedPackage;

            try
            {
                ClonedPackage = (AMTPackage)JsonConvert.DeserializeObject <AMTPackage>(File.ReadAllText(FileName)).Clone();
            }
            catch
            {
                return(false);
            }
            if (!ClonedPackage.Animation.Manifest.Version.Equals(AMTConfig.Version))
            {
                MessageBox.Show("AMT file version does not match!", "Error!",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
            //Setting Variables
            Package.Animation    = ClonedPackage.Animation;
            Package.Resources    = ClonedPackage.Resources;
            Package.Name         = ClonedPackage.Name;
            Package.WorkingDir   = Path.GetDirectoryName(FileName);
            Package.PackageState = AMTUtil.State.READY;
            foreach (KeyValuePair <string, string> s in Package.Resources)
            {
                if (!File.Exists(AMTUtil.GetAbsPath(Package.WorkingDir, s + AMTConfig.ResourceExtension)))
                {
                    MessageBox.Show("Resource [" + s.Value + "] is not found!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
            }
            return(true);
        }
コード例 #2
0
        public MainWindow()
        {
            InitializeComponent();
            Package = new AMTPackage();
            bool result = AMTUtil.OpenPackage(Package, AMTUtil.GetAbsPath(Directory.GetCurrentDirectory(), "AMT.apkg"));

            if (result)
            {
                //Set current action
                Default        = new AMTActionPlayer(Package.Animation, AMTUtil.GetDefaultAction(Package.Animation));
                CurrentAction  = Default;
                Timer          = new DispatcherTimer();
                Timer.Interval = TimeSpan.FromMilliseconds(10);
                Timer.Tick    += Timer_Tick;
                Timer.Start();
                this.MouseDoubleClick += MainWindow_MouseDoubleClick;
                MEAudio.Play();
            }
            else
            {
                this.Close();
                System.Environment.Exit(0);
            }
            this.MouseDown += Window_MouseDown;
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: r1cebank/AmiMat
        private void btnOpenExisting_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenFileDialog = new OpenFileDialog();

            OpenFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            OpenFileDialog.Filter           = AMTConfig.PackageExtension + " files (*" +
                                              AMTConfig.PackageExtension + ")|*" + AMTConfig.PackageExtension;
            OpenFileDialog.FilterIndex      = 2;
            OpenFileDialog.RestoreDirectory = true;
            if (OpenFileDialog.ShowDialog() == DialogResult.OK)
            {
                //Clear UI Before this and Data
                Package.PackageState = AMTUtil.State.LOADED;
                ClearElements();
                InitData();
                //File Loading
                if (!AMTUtil.OpenPackage(Package, OpenFileDialog.FileName))
                {
                    MessageBox.Show("Project Load Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Package = new AMTPackage();
                    Package.PackageState = AMTUtil.State.EMPTY;
                }
                else
                {
                    PopulateResources();
                    lbAssets.SelectedIndex = 0;
                    PopulateAssetFrames();
                    lbGifFrames.SelectedIndex = 0;
                    PopulateUI();
                }
            }
        }
コード例 #4
0
 public AMTActionPlayer(AMTPackage Pak, AMTAction Act)
 {
     this.Package         = Pak;
     this.Action          = AMTUtil.ExpandFrame(Pak.Animation, Act);
     this.CurrentFrame    = 0;
     this.LoopTimes       = 0;
     this.RandomGenerator = new Random();
 }
コード例 #5
0
ファイル: ActionPreview.cs プロジェクト: r1cebank/AmiMat
 public ActionPreview(AMTPackage Package, AMTAction Action)
 {
     InitializeComponent();
     PreviewPackage       = Package;
     PreviewAction        = Action;
     ExpandedActionPlayer = new AMTActionPlayer(Package, Action);
     this.Text            = this.Text + " " + Action.Name;
     PlayTimer.Enabled    = true;
 }
コード例 #6
0
        public static AMTResource GetResourceFromName(AMTPackage Package, string ResourceName)
        {
            string AbsResourceName = AMTUtil.GetAbsPath(Package.WorkingDir, ResourceName + AMTConfig.ResourceExtension);

            if (Package.Resources.Exists(delegate(KeyValuePair <string, string> match)
            {
                return(match.Value == ResourceName);
            }))
            {
                return((AMTResource)JsonConvert.DeserializeObject <AMTResource>(File.ReadAllText(AbsResourceName)));
            }
            else
            {
                return(null);
            }
        }
コード例 #7
0
 /// <summary>
 /// Load Current Selected Asset into Memory
 /// </summary>
 /// <param name="AssetName">path of the asset</param>
 /// <returns>loaded asset list</returns>
 public static void LoadAsset(AMTPackage Package, string AssetName)
 {
     Package.CurrentResource.Frames.Clear();
     try
     {
         //Try extracting the frames
         Package.CurrentResource.Frames = EnumerateFrames(AssetName);
         if (Package.CurrentResource.Frames == null || Package.CurrentResource.Frames.Count() == 0)
         {
             throw new NoNullAllowedException("Unable to obtain frames from " + AssetName);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(
             "Error type: " + ex.GetType().ToString() + "\n" +
             "Message: " + ex.Message,
             "Error in " + MethodBase.GetCurrentMethod().Name
             );
     }
 }
コード例 #8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="Package"></param>
 /// <param name="Frames"></param>
 /// <param name="DefaultDelay"></param>
 public static void InitAnimation(AMTPackage Package, string ResourceName, int DefaultDelay = 100)
 {
     Package.PackageState = State.LOADED;
     Package.Animation    = new AMTAnimation();
     Package.Animation.Manifest.ActionFileName.Add(AMTConfig.DefaultAction);
     Package.Animation.Manifest.DefaultAction = AMTConfig.DefaultAction;
     Package.Animation.Actions.Add(new AMTAction());
     Package.Animation.Actions[0].Name = AMTConfig.DefaultAction;
     Package.Animation.Actions[0].Frames.Add(new AMTFrame());
     Package.Animation.Actions[0].Frames[0].Resource = ResourceName;
     Package.Animation.Actions[0].Frames[0].Delay    = DefaultDelay;
     Package.Animation.Actions[0].Frames[0].FrameRef = 0;
     Package.Animation.Actions[0].Frames[0].Tags.Add("null");
     if (Package.CurrentResource.Name != ResourceName)
     {
         Package.SwitchResource(ResourceName);
     }
     Package.Animation.Actions[0].Frames[0].MD5 = ImageMD5(BytesToImage(Package.CurrentResource.Frames[0]));
     Package.SavePackage();
     Package.PackageState = State.READY;
 }
コード例 #9
0
ファイル: Form1.cs プロジェクト: r1cebank/AmiMat
 private void InitData()
 {
     Package            = new AMTPackage();
     tAutoSave.Interval = 1000 * 60 * 2; //2min autosave cycle
 }