コード例 #1
0
    private void revealWaypointsAfterCamp(int campIndex, OverlandTileModel tileModel)
    {
        bool foundNext    = false;
        int  nextWaypoint = tileModel.waypoints.Count - 1;

        for (int dex = campIndex + 1; dex < tileModel.waypoints.Count; dex++)
        {
            // and stop at the next waypoint

            if (!foundNext)
            {
                OverlandWaypointModel wap = (OverlandWaypointModel)tileModel.waypoints[dex];

                if (wap.waypointType == ewaypointType.waypointCamp)
                {
                    nextWaypoint = dex;
                    foundNext    = true;
                }
            }
        }

        Debug.Log(string.Format("checking dex{0} next{1}", campIndex, nextWaypoint));

        for (int dex = campIndex; dex <= nextWaypoint; dex++)
        {
            OverlandWaypointModel wap = (OverlandWaypointModel)tileModel.waypoints[dex];

            wap.beyondNextCamp = false;
        }
    }
コード例 #2
0
    private void makeProgress(CrewModel theCrew, OverlandTileModel tileModel, ArrayList dice)
    {
        if (theCrew.halted == false)
        {
            theCrew.progress++;
        }

        Debug.Log("Make progress");
    }
コード例 #3
0
    private void backtrack(CrewModel theCrew, OverlandTileModel tileModel)
    {
        // reduce progress made and increases time (time increase is baked into the rule above)
        theCrew.progress--;
        if (theCrew.progress < 0)
        {
            theCrew.progress = 0;
        }

        Debug.Log("Lose progress");
    }
コード例 #4
0
    //
    public void processSeries(CrewModel theCrew, ArrayList dice, OverlandTileModel tileModel)
    {
        foreach (DieView die in dice)
        {
            // get an array of effects on the current side
            ArrayList results = die.model.iconsOnCurrentSide();
            foreach (edieIcon icon in results)
            {
                processAction(theCrew, icon, tileModel, dice);
            }
        }

        int finalIndex = 0;
        int startIndex = tileModel.currentNode;

        bool movementHalted = false;



        // process progress total
        if (theCrew.progress > 0)
        {
            for (int index = 0; index <= theCrew.progress; index++)
            {
                if (!movementHalted)
                {
                    OverlandWaypointModel wap = (OverlandWaypointModel)tileModel.waypoints[index + tileModel.currentNode];

                    //OverlandWaypointModel startNode = (OverlandWaypointModel)tileModel.waypoints[startIndex];
                    // verify we have the prerequisite for the next

                    // if we LAND on a camp, we're done.
                    if (wap.waypointType == ewaypointType.waypointCamp && index + tileModel.currentNode != startIndex)
                    {
                        movementHalted = true;
                        // display further waypoints
                        revealWaypointsAfterCamp(index + tileModel.currentNode, tileModel);
                    }

                    // if we LAND on an encounter, we're done.
                    if (wap.waypointType == ewaypointType.waypointEncounter && index + tileModel.currentNode != startIndex)
                    {
                        movementHalted = true;
                    }

                    // if we LAND on an icon that we don't have in hand, we're done
                    if (wap.waypointType == ewaypointType.waypointOptionalEncounter && index + tileModel.currentNode != startIndex)
                    {
                        //movementHalted = true;
                    }

                    // icon waypoint
                    if (wap.waypointType == ewaypointType.waypointIcon && index + tileModel.currentNode != startIndex && wap.iconRequirement != ewaypointType.waypointBoots)
                    {
                        // check to see if we have one
                        if (!hasRequiredIcon(dice, wap.iconRequirement))
                        {
                            movementHalted = true;
                        }
                    }

                    // if we LAND on the final, we're done


                    finalIndex = index + tileModel.currentNode;

                    // check the previous waypoint
                    if (index + tileModel.currentNode - 1 >= 0)
                    {
                        OverlandWaypointModel bak = (OverlandWaypointModel)tileModel.waypoints[index + tileModel.currentNode - 1];
                        bak.passed = true;
                    }
                    wap.reached = true;
                }
            }
        }

        tileModel.currentNode = finalIndex;
        // reset crew progress
        theCrew.progress = 0;
    }
コード例 #5
0
    public void processAction(CrewModel theCrew, edieIcon theIcon, OverlandTileModel tileModel, ArrayList dice)
    {
        ArrayList currentEffects;

        // we pass in DICE because we may need to know what is on other faces later (like blades, etc)


        if (dieIconEffects.ContainsKey((int)theIcon))
        {
            currentEffects = dieIconEffects[(int)theIcon];
            foreach (string effect in currentEffects)
            {
                enforceTimeCosts(theCrew, effect);

                switch (effect)
                {
                case "none":
                    break;

                case "increaseFitness":
                    increaseFitness(theCrew);
                    break;

                case "bonus":
                    break;

                case "progress":
                    makeProgress(theCrew, tileModel, dice);
                    break;

                case "decreaseFatigue":
                    decreaseFatigue(theCrew);
                    break;

                case "disaster":
                    disaster(theCrew);
                    break;

                case "decreaseFitness":
                    decreaseFitness(theCrew);
                    break;

                case "consumeProvisions":
                    consumeProvisions(theCrew);
                    break;

                case "halt":
                    halt(theCrew);
                    break;

                case "backtrack":
                    backtrack(theCrew, tileModel);
                    break;

                case "timePasses":
                    timePasses(theCrew);
                    break;

                case "increaseFatigue":
                    increaseFatigue(theCrew);
                    break;

                default:
                    Debug.Log("fall through.");
                    break;
                }
            }
        }
    }