Beispiel #1
0
 public ActorModel(
     Vector2Int startPosition,
     ActorStates states,
     IActorStatuses statuses,
     LevelState levelState)
 {
     StartPosition = startPosition;
     Position      = startPosition;
     States        = states;
     Statuses      = statuses;
     LevelState    = levelState;
 }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     _actorStates        = GetComponentInParent <ActorStates>();
     _moveController     = GetComponentInParent <CharacterMovementController>();
     inputManager        = GameObject.FindObjectOfType <InputManager>();
     cam                 = GetComponent <Camera>();
     rotAroundX          = transform.eulerAngles.x;
     rotAroundY          = transform.eulerAngles.y;
     rotAroundZ          = 0;
     _startLocalPosition = transform.localPosition;
     _currentPosition    = transform.position;
     StartCoroutine(StartDelay());
 }
Beispiel #3
0
        public ActorDefinition(UpperString name, Optional <ActorDefinition> parent, int?editorNumber = null)
        {
            Name         = name;
            Parent       = parent;
            EditorNumber = editorNumber;
            States       = new ActorStates(this);

            if (parent)
            {
                Flags      = new ActorFlags(parent.Value.Flags);
                Properties = new ActorProperties(parent.Value.Properties);
                States     = new ActorStates(this, parent.Value.States, parent.Value.Name);
                ActorType  = new ActorTypes(parent.Value.ActorType);
            }
        }
Beispiel #4
0
        private void SetupInitialOffset()
        {
            ActorStates states = entity.Definition.States;

            int?spawnOffset = states.Labels[SpawnLabel];

            if (spawnOffset == null)
            {
                Log.Error("Unable to find spawn state for actor: ", entity.Definition.Name);
            }
            else
            {
                offset = spawnOffset.Value;
            }

            Frame = states.Frames[offset];
        }
Beispiel #5
0
        public static float ExtraCooldown()
        {
            ActorStates hstate = HeroController.instance.hero_state;

            switch (hstate)
            {
            case ActorStates.airborne:
                return(1f);

            case ActorStates.running:
                return(0.50f);

            case ActorStates.wall_sliding:
                return(1);

            default:
                return(0);
            }
        }
Beispiel #6
0
 [MonoModIgnore] private extern void SetState(ActorStates newState);
Beispiel #7
0
        protected new void InitObject()
        {
            base.InitObject();

            Data = baseObject.Appearance;

            if (Data != null && Data.vertices != null)//&& Data.currentRect != null&& Data.currentPivot != null
            {
                SelectedState = ((BuildingAppearance)baseObject.appearance).currentShapeTypeId;
                //  SelectedState = ActorStates.STATE_BLOWING_UP1;

                if (SelectedState == null)
                {
                    Debug.Log("No State", this);
                    return;
                }

                var states = ((BuildingAppearance)baseObject.appearance).AppearStates;

                if (states == null || states.Count == 0)
                {
                    Debug.Log("No List States " + baseObject.appearance.GetType().ToString(), this);
                    return;
                }

                ActualState = states.Where(x => x.state == SelectedState).First();

                if (ActualState.numFrames != (Data.uvs.Length / 4))
                {
                    Debug.LogError("Error no match Numframes vs numberofUVs " + ActualState.numFrames + ">" + (Data.uvs.Length / 4), this);
                }

                this.floorGo.SetActive((ActualState.delta == 1));

                isSetup = true;

                fps = ActualStateFramerate;

                Shader   shader   = Shader.Find("MechCommanderUnity/PaletteSwapLookup");
                Material material = new Material(shader);
                material.SetTexture("_PaletteTex", PalTexture);

                material.mainTexture = Data.currentTexture;



                meshRenderer.sortingLayerName = "Objs";
                meshRenderer.sortingOrder     = baseSortingIndex + 1;
                meshRenderer.sharedMaterial   = material;

                floorMeshRenderer.sortingLayerName = "Objs";
                floorMeshRenderer.sortingOrder     = baseSortingIndex;
                floorMeshRenderer.sharedMaterial   = material;

                // Create mesh
                Mesh mesh = new Mesh();
                mesh.name = "sprite";

                // Indices
                int[] triangles = new int[6]
                {
                    0, 1, 2,
                    3, 2, 1,
                };

                // Normals
                Vector3   normal  = Vector3.Normalize(Vector3.up + Vector3.forward);
                Vector3[] normals = new Vector3[4];
                normals[0] = normal;
                normals[1] = normal;
                normals[2] = normal;
                normals[3] = normal;


                mesh.vertices  = Data.vertices.Take(4).ToArray();
                mesh.triangles = triangles;
                mesh.normals   = normals;

                mesh.uv = Data.uvs.Take(4).ToArray();
                // Assign mesh
                meshFilter.sharedMesh = mesh;

                isPlaying    = Data.isAnim && Data.numFrames > 1;
                restartAnims = (Data.isAnim && Data.numFrames > 1);

                if (ActualState.delta == 1 && Data.uvsFloor != null && Data.uvsFloor.Length > 3)
                {
                    // Create mesh
                    Mesh floorMesh = new Mesh();
                    floorMesh.name = "spriteFloor";

                    floorMesh.vertices  = Data.vertices.Take(4).ToArray();
                    floorMesh.triangles = triangles;
                    floorMesh.normals   = normals;

                    floorMesh.uv = Data.uvsFloor.Take(4).ToArray();
                    // Assign mesh
                    floorMeshFilter.sharedMesh = floorMesh;
                }
            }
            else
            {
//                MechCommanderUnity.LogMessage("Something null");
            }
        }
 void Start()
 {
     _actorStates = GetComponentInParent <ActorStates>();
     inputManager = GameObject.FindObjectOfType <InputManager>();
     Equip(0, true);
 }
 private extern void SetState(ActorStates newState);
Beispiel #10
0
	void UpdateRecovery(float deltaTime)
	{
		if(currentActionParams.recoveryTime > 0)
		{
			currentActionParams.recoveryTime -= deltaTime;
		}
		else
		{
			RemoveLettersFromScreen();
			currentState = ActorStates.IDLE;
		}
	}
Beispiel #11
0
	void InitDefense(Elements element)
	{
		LowerPreviousShield();
		currentState = ActorStates.SHOWING;
		currentActionParams.connectTime = Game.defenseParamsByType[element].connectTime;
		currentActionParams.element = element;
		attackOrDefenseAction = DefenseAction;
	}
Beispiel #12
0
	void InitAttack(Elements element)
	{
		currentState = ActorStates.SHOWING;
		attackOrDefenseAction = AttackAction;
		currentAttackType = element;
		currentActionParams.connectTime = Game.attackParamsByType[currentAttackType].connectTime;
	}
Beispiel #13
0
	void UpdateShowing(float deltaTime)
	{
		currentActionParams.connectTime -= deltaTime;
		if(currentActionParams.connectTime <= 0)
		{
			currentActionParams.connectTime = 0;
			currentState = ActorStates.ATTACKING;
			attackOrDefenseAction();
		}
	}
Beispiel #14
0
	void UpdateAttacking(float deltaTime)
	{
		UpdateProjectile(deltaTime);
		currentActionParams.animationTime -= deltaTime;
		if(currentActionParams.animationTime <= 0)
		{
			currentActionParams.animationTime = 0;
			currentState = ActorStates.RECOVERY;
			spriteRenderer.sprite = idle;
		}
	}